FlexRAID (Flexible RAID)

Update: 04-19-2008
FlexRAID 1.0 RC2 build 002 is up (private release only).

Change list:
- A new "migrate" task has been added to migrate the metadata from RC1 to the metadata supported in RC2.
- Minor cosmetic fixes.
 
True, LVM2 does have experimental mirroring support.
Snapshots in LVM are simply incremental backups (read data delta).

Again, most people will use Linux RAID on top of LVM.
And yes, as a volume manager, it does all sort of tricks with dynamic volumes.

FlexRAID can be used on top of LVM just like it can be used on top of dynamic volumes on Windows. :)

Actually I am pretty sure the snapshots are CoW and pointers to the live filesystem, but other than that....

I am interested in FlexRaid if it offers something lvm2/mdadm do not. If not, I'd rather stick with stuff a little more proven. I may end up testing it anyhow in a vm so I can write my own review :)
 
Actually I am pretty sure the snapshots are CoW and pointers to the live filesystem, but other than that....

I am interested in FlexRaid if it offers something lvm2/mdadm do not. If not, I'd rather stick with stuff a little more proven. I may end up testing it anyhow in a vm so I can write my own review :)

Cool.
Looking forward to the review. :)

FlexRAID is safe to your data. So, you don't necessarily need a VM to test it out.
Although, using a VM should provide a good environment to simulate different disk topologies.

The worst case scenario with FlexRAID is if the parity data cannot be used to recover "all" of the data from a failed drive.

In regard to LVM, these are two different products.
LVM is a volume manager that can be used on top of a RAID and can be RAID'ed on top of.

FlexRAID will work just fine on top of LVM.

LVM enables you to grow the size of logical volumes, but you'll need to resize the corresponding file system to make use of the new space. Some file systems (e.g. ext3) now support online resize. See the LVM manuals for more details.

You can also use LVM for creating copy-on-write (CoW) clones of LVM volumes (known as writable persistent snapshots in LVM terminology). This facility is new in Linux 2.6.8, so isn't as stable as one might hope. In particular, using lots of CoW LVM disks consumes a lot of dom0 memory, and error conditions such as running out of disk space are not handled well. Hopefully this will improve in future.

http://www.linuxtopia.org/online_bo...er_guide/linux_virualization_xen_user_44.html

Here is a good read: http://aplawrence.com/Linux/lvm.html
 
So this is kinda neat but it doesn't look revolutionary.

It looks like this is similar to RAID5.. well RAID3 actually. Ie lets have 3 disks of data and one disk of parity. Rather than continually updating the parity information with normal RAID, FlexRAID seems to just do parity snapshots whenever you want. And rather than wasting time creating parity information of unused space on a drive you only create parity for the used space-- files.

Problem is as files change/add/delete the parity information is out of date... and until a resync is done your data is not 100% safe. You won't lose everything after a failure but you will lose something.

I guess this can be useful if you do minimal data changes and don't need total reliability. Perhaps using over drives with movies and music and any snapshot/backup data it could be better than nothing.

BUt if you're doing minimal data changes and have to resync all the time... how would it be better than creating par2 files for everything? Not sure it is other than resync would be faster with FlexRAID but not as effcient with recovering data. Plus depending on the size of the parity disks you could have have to lose crazy amounts of data before par2 coudln't recreate everything.
 
Yea thats the point, if its for archival use, what benefit does it have over par2.. which cannot be beat in efficiency when creating parity data. Nevermind though... FlexRAID is a neat idea... it'll have to find a middle round as its not going to beat out normal raid for files that change often and its not going to beat par2 for files that don't ever change.
 
its not going to beat out normal raid for files that change often and its not going to beat par2 for files that don't ever change.

I beg to differ...

Normal raid does not have metadata... Normal raid finds something wrong and it just rebuilds the disk, raid-F (like Raid-z) can self heal the corrupt areas... a normal raid cannot tell what's corrupt and what's not, it just rebuilds (and potentially corrupts in the process, trust me...)

I find your par2 attitude interesting as I am a big user of par2, and suggest it all the time, but par2 just is not a suitable idea for a MAID...

