Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

rcombs

Members
  • Joined

  • Last visited

Everything posted by rcombs

  1. XFS, Btrfs, and ZFS both offer checksumming (for metadata only on XFS; also for file contents on Btrfs and ZFS), but currently Unraid doesn't provide a way to actually recover from a detected checksum error. In theory, it could do better at this: when a checksum error occurs on an array drive, the affected block could be reconstructed from parity and re-written automatically. The parity-check could also do better than it does currently (to my understanding): if a parity error is detected, Unraid could decide which drive's data is incorrect by considering whether the corresponding disk block's checksum is correct on each data drive. Currently, as far as I'm aware, parity-check always trusts the data drives and rewrites parity on errors. This would require some tighter integration between the array and the filesystem, but I think the benefits would be worthwhile. If this was implemented, we'd be able to get one of the critical benefits of a ZFS pool (automatic protection against data errors) while still maintaining the flexibility of the Unraid array (easy gradual expansion, mixed drive sizes, etc).
  2. Sure, but that's individual drives in an unRAID array, not a RAIDZ setup. It's a reasonable choice for some people, certainly, but it doesn't give the benefits of RAIDZ (self-healing, striping performance, etc). I want to have my cake and eat it too.
  3. This is less of a feature request and more of a "what are the odds that this ever happens", but here goes: I'm sure plenty of unRAID users love the ability to upgrade drive slots piecemeal, and run an array with multiple different drive sizes. Is there any chance of that being supported in ZFS at some point? If not, could unRAID work around that with a solution like in this example: Say you have a 4TB, a 6TB, an 8TB, a 12TB, and 3 16TB drives, and you want 2-drive parity So you create a 4TB partition on each drive, then a 2TB drive on the 6TB-and-up ones, another 2TB on the 8+s, a 4TB on the 12+s, and another 4TB on each of the 16s You combine each set of partitions into a raidz2 vdev (of which you have 5 total, one for each partition on the largest drives), all within a single zpool I've seen this approach discussed in a few places before, and a lot of people seem to reflexively reject it, but I'm not entirely sure why? There'd certainly be a lot of complexity in the management/UI tooling for this, but I don't think any of the problems are unsurmountable. In theory, it could allow for all the benefits of ZFS while still retaining the upgrade-friendliness of classic unRAID.
  4. I wrote a very basic test program to verify this: #include <stdint.h> #include <unistd.h> #include <fcntl.h> int main() { uint32_t val = 0; int fd0 = open("test1", O_RDWR | O_CREAT); write(fd0, &val, sizeof(val)); close(fd0); while (val < 100000) { uint32_t val2 = 0; int fd1 = open("test1", O_RDWR | O_CREAT); int fd2 = open("test2", O_RDWR | O_CREAT); read(fd1, &val2, sizeof(val2)); close(fd1); val++; val2++; fd1 = open("test1", O_RDWR | O_CREAT); write(fd1, &val2, sizeof(val2)); write(fd2, &val, sizeof(val)); close(fd1); close(fd2); } return 0; } On a normal disk, the resulting "test1" and "test2" files will always contain identical 4-byte integers (100000). We can see this with a hex dump: $ cat test1 test2 | hexdump -C 00000000 a0 86 01 00 a0 86 01 00 |........| However, if the move program is run on test1 while the program runs, we can desynchronize: $ echo /mnt/cache/[path]/test1 | move -d 2 $ cat test1 test2 | hexdump -C 00000000 9f 86 01 00 a0 86 01 00 |........| Note that the two files now differ by 1. Losing writes can result in a lot of unexpected behaviors; I think it might be responsible for corruption I've seen in files downloaded by Transmission, as well as in sqlite databases (I saw corruption in my Plex Media Server database last night that appears consistent with lost writes, and happened about the same time as I ran the mover script). I'm not sure what the best solution for this problem is, as I'm not familiar with the internals of the mover program or the shfs ioctl it uses. One route could be to do the copy to a tmp file on the destination drive, then while holding an internal lock on the file as exposed by fuse, verify that it hasn't changed since the copy started, and only then take the place of the source. Alternately, while a file is being moved, shfs could expose it to userspace such that reads come from the source file, but writes go to both the source and the destination.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.