alpha754293

Question about RAID5/6 and/or ZFS raidz1/2 theory

Recommended Posts

For "conventional" RAID5/6 implementations and/or ZFS raidz1/2 implementations, what is the "level of redundancy" normally set at (where "level of redudancy" can be described as either a percentage of the total file size or based on the redundancy target size)?

 

I am trying to understand how the parity in those implementations work so that I can mimick it using par2cmdline.

 

Thanks.

 

The par2cmdline README file talks about how you can set the level of redundacy using one of those two methods described above, and/or either the total number of blocks or the block size (in bytes), and the combination of which will produce enough parity data so that it would be able to tolerate x number of errors totalling y bytes.

 

I'm trying to understand how the parity theory works so that I can create it manually using the par2cmdline tool and the reason for this is because I am creating 7-zipped archive files that are then written to LTO-8 tape, and I want to create the parity of the original 7-zip file, and also create a second level of parity data on the parity files itself (e.g. "double parity") so that instead of retaining triplicate copies of the backed up data, I might be able to get away with only using duplicates.

 

Thank you.

Share this post


Link to post
Share on other sites

It's number of drives in the array (n).

For RAID5, 1 drive's worth of storage is reserved for parity data, so (n-1) is the available capacity.

For RAID6, it's 2 drive's worth that is reserved for parity data.

 

RAIDZ and RAIDZ2 are similar in the space reserved for parity.

Share this post


Link to post
Share on other sites

But this is where I am a tad confused:

By the "conventional" understanding of RAID5 (n-1) parity, that means that the redundancy as a percent of the total capacity, given by 1/n drives varies with n.

Therefore; expressed at the filesystem level, each file is only 1/n redundant, which, if you have silent corruption in the parity AND the actual file/data, you're kind of screwed.

 

Again, this is what I am getting/coming the to the understanding of by reading the par2cmdline README file and I want to check whether my understanding of the parity theory is correct -- in that if there is silent data corruption with the parity data and also with the actual file data, you're screwed if you don't have parity on top of the parity, or double parity, correct?

 

(And by virtue of that, that means that with each increasing layer of parity, you're only reducing the probability of having an unrecoverable error in the data akin to O^n, correct? Where n is the number of levels of parity)

Share this post


Link to post
Share on other sites
On 12/29/2019 at 12:08 AM, continuum said:

It's number of drives in the array (n).

For RAID5, 1 drive's worth of storage is reserved for parity data, so (n-1) is the available capacity.

For RAID6, it's 2 drive's worth that is reserved for parity data.

 

RAIDZ and RAIDZ2 are similar in the space reserved for parity.

How would I apply this calculation for "number of drives in the array" when it comes to or refers to LTO-8 tape drive(s) system(s)?

 

Do I need multiple LTO-8 tape drives in order for this parity calculation to work properly then?

Share this post


Link to post
Share on other sites
On 1/3/2020 at 6:16 PM, alpha754293 said:

Therefore; expressed at the filesystem level, each file is only 1/n redundant, which, if you have silent corruption in the parity AND the actual file/data, you're kind of screwed.

This is why RAID5 or RAIDZ is not recommend by many, and RAID6 or RAIDZ2 is preferred instead.

Share this post


Link to post
Share on other sites
On 1/5/2020 at 6:07 PM, Slade said:

Yes, you need a multi-drive system.  Although I never ended up implementing it, I did some research a few years back on the idea and this paper was helpful:

https://www.fujifilmusa.com/products/tape_data_storage/case_studies/pdf/Fujifilm_RAIT_2017.pdf

But how would you then label the tapes so that the data would be consistent?

 

Wouldn't this mean that in order for the data and the parity to be consistent that you would only be able to write the data in (n-1) "chunks" - i.e. if you had 3 LTO-8 tape drives, the total raw, uncompressed capacity would be 36 TB, with only 24 TB that's "usable" since 12 TB would be used to store the parity data.

 

That also means that those three tapes will always have to work in conjunction with each other, so when you want to read data from this group of tapes, you will have to load all three tapes into the three tape drives simultaneously in order for this to work, correct?

 

And if you have 5 drives, then you would have to load all five tapes in at the same time for this to work, right? (etc. etc. as you increase the number of tape drives)

 

Conversely, why do that when you can just use par2 instead? You write the parity data to each individual tape so that with a single drive, the tape will contain all of the information self-contained within the tape, and if you are worried, you can also create/write parity of the parity data onto the tape as well.

 

Isn't that what double parity does?

 

Single parity is parity on your original data/file.

 

Double parity would be parity on top of your original data/file AND the first set of parity data that was generated/calculated by the RAID HBA or OS/CPU if you're using software RAID?

 

And if you are worried about the tape being a single point of failure (e.g. the tape is burned up in a fire), you can have x number offsite, colocated copies for disaster recovery.

 

This way, you don't have to wait for n number of tape drives to synchronize (and loading n number of tapes simultaneously) to be able to move data around. Instead of waiting to eject and load 5 tapes, while one tape is being ejected, another could already be loaded and it can start reading the next tape already. Whereas with RAIT, you'd have to synchronize the tape drives so that the group of tapes will work as a single unit together.

 

(And the load/unload mechanism isn't exactly the fastest, even with LTO-8. It can still take upto a minute with my current drive (not a tape library) to bring a tape up online so that it can be read/written to.)

Share this post


Link to post
Share on other sites
21 hours ago, continuum said:

This is why RAID5 or RAIDZ is not recommend by many, and RAID6 or RAIDZ2 is preferred instead.

But that only just postpones/delays the same fundamental failure mode.

 

You're just increasing the number of layers in order to statistically reduce the probability of the failure mode/error state from occurring.

 

I mean, to that end, there is nothing that you can't have septuple parity as your probability of the failure mode occurring will drop to somewhere on the order of 10^-9 to 10^-16 or less. (I haven't done the math, so I'm guessing in regards to the order. If someone else who is smarter than I am can do the math, then I can update that.)

Share this post


Link to post
Share on other sites
On 1/7/2020 at 3:23 PM, continuum said:

Correct. The goal is to still ensure uptime, not to prevent failed disks.

So...

 

What parameters should I be specifying for the par2 command line tool in order to calculate/generate the parity data that mimicks the more traditional RAID5/RAID6 configurations?

Share this post


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