(I know you said "files that never change", but I am ignoring that at this moment, as to rebuild all of your lost data with par2, you still need 100% parity (effectively a raid-1) if a disk fails... and, as I said, par2 just isn't suitable for MAID... Can it even be used to resemble MAID? I've never tried, I thought you could only give it one data source, I could be wrong, though...)

but, if your files are going to change, par2 isn't suitable for MAID... if you change a file in raid-f, only the parity for block X across each disk has to be re-computed. In par2, not only does block X need to be re-computed, but since that one changed, every block of parity data after it is now invalid as well, since it's data was computed off of the old parity data... All of that would need to be re-computed...

par2 would be swell, but it's just too complex for a MAID.. It wouldn't easily allow raid expansion, shrink, etc, etc...

But, even if your data's not going to change, and par2 can be done to resemble MAID, it certainly is going to be slow for data recovery compared to raid-f... if you have five 750GB disks, and you have a bad block on a disk, it's only going to need to read four blocks off of the other disks to repair that bad block... Not too bad... But, with par2, you have one bad block, par2 is going to have to re-read all 3TBs (four 750GB data disks) of good source data, and then use that one block of parity data to heal that one bad block... Not efficient...

Par2 definitely has its place, though... I use it for making 100% parity of my DVD back-ups... That way, if a block is bad on the data DVD, I only need to be able to get ONE good block off of the parity DVD to compensate... Actually, the DVD can be 50% bad in any area basically, and the parity disc can be bad 50% in any area, but combined I still have my data... But the data disc is never going to change...

And, as I said, you could implement a MAID with par2, and even assuming your files are never going to change, it will be very inefficient as healing any bad areas, compared it raid-f...

The only area par2 will be better than raid-f is where you only have one set of parity (like raid-5) in raid-f, but but have two bad blocks across the same "stripe" (so to speak) of raid-f parity data... raid-f can't heal that (a double-corruption of two disks across the same X block of data), whereas par2 could... (raid-f could heal this in the future, though, if you use the raid-6 type option of multiple parity disks (so to speak), and have created multiple parity... this is coming in future raid-f versions, I hope... it would just double/triple/etc the amt of parity data raid-f needs to store...)

But, again, par2's so slow in repairing this, that you might as well go into your archives and restore one of these bad areas (or both), and then let raid-f heal the other bad block...

All parity solutions have pros and cons...

But, with a MAID of dozens and dozens of drives, and as an example one bad block... Raid-f will heal this in minutes... par2? You'll die of old age, waiting...

The only usefulness you'd get out of par2 in a MAID is knowing exactly what's corrupt, so you can grab your archives and do a restore...

And, again, all raid solutions have pros and cons... I don't know of any currently in Windows that can tell me what's corrupt, and only heal that... Open Solaris has raid-z, but that's Open Solaris... Is that going to do a MAID across a network with multiple OS platforms?

But y, for real-time raid, I don't imagine raid-f in its current form is going to cut it... But that's what hardware raid is for, IMO...

But, if you just want a lot of live storage, and don't want to have to go to your archives so often for restores, and want to know exactly what is corrupt if a restore is necessary, raid-f's looking pretty good...

(FWIW - I plan to use raid-f to create a MAID of dozens upon dozens of disks, eventually... Since it can expand as needed, I can add disks only as needed... Great! This will all be archived on DVD, so I don't need insane redundancy... But, knowing what's corrupt will be half the battle to getting the data back in order...)

Also, FWIW - I think this is the first time I've jumped off of the par2 bandwagon... I was planning to use par2 to know when something's corrupt, but I realized it just wasn't going to be all that efficient to use... Raid-f came along at just the right time...

If you already knew all of this, then pardon my post... I love par2, but raid-f's the way I'm going...
 
Very informative post Tolyngee. :)

It really helps with me not having to answer every single question on RAID-F.

I know I need to improve on the documentation.

