Skip to content(if available)orjump to list(if available)

NonRAID – fork of unRAID array kernel module

miffe

What makes this different from regular md? I'm not familiar with unRAID.

wongarsu

md takes multiple partitions to make a virtual device you can put a file system on, with striping and traditional RAID levels

unRaid takes multiple partitions, dedicates one or two of them to parity, and hands the other partitions through. You can handle those normally, putting different file systems on different partitions in the same array and treating them as completely separate file systems that happen to be protected by the same parity drives

This enables you to easily mix drives of different sizes (as long as the parity drives are at least as large as the largest data partition), add, remove or upgrade drives with relative ease, and means that every read operation only goes to one drive, and writes to that drive plus the parity drives. Depending on how you organize your files you can have drives that are basically never on, while in an md array every drive is used for basically every read or write.

The disadvantages are that you lose out on the performance advantages of a RAID, and that the raid only really protects against losing entire disks. You can't easily repair single blocks the way a zfs RAID could. Also you have a number of file systems you have to balance (which unRaid helps you with, but I don't know how much of that is in this module)

phoronixrly

Not sure what you mean by 'easily repair single blocks the way a zfs RAID could', but often the physical devices handle bad blocks, and md has one safety layer on top of this - bad blocks tracking. No relocation in md though, AFAIK.

wongarsu

