Jump to content

Help me understand unRAID vs "traditional" RAID

Go to solution Solved by Kilrah,

https://docs.unraid.net/unraid-os/manual/what-is-unraid/#parity-protected-array

 

Basically bit 1 of the parity drive is the XOR of a more or less long word made by concatenating bit 1 of each drive. Should a bit be lost (because its drive is gone) XORing everything that's left returns what it should be.

Idk if that belongs here, but I have a question about unRAID and how it handles redundancy.

 

I understand how RAID 5 works, the other disks can combine their data to form a new disk if one fails. But that's striped across the drives.

I also understand that unRAID is fundamentally different and does not stripe data (fills disks individually) but I wanna know how some scenarios would work out.

Imagine a setup like this on unRAID:

Unbenannt.thumb.png.9c235b50f2248797c3d2698de0229842.png

 

The parity disk can be reconstructed since the data is still on the other disks.

Disk A, B and C can easily fit on the parity disk. But what if disk D fails? Where is the parity for that one?

Link to comment
Share on other sites

Link to post
Share on other sites

8 minutes ago, myplaybox said:

The parity disk can be reconstructed since the data is still on the other disks.

Disk A, B and C can easily fit on the parity disk. But what if disk D fails? Where is the parity for that one?

Interesting question!

 

TBH, I'm not sure HOW Unraid deals with Parity but as I have an Unraid setup, I do know that regardless of how many drives you have in the main storage pool, if you have 1 Parity disk, 1 storage drive can fail and if you have 2 parity disks (I think that's the max), you can have 2 storage drives fail.

 

The 2 other great things about Unraid is when a storage drive fails, ONLY the data that was stored on that disk is unavailable until the drive is replaced and the parity data used to reconstruct the missing data.

 

Storage pool drives can also be mixed and matched in size so no need to use identical drives. The only stipulation is that the parity drive(s) need to be the same size or larger than the largest disk in the storage pool.

 

My array had an 8TB + 6TB for double parity then a storage pool of a 4TB + 4TB + 4TB + 2TB + 1TB.

 

As i was running low on space I decided I didn't need double parity so I moved the 6TB Parity disk to the storage pool.

Bedroom PC - Lian-Li O11 XL Evo - Intel Core i5 13600k @ 5.4P / 4.4EGhz -  MSI Pro-A Wifi Z790 Mobo DDR5 - 32GB Ram - Gigabyte RTX 4090 - 1TB Samsung 990Pro NVMe - Corsair HX1200i PSU - Dual Custom Loop Cooling - GPU cooled with EK Quantum Surface S240 + EK Quantum Surface P360M X-Flow Rads - CPU cooled with EK Quantum Surface X360M Rad

 

Living Room PC - Hyte Y60 - Intel Core i9 9900k @ 5Ghz -  MSI Meg Ace Z390 Mobo - 16GB Ram - Palit RTX 3080ti - 256GB Samsung NVMe - Corsair AX850 PSU - CPU + GPU cooled with Hyte Y60 Corner Distro Plate - EK Coolstream S120 + EK Quantum Surface S360 + EK Quantum Surface X240M

 

Extension PC - Lian Li o11 Dynamic - Intel Core i7 8086k @ 5.1Ghz -  Gbyte Z390 I Aorus Pro Wifi Mobo - 16GB Ram - EVGA RTX 2080ti - 256GB Samsung NVMe - EVGA B5 850W PSU - CPU + GPU cooled with dual EKWB 360 Rads + G1 side EKWB distro plate.

 

Office - Thermaltake Tower 100 - Intel Core i7 8700K @ 5.1Ghz - Gbyte Z390 I Aorus Pro Wifi Mobo - 16GB Ram - EVGA GTX 1080ti - 256GB Samsung NVMe - EVGA B5 850W PSU - CPU + GPU cooled with dual EK Quantum Surface P120M Rads + Barrow 3-in-1 Block, Res & Pump.

 

Annex - Corsair 250D - Intel Core i7 3770k - Asus P8Z77 I Delux Mobo - 16GB Ram - EVGA GTX 980ti - 256GB Corsair SSD - BeQuiet P11 750 PSU - CPU cooled with EK Coolstream S240 + S120 Rads + EK Pump / Res Combo

 