That's said, a lot of exciting features are coming to FlexRAID.
- GPU off-loading (if I can pull it off)
- RAID 6 like feature (so you don't have to do multiple snapshots)
- Self-healing RAID (hard drive corruption happens more often than thought - right now FlexRAID only tells you which file is corrupted so you can delete and recover it)

Although requiring a lot more work, FlexRAID Live! and FlexRAID NAS should fill the gaps so often complained about.
 
I am interested in writing a Solaris client, but I have finals and projects for the next month. I'll try to remember, but PM me in a month and I'll definitely start on it then.
 
LOL Yeah Par2 wouldn't be realistic, I've never actually tried anything big scale... its a joke at how slow it would be.... although you can increase the block size and it gets much faster... no reason to have insanely small block size when parity space is so cheap.... but still it wouldn't be realistic. I haven't actually used par2 since hd's have became so cheap and dvdr became so time consuming. ((I just compared how much of my time it would take to burn 100 dvds + parity dvds to how long it would take me to make $99 to buy a 500GB drive... hard to justify dvd backups, rsync ftw!))

"Normal raid does not have metadata... Normal raid finds something wrong and it just rebuilds the disk, raid-F (like Raid-z) can self heal the corrupt areas... a normal raid cannot tell what's corrupt and what's not, it just rebuilds (and potentially corrupts in the process, trust me...)"

RAID6 solves this if it is done right unless I'm missing something-- for single parity errors. I'm pretty sure md raid does this correctly in Linux... never understood how this is handling in hardware raid cards. Sorry I mean it will correctly rebuild and not create further corruption, again with single parity errors.

"(I know you said "files that never change", but I am ignoring that at this moment, as to rebuild all of your lost data with par2, you still need 100% parity (effectively a raid-1) if a disk fails... and, as I said, par2 just isn't suitable for MAID... Can it even be used to resemble MAID? I've never tried, I thought you could only give it one data source, I could be wrong, though...)"

Yea I've never actually tried to do anything like that... I think most implementations have issues with where everything is located... but par2 might just be a starting point.. reed-solomon parity data is the key feature I was advocating. But it would be much better than RAID-1...in the worst case it would be efficient as flex-raid... but in the best case it would be much much more efficient than Flex-RAID.

If you have 5 disks with 1 2 4 8 16GB of data and a 6th disk for parity data... Flexraid would need 16GB of parity data, par2 would need 16GB of parity data--- this would solve worst case of losing the 16GB drive... but in other cases, losing the 1GB and 2GB drives... flex-raid is broke... par2 is not. Par2 could lose up to 4 drives, 1 2 4 8GB drives, and recreate them with its 16GB of parity data, lol.
 
Block size of Par2 doesn't matter, make it big enough that the drives are the bottleneck (which is what I was referring to anyway), and it still has to read all of that data back in... It takes time to read potentially TBs and TBs of data... No way around that...

A raid is not a back-up... I don't care how many drives you have, how much parity you have, if they all fail, your data's lost... Mother Nature will erase your data in the flash of a second...

Using four DVD burners, I can burn ~34GB of data an hr... I assure you it's a viable back-up solution... And your back-ups can go to another location...

If RAID-6 solves what I was discussing, show me one that will run on Windows for me right now, and I'll consider it.

There's a reason no one's writing a "par2" solution for a MAID. Your example of where "par2" solution beats _any_ raid (not just raid-f) is unrealistic itself. No one's going to run such a setup. It sounds like numbers a politician would come up with, frankly.

No offense, but it would be much more positive and productive for yourself to begin work on the "par2" solution to this, than to be "hating" on raid-f.

Everything has pros and cons. As I said, although I plan to use raid-f, I know there's going to be times where I'd rather just restore the data from back-up than let raid-f do the re-sync of the data. I won't go into all the dynamics of all such scenarios, but I guarantee you Spectrumbx understands where I am coming from.
 
What backup software do you use which lets you use multiple dvd burners for a single backup job simultaneously ?
 
"There's a reason no one's writing a "par2" solution for a MAID. Your example of where "par2" solution beats _any_ raid (not just raid-f) is unrealistic itself. No one's going to run such a setup. It sounds like numbers a politician would come up with, frankly."

I AGREE!! That was my original point from my first post!!!

I introduced the idea of par2 with:
"BUt if you're doing minimal data changes and have to resync all the time... "
By which I mean if you impose unrealistic restrictions then here is another unrealistic solution that is ever better!, par2! And actually yea par2 would beat any raid but its not realistic.

Then in 2nd post I even dropped it by given into the idea that Flex-RAID is not unrealistic but it needs to find a good compromise-- ie not purely archival use as it would be difficult to sell:
"Nevermind though... FlexRAID is a neat idea... it'll have to find a middle round as its not going to beat out normal raid for files that change often and its not going to beat par2 for files that don't ever change."

My 3rd post was just replying to your comments.

And now I'm done with this post.

PS:
"Using four DVD burners, I can burn ~34GB of data an hr... I assure you it's a viable back-up solution... And your back-ups can go to another location..."

500GB drive = $99 = can go to another location
500GB of DVDs @ 34GB/hr = 14 hours, minimum wage is $8.60 i think now, 14*8.60=126$... even cheaper if you make more than minimum wage.

Lets say want to do another backup:
500GB drive = copy and paste to old drive = 30 seconds including time to plug it in
500GB in additional dvds = another 14 hours.

This is ignoring coasters and degration of burned media and complexity of dividing up data to 100 dvds and then knowing where to locate it on the dvds.

I'm done with this thread, and gl iwth Flex-RAD its a neat idea.
 
This is starting to sound like arguing. :)