What I mean is that unraid, zfs and md all allow you to run a scrub over your raid to check for bit rot. That might happen for all kinds of issues, including cosmic rays just flipping bits on the drive platter. The issue is that unraid and md can't do much if they detect a block/stripe where the parity doesn't match the data (because it doesn't know which of the drives suffered a bit flip). Zfs on the other hand can repair the data in that scenario because it keeps checksums.

Now a fairly common scenario is to use unRaid with zfs as the file system for each partition, having Y independent zfs file systems. In that case in theory the information to repair blocks exists: a zfs scrub will tell you which blocks are bad, and you could repair those from parity. And a unraid parity check will do the same for the parity drives. But there is no system to repair single blocks. You either have to dig in and do it yourself or just resilver the whole disk

hammyhavoc

If you have a redundant dataset (#1 reason to use ZFS replication) then you can repair a ZFS dataset.

eddythompson80

unRAID is geared towards homelab style deployments. Its main advantages over typical RAID is it's flexibility (https://www.snapraid.it/compare):

- It lets you throw JBODs (of ANY size) and you can create a "RAID" over them.

- The biggest drive must be a parity drive(s).

- N parity = surviving N drive failures.

- You can expand your storage pool 1 drive at a time. You need to recalculate parity for the full array.

The actual data is spread across drives. If a drive fails, you rebuild it from the parity. This is another implementation (using MergerFS + SnapRAID) https://perfectmediaserver.com/02-tech-stack/snapraid/

It's a very simple model to think of compared to something like ZFS. You can add/remove capacity AND protection as you go.

Its perf is significantly less than ZFS of course.

benjiro

Ignoring its biggest advantage vs mdraid, or zfs raid:

The ability to sleep all / individual HDDs:

* only keep awake the drives that your actually read data from * only keep awake the drive that your write data too + n parity drives

For home users, that is a TON of energy saving. And no, your "poor" HDDs are not going to suffer from spinning up a few times per day.

You can spin up/down a HDD 10x per day, for 100 years before you come even close to the manufactures (lowest) hdd limits. Let alone if you have 4+ drives and have a bit of data spreading, or combined with unraids nvme/ssd caching layer.

So unlike mdraid or zfs where its a all or nothing situation, unraid / snapraid gives you a ton of energy saving.

And i understand the US folks here do not care when they pay maybe 6 to 12 cent / kwh, but the rest of the world has electricity prices in the 30 to 50 cent / kwh, and it stacks up very fast when you are using < 1watt vs 5/7Watt per HDD/24/7...

theshrike79

This is the biggie for me, not for electricity but for noise.

My /archive share is two big-ass SAS drives that were cheap. They are also LOUD.

But since I don't poke around the archive much, they sleep most of the time.

bane

I have an unRAID homelab. It's kind of really awesome in the sense that it lets the home user incrementally add compute and capacity over time without having to do it all in one big shebang and doesn't require nearly the fussing over of my prior linux server.

I started mine with a spare NUC and some portable USB drives and its grown into a beast with over 100TB spread across a high performance SSD backed ZFS pool and an unRAID array, 24 cores, running about 20 containers and a few VMs without breaking a sweat and so far (knock on wood) zero data loss.

All at a couple hundred dollars every so often over the years.

One performance trick it supports is also letting you overlay fast SSD storage over the array, which is periodically moved onto the slower underlying disk. It's transparent, so when you write to the array you can easily get several hundred MB/sec which will automatically get moved onto warm storage periodically. I have two fast SSDs RAIDed there and easily saturate the network link when writing.

The server basically maintains itself, I only go in every so often and bump the docker containers at this point. But I also know that I can add another disk to it in a about 10 minutes and a couple hundred bucks.

TMWNN

> The server basically maintains itself, I only go in every so often and bump the docker containers at this point. But I also know that I can add another disk to it in a about 10 minutes and a couple hundred bucks.

Yes. UnRAID rightfully gets a lot of attention for its flexibility in upgrading with disks of any size (which feels like magic), but for me its current >100-day uptime while maintaining a UnRAID array, three VMs, and a few other services is just as important. The only maintenance I do is occasionally look at notifications, and every month (if that often) upgrade plugins/Docker containers with new versions.

somat

Those are the features I liked about ceph, with the benefit that it uses the network to scale.

xcrunner529

I currently use and love snap raid. I assume the reason for this project was for real time? That seems to be the only thing unraid improves on?

eddythompson80

I think that's mainly it. It does give you some peace of mind that you are never in an "unprotected until next snapshot" state. But if you don't care, then there isn't much else that I noticed.

hammyhavoc

> If a drive fails, you rebuild it from the parity.

But if the file system is corrupt then you're hosed and end up with a `lost+found`. It sounds great until it fails, and then you realize why ZFS with replication makes sense. Unraid doesn't do automatic repairs from replicated ZFS datasets yet either even if you use individual ZFS disks within your Unraid array.

Whatarethese

Hence why this is for home users that store media. ZFS is for the enterprise where you have people to babysit storage solutions.

phoronixrly

I have an issue with this though... Won't you get a write on the parity drive for each write on any other drive? Doesn't seem well balanced... to be frank, looks like a good way to shoot yourself in the foot. Have a parity drive fail, then have another drive fail during the rebuild (a taxing process) and congrats -- your data is now eaten, but at least you saved a few hundred dollars by not buying drives of equal size...

eddythompson80

> Have a parity drive fail, then have another drive fail during the rebuild (a taxing process) and congrats -- your data is now eaten

That's just your drive failure tolerance. It's the same risk/capacity trade as RAIDZ1, but with less performance and more flexibility on expanding. Which is exactly what I said.

If 1 drive failure isn't acceptable for you, you wouldn't use RAIDZ1 and wouldn't use 1 parity drive.

You can use 2 parity drives for RAIDZ2-like protection.

You can use 3 drives for RAIDZ3-like protection.

You can use 4 drives, 10 drives. Add and remove as many parity/capacity as you want. Can't do that with RAID/RAIDZ easily.

You manage your own risk/reward ratio

wongarsu

You want your drives to fail at different times! Which means you want your load to be unbalanced, from a reliability standpoint. If you put the same load on every drive (like in a traditional RAID5/6) then the drives are likely to fail at around the same time. Especially if you don't go out of your way to get drives from different manufacturing batches. But if you misbalance the amount of work the drives get they accumulate wear and tear at different rates and spend different amounts of time in idle, leading them to fail at wildly different times, giving you ample time to rebuild the raid.

I'd still recommend anyone to have two parity drives (which unraid does support)

nodja

The wear on the parity drive is the same regardless of raid technology you choose, unraid just lets you have mismatched data drives. In fact you could argue that unraid is healthier for the drives since a write doesn't trigger a write on all drives, just 2. The situation you described is true for any raid system.

dawnerd

Depends. If you use a cache like they recommend you’d only get parity writes when it runs its mover command. Definitely adds a lot of wear but so far i haven’t had any parity issues with two parity drives protecting 28 drives.

hammyhavoc

No, because you have a cache pool and calculate the parity changes on a schedule, or when specific conditions are met, e.g., remaining available storage on the cache pool.

The cache pool is recommended to be mirrored for this reason (not many people see why I find this to be amusing).

nullc

Are any filesystems offering file level FEC yet?

If a file has a hundred thousand blocks you could tack on a thousands blocks of error correction for the cost of making it just 1% larger. If the file is a seldom/never written archive it's essentially free beyond the space it takes up.

The kind of massive data archives that you want to minimize storage costs of tend to be read-mostly affairs.

It won't save you from a disk failure but I see bad blocks much more often than whole disk failures these days... and raid/5/6 have rather high costs while being still quite vulnerable to the possibility of an aligned fault on multiple disks.

Of course you could use par or similar tools, but that lacks nice FS transparent integration and particularly doesn't benefit from checksums already implemented in (some) FS (as you need half the error correction data to recover from known-position errors, and-or can use erasure only codes).

Dylan16807

I think the closest you're going to get is splitting the drive into 20 partitions and running RAIDZ across them.

nullc

yeesh, that would have pretty poor performance and non-trivial overhead compared to the protection level against bad blocks.

IgnaciusMonk

newer, smaller (physically,epitaxy, not capacity) ssd "cell" = more times per year you have to rewrite(refresh) that cell / whole disk so you do not lose data, anyway.

any sane person uses FS / system with dedup in it, so you can have 7+4+12 snapshots for 5TB of data taking only 7TB of space. etc

you want snapshots, for example Manjarolinux (arch based) does use BTRFS capable of snapshots. so before every update it will make snapshot so if update fails, you can just select to go back into working state in grub...

Alma linux uses BTRFS too but im not sure if they have this functionality too.

ZFS, bcache, BTRFS, checksums

MD-INTERGITY inside of linux kernel can provide checksums for any fs essentially. just " lvcreate --type raidN --raidintegrity y " and you have checksumms + raid in linux

IgnaciusMonk

without unraid / nonraid nonsense. Just " pure Linux™ " Trademark owned by Linus Torvalds

filesystem scrubbing.

oakwhiz

Rateless erasure FEC can go even further.

namibj

Ceph

leptons

RAID and any other fault-tolerance scheme can not be the only way you protect your data. I have two RAID 10 arrays, one is for active data, one is for backup, and the backup system has an LTO tape drive, where I also use PAR parity files on the tape backups. Important stuff is backed-up to multiple tape sets. Both systems are in different buildings, with tapes stored in a third.

My point is, it doesn't much matter what your FS does, so long as you have 3 or more of them.

zamadatix

There is no such thing as a guaranteed data storage system. The only thing you can choose is how reliable is reliable enough (or how reliable you can afford). Parity or RAID can get you more granular reliability increments than straight copies can provide, or even just far greater convenience when you do have copies.

nullc

Without error coding only a perfect channel can give lossless performance. But with error coding even a fairly lossy channel can give performance that is arbitrarily close to lossless, depending only on how much capacity you're willing to waste.

As the number of blocks on our storage devices grows their the probability that there is at least one with an error goes up. Even with raid5 the probability that there are two errors in one stripe unit at the same time can become non-negligible.

Worse, for raid5/6 normally the system is defendant on the device detecting corruption. When it doesn't, the raid will not only not fix but potentially propagate the corruption to other data. (I understand that ZFS at least can use its internal checksums to handle this case).

hebocon

This should be a "Show HN".

IgnaciusMonk

Intel RSTe / VROC it is integrated directly to your CPU/CHIPSET. you just populate that in "BIOS" and linux,BSD,windows will nofuss boot / install on top of that.

or every linux distro,bsd has ZFS available,

or every linux distro has LVM raid available,

or BTRFS has raid 1, 0, 10,

or windows has their own software raid, just open Storage Spaces / Disk Management console,

so whole unraid / nonraid are just nonsensical waste of effort for everyone

why would i invest time and effort to this technology by small team, if i can have technology supervised, maintained by linux kernel devs ? ? makes no sense.

and things i mentioned here are here longer than unraid/nonraid existed. so it was nonsensical from start.

lazylizard

i think unraid is a raid4

IgnaciusMonk

unraid is nonsense for silly people(50year old managers).