Office - Corsair 280X - Intel Core i7 4790k - Asrock H97M ITX Mobo  - 16GB Ram - EVGA GTX 980 - Corsair SFXL600 PSU - CPU + GPU cooled with triple EK Coolstream S240s + EK Pump / Res Combo

 

NAS PC - Fractal Node 804 - Intel Core i7 3770k - Asus P8Z77-M Mobo - 16GB Ram - MSI GTX 1660 Ventus - Corsair AX850 PSU - Unraid 15TB Storage Server

 

Living Room AV Setup 5.1.4 - Yamaha RX-A2060 - 2 x B&W CM9s2 - 2 x Monitor Audio FX Silvers - 4 x B&W CCM665s - B&W CMCs2 - SVS SB13 Ultra - LG OLED65C1

 

Extension AV Setup - Sonos ARC + Sub (Gen 3) - LG OLED65C6V + Yamaha RX-A1070 - 5 x Monitor Audio C265s (2 Zones)

 

Bedroom AV Setup - Yamaha WXC-50 - 2 x B&W CM1s - Rel Quake - LG OLED42C2.

Link to comment
Share on other sites

Link to post
Share on other sites

Forgot to mention, as data isn't striped, there is no speed boosts so a fast ssd with a good chunk of DRAM cache is very handy as a cache disk.

 

Just be mindful of what SSD you get.

 

I was using a 4TB Samsung QVO drive and wasn't aware that write speeds tank to <20MBs on large files as the DRAM cache would run out quickly.

Bedroom PC - Lian-Li O11 XL Evo - Intel Core i5 13600k @ 5.4P / 4.4EGhz -  MSI Pro-A Wifi Z790 Mobo DDR5 - 32GB Ram - Gigabyte RTX 4090 - 1TB Samsung 990Pro NVMe - Corsair HX1200i PSU - Dual Custom Loop Cooling - GPU cooled with EK Quantum Surface S240 + EK Quantum Surface P360M X-Flow Rads - CPU cooled with EK Quantum Surface X360M Rad

 

Living Room PC - Hyte Y60 - Intel Core i9 9900k @ 5Ghz -  MSI Meg Ace Z390 Mobo - 16GB Ram - Palit RTX 3080ti - 256GB Samsung NVMe - Corsair AX850 PSU - CPU + GPU cooled with Hyte Y60 Corner Distro Plate - EK Coolstream S120 + EK Quantum Surface S360 + EK Quantum Surface X240M

 

Extension PC - Lian Li o11 Dynamic - Intel Core i7 8086k @ 5.1Ghz -  Gbyte Z390 I Aorus Pro Wifi Mobo - 16GB Ram - EVGA RTX 2080ti - 256GB Samsung NVMe - EVGA B5 850W PSU - CPU + GPU cooled with dual EKWB 360 Rads + G1 side EKWB distro plate.

 

Office - Thermaltake Tower 100 - Intel Core i7 8700K @ 5.1Ghz - Gbyte Z390 I Aorus Pro Wifi Mobo - 16GB Ram - EVGA GTX 1080ti - 256GB Samsung NVMe - EVGA B5 850W PSU - CPU + GPU cooled with dual EK Quantum Surface P120M Rads + Barrow 3-in-1 Block, Res & Pump.

 

Annex - Corsair 250D - Intel Core i7 3770k - Asus P8Z77 I Delux Mobo - 16GB Ram - EVGA GTX 980ti - 256GB Corsair SSD - BeQuiet P11 750 PSU - CPU cooled with EK Coolstream S240 + S120 Rads + EK Pump / Res Combo

 

Office - Corsair 280X - Intel Core i7 4790k - Asrock H97M ITX Mobo  - 16GB Ram - EVGA GTX 980 - Corsair SFXL600 PSU - CPU + GPU cooled with triple EK Coolstream S240s + EK Pump / Res Combo

 

NAS PC - Fractal Node 804 - Intel Core i7 3770k - Asus P8Z77-M Mobo - 16GB Ram - MSI GTX 1660 Ventus - Corsair AX850 PSU - Unraid 15TB Storage Server

 

Living Room AV Setup 5.1.4 - Yamaha RX-A2060 - 2 x B&W CM9s2 - 2 x Monitor Audio FX Silvers - 4 x B&W CCM665s - B&W CMCs2 - SVS SB13 Ultra - LG OLED65C1

 