bexamous, the vision behind FlexRAID is that you have more options.
Having options is good for you. ;)

I think what Tolyngee was trying to say is that you failed to understand the problem(s) being solved by FlexRAID before calling in an alternative.

FlexRAID solves a different set of problems than PAR2 does and vice-versa.
 
I have a couple of questions:
1) So I can specify what directories I need parity data for, but can I exclude a sub directory that is contained in it? Usually something like a temp directory that gets files added and deleted at any time. I can move that directory elsewhere but I just want to know :).
2) I was looking at the video tutorials, so can I assume that if I run the host on another machine in my network, it will store the data to that machine? If so do I need to open up any ports on it's firewall if I am running a firewall on that machine?
3) When calculating the parity is it the client or the host that does it?

I am basically looking to back up 3 directories on 3 different drives on my current machine to another older machine that has basically a near empty 500gb drive in it. It sounds like FlexRAID would be the best solution since I really only want to use the software to do say a nightly snapshot. Kind of like a backup but using parity data instead of a file copy to save on space.
 
I have a couple of questions:
1) So I can specify what directories I need parity data for, but can I exclude a sub directory that is contained in it? Usually something like a temp directory that gets files added and deleted at any time. I can move that directory elsewhere but I just want to know :).

hm, thats a good question that I can actually see some application for. If the answer is no, I suppose the workaround would be to bruteforce it and only specify the directories you want.
 
I have a couple of questions:
1) So I can specify what directories I need parity data for, but can I exclude a sub directory that is contained in it? Usually something like a temp directory that gets files added and deleted at any time. I can move that directory elsewhere but I just want to know :).
2) I was looking at the video tutorials, so can I assume that if I run the host on another machine in my network, it will store the data to that machine? If so do I need to open up any ports on it's firewall if I am running a firewall on that machine?
3) When calculating the parity is it the client or the host that does it?

I am basically looking to back up 3 directories on 3 different drives on my current machine to another older machine that has basically a near empty 500gb drive in it. It sounds like FlexRAID would be the best solution since I really only want to use the software to do say a nightly snapshot. Kind of like a backup but using parity data instead of a file copy to save on space.

1. Excluding sub-directories is being considered for future releases. For now, hidden directories are ignored. So, you can mark directories that you don't want included in the RAID as hidden and they won't be included.

2. The default port is 9595. You can change the default port when you launch the host service.
In the shortcut to launch the host, you can change the target to: "C:\Program Files\OpenEgg\FlexRAID 1.0 RC1\FlexRAID.exe port=xxx maxconnections=xxx backlog=xxx bindtolocal=true|false".
Where:
- port is the port number to listen to (default=9595)
- maxconnections is the maximum number of connections to support (default=0 for unlimited)
- backlog is the number of connection to keep in the queue before rejecting additional connections (default=50)
- bindtolocal is whether to bind to the local interface only (default public IP) or to listen on all IPs (default=false i.e., listen on all IPs)