Extension AV Setup - Sonos ARC + Sub (Gen 3) - LG OLED65C6V + Yamaha RX-A1070 - 5 x Monitor Audio C265s (2 Zones)

 

Bedroom AV Setup - Yamaha WXC-50 - 2 x B&W CM1s - Rel Quake - LG OLED42C2.

Link to comment
Share on other sites

Link to post
Share on other sites

Yeah that's a big reason I chose unRAID too. I often buy used drives because I'm saving a lot of money and mixing and matching drives is really helpful. Also I already use a cache drive, some Samsung SSD I had lying around. Speed is not really my concern.

I am building my system at the moment, but I am scared because of that question.

 

You can also make an array of four 3 TB drives with one being for redundancy. (3x 3 TB array + 1x 3 TB redundancy)

But how is that redundant if it doesn't stripe the data?

I genuenly don't understand how it works tbh.

Link to comment
Share on other sites

Link to post
Share on other sites

https://docs.unraid.net/unraid-os/manual/what-is-unraid/#parity-protected-array

 

Basically bit 1 of the parity drive is the XOR of a more or less long word made by concatenating bit 1 of each drive. Should a bit be lost (because its drive is gone) XORing everything that's left returns what it should be.

F@H
Desktop: i9-13900K, ASUS Z790-E, 64GB DDR5-6000 CL36, RTX3080, 2TB MP600 Pro XT, 2TB SX8200Pro, 2x16TB Ironwolf RAID0, Corsair HX1200, Antec Vortex 360 AIO, Thermaltake Versa H25 TG, Samsung 4K curved 49" TV, 23" secondary, Mountain Everest Max

Mobile SFF rig: i9-9900K, Noctua NH-L9i, Asrock Z390 Phantom ITX-AC, 32GB, GTX1070, 2x1TB SX8200Pro RAID0, 2x5TB 2.5" HDD RAID0, Athena 500W Flex (Noctua fan), Custom 4.7l 3D printed case

 

Asus Zenbook UM325UA, Ryzen 7 5700u, 16GB, 1TB, OLED

 

GPD Win 2

Link to comment
Share on other sites

Link to post
Share on other sites

Thanks, I understand now. Took me a while, but I see now what you meant by XOR. That's why drives have to be zeroed out before inserting into the array.

For anyone still not sure, I found a great video which expleins it quite well too.

 

Link to comment
Share on other sites

Link to post
Share on other sites

the thought process between RAID5/6 and what unraid does is fundamentally the same, but the way it is achieved differs.

 

in a RAID5/6 array everything is written "across" all drives, splitting at a bitwise level just like RAID1 does, for example if you have a RAID5 with 3 disks, half of the data is on one disk, half the data is on another, and the third contains the parity data. raid6 just adds an additional slice of parity data.

 

unraid stores files on 'data' disks in their entirety, the parity disk (or disks) then store the same style of bitwise parity calculation of the data on these data disks.

 

the key difference in the parity calculation is that RAID5/6 splits data and parity across all drives, and unraid dedicated specific disks to parity operation.

 

essentially, the data on a raid5 array looks like this:

300px-RAID_5.svg.png

and an unraid array would essentially contain A-D1 on disk1, A-D2, on disk2, A-D3 on disk3, and A-D parity on the parity drive.

 

essentially if we ignore the way the data itself is stored (striping vs whole files) and the way the parity is stored (dedicated parity drive vs spread out) they both do the exact same thing.

 

for parity calculation sake each drive is just a big row of bits: one or zero.

 

you then put all of those rows side by side, and your parity is also just a big row of bits, each one is the XOR result of the other bits on that place in the row. the unraid page @Kilrah linked does a good job at explaining this process.

 

the difference in methodology that unraid uses compared to traditional RAID5/6 has one very interesting benefit for home users: as long as your parity drive is equal in size to the biggest drive in the array, you can use any odd mix of drives you like and the parity mechanism isnt affected. this is displayed in before mentioned unraid page by having different length bit rows in the example.

 

on another note; this is why on unraid's webinterface on the main page all disks have a "disk usage" bar, except for the parity drives, because they are essentially "always full"; they contain a full array of XOR data, no matter how much or little is stored on the rest of the array, or no matter how big or small the other drives are.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×