3. The host service computes the parity. Note that a source data can be a network share. So, you can have the host service running on a client machine computing parity for data residing on a file server.

Yep, FlexRAID will do exactly what you are looking to do with your 3 data sources.
Basically, you will write the parity to the remote machine.

Sorry if some of this has not been documented yet. :eek:
 
Thanks for the answers spectrumbx. I am going to try this out this weekend and see how it works. Since it's multi threaded I might have to make the drive a network share since my main PC is a quad core intel, while the other is only a dual AMD X4400 so it should be a lot faster. But on the other hand, having it doing the parity on the AMD box isn't so bad if I am doing stuff on the quad machine :).
 
Thanks for the answers spectrumbx. I am going to try this out this weekend and see how it works. Since it's multi threaded I might have to make the drive a network share since my main PC is a quad core intel, while the other is only a dual AMD X4400 so it should be a lot faster. But on the other hand, having it doing the parity on the AMD box isn't so bad if I am doing stuff on the quad machine :).

Sure.
Do account for the network cost though.
I think you will do better if you run the process locally.
 
I have a couple of questions about flexraid before i jump in, i hope someone can help me with.

1. Do i need to keep the flexraid serversoftware started under Windows in order to keep parity data valid even is i don't write data to the disk? If i don't remember wrong, windows writes to the drive even at read-only operation, like file last access and so on?

2. Can i dual-boot in Windows / Linux and use the same config files to sync and restore under both OS'er?

3. If I calculate parity on say, 6 1TB drives, and change one 1k .txt file on one of the discs. Will I, as it is now, have to recalculate all parity data? If yes, can I accept the old version would get restored if the disc crashed, or would that corrupt parity for other files as well?

4. Does the flexraid server preform any tasks (like integrity monitoring) during normal file access from the harddrive, or does it just operate as manual commands are issues thru the command interface?

Thanks in advance.
 
I have a couple of questions about flexraid before i jump in, i hope someone can help me with.

1. Do i need to keep the flexraid serversoftware started under Windows in order to keep parity data valid even is i don't write data to the disk? If i don't remember wrong, windows writes to the drive even at read-only operation, like file last access and so on?

2. Can i dual-boot in Windows / Linux and use the same config files to sync and restore under both OS'er?

3. If I calculate parity on say, 6 1TB drives, and change one 1k .txt file on one of the discs. Will I, as it is now, have to recalculate all parity data? If yes, can I accept the old version would get restored if the disc crashed, or would that corrupt parity for other files as well?

4. Does the flexraid server preform any tasks (like integrity monitoring) during normal file access from the harddrive, or does it just operate as manual commands are issues thru the command interface?

Thanks in advance.

I have played a bit with the software today so let me see if I can try to answer some of your questions:

1) I don't think you have to have anything running all the time. Only when you need to use the FlexRAID stuff.

2) I think the configs you use would have to be different. For example, if your data is c:\data on Windows, there is no such thing under linux. You'd have to put the linux path into the config files like \mnt\cdrive\data as the path.

3) I believe on the website it says it has to, but from my short test it didn't when I used rsynch on the new data. What I did was take one file put it in a hex editor and change 4 bytes. I ran scan.txt but it reported everything was OK, but when I ran verify.txt it told me that there was a problem. So I reran rsynch.txt and it rebuilt one of the parity files, but it was pretty quick so it didn't seem do the whole thing. From what I could tell it only had to update the affected parity files.

4) It looks like it's all manual operation.

But I am having an issue right now. As I said I have a file that I changed 4 bytes of in the data. I ran verify.txt and it knows there is problem (Bit Mismatch). So I run "Restore.txt" but it isn't fixing the problem. It keeps saying there are no files to recover. So is that working as expected?
 
3) I believe on the website it says it has to, but from my short test it didn't when I used rsynch on the new data. What I did was take one file put it in a hex editor and change 4 bytes. I ran scan.txt but it reported everything was OK, but when I ran verify.txt it told me that there was a problem. So I reran rsynch.txt and it rebuilt one of the parity files, but it was pretty quick so it didn't seem do the whole thing. From what I could tell it only had to update the affected parity files.

4) It looks like it's all manual operation.

But I am having an issue right now. As I said I have a file that I changed 4 bytes of in the data. I ran verify.txt and it knows there is problem (Bit Mismatch). So I run "Restore.txt" but it isn't fixing the problem. It keeps saying there are no files to recover. So is that working as expected?

Correct, rsynch will recalculate parity on only the changed files.

Lot of changes are happening to FlexRAID.
Both the documentation and the official software release are grossly outdated.

Sorry, for that, but I only have so much spare time.

You all should be using FlexRAID RC2 Build 005: http://download.openegg.org/release/FlexRAID/Windows/RC2/FlexRAID_1.0-RC2_build-005_Installer.exe

There are issues with previous builds.
 
Update: 04-25-2008
Exciting news: FlexRAID RC3 will be 3 (on average) to up to 7 times (sometimes more) faster than RC2. :eek:
 
Spectrum, I can help you get some developers on board. PM me your email address and I'll see what I can do, or even better.. read my PM for more details... thanks.
 
FYI: RAID 6 and RAIDn (n parity) are coming to FlexRAID.

There also many other features coming, but they will be announced much later.
 
Check your email for your gift certificate and info, enjoy (and post there).
 
I've started getting null errors again, and can't figure out why.

Code:
[2008-05-08 23:09:51,898] DEBUG: Starting FlexRAID Host Service...
[2008-05-08 23:10:15,318] DEBUG: Executing rsynch...
[2008-05-08 23:12:04,163] INFO : Total process size = 9225356058
[2008-05-08 23:28:48,584] ERROR: [rsynch] null
java.lang.NullPointerException
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
[2008-05-08 23:32:34,450] DEBUG: Executing rsynch...
[2008-05-08 23:34:11,018] INFO : Total process size = 9225356062
[2008-05-08 23:50:47,868] ERROR: [rsynch] null
java.lang.NullPointerException
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)

I got one a while back but that was due to me messing up the command templates, but I used a default one and its still weird.
 
I've started getting null errors again, and can't figure out why.

Code:
[2008-05-08 23:09:51,898] DEBUG: Starting FlexRAID Host Service...
[2008-05-08 23:10:15,318] DEBUG: Executing rsynch...
[2008-05-08 23:12:04,163] INFO : Total process size = 9225356058
[2008-05-08 23:28:48,584] ERROR: [rsynch] null
java.lang.NullPointerException
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
[2008-05-08 23:32:34,450] DEBUG: Executing rsynch...
[2008-05-08 23:34:11,018] INFO : Total process size = 9225356062
[2008-05-08 23:50:47,868] ERROR: [rsynch] null
java.lang.NullPointerException
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)
	at java.lang.Void.<unknown>(Unknown Source)

I got one a while back but that was due to me messing up the command templates, but I used a default one and its still weird.

File a bug report at the forum.
Include version, command config file, and log file.
 
Hi spectrumbx, Just noticed the post you made about RC3 in your forums. I was wondering if you decided on whether or not you will be releasing it?
 
File a bug report at the forum.
Include version, command config file, and log file.

This is basically the same problem I PM'd you about the other day, with the addition of that VM bug that you said was due to me running multiple instances (not sure what that means, I only had one client open if thats what you meant).

I'll make a post with the relevant info later today. sorry about the lag time, school's starting up for the summer and I've been busy at work.
 
This is basically the same problem I PM'd you about the other day, with the addition of that VM bug that you said was due to me running multiple instances (not sure what that means, I only had one client open if thats what you meant).

I'll make a post with the relevant info later today. sorry about the lag time, school's starting up for the summer and I've been busy at work.

Regarding your PM, you are running multiple instances of the "host" service application on the same port.
You can run as many clients and host service applications as you want, but each host service application needs its own port.
There is no restriction on the clients.
 
Back
Top