RAID Parity Applications For Cheap Media?
yamgirl asks: "I've been reading up on RAID strategies for protecting against hard disk failure, particularly those RAID levels that involve recording parity on one disk to duplicate data on multiple other drives, and I've been thinking that this would also be wonderfully useful in making backups to CDROM, or even floppies. Many's the time when I've had a bagful of floppies with me, trying to install something, and found that one floppy out of the batch had crapped out, rendering the rest useless until I went home and got a new copy. If I could make a RAID-style parity disk whenever I needed to make multiple-volume disk sets, I'd only have to carry around three extra disks (one blank to write a new copy on to in case of emergency, and one disk to keep the recovery software on - but the latter two I'd just need one each of for any number of separate sets of parity disks and multi-volume sets of media.) as very effective insurance against crappy disks. Much cheaper in time and effort and disks than making entire extra copies of multi-volume sets, or for that matter of needing to go off site to track down a new copy. ANYHOW, my question is, has anyone ever seen or written any software to do this, to generate parity disks and to recover lost data with them? (And is it free? =)"
The only thing floppies should be used for nowadays is propping up wobbly tables.
- A.P.
--
"One World, one Web, one Program" - Microsoft promotional ad
"Remember when the U.S. had a drug problem, and then we declared a War On Drugs, and now you can't buy drugs anymore?"
I think I had a copy of that program. It was an MS-DOS backup program that wrote a parity sector on every track. This allowed it to recover from disk errors as long as no more than one sector was bad on any given track.
Mea navis aericumbens anguillis abundat
If you have nfiles each one-floppy big (arj1 to arjn) you can then generate a final parity file by simply xoring all the nfiles together, to give a file equal in size to the largest file that makes it up. should any single floppy in the set fail, then exactly the same utility will allow you to xor all the remaining files, plus the parity file, and gain back the original (missing) file.
obviously this will only protect you from ONE missing disk however, but it is better than nothing
I imagine you could do the same thing on a disk-image basis, but it would require much more specialized access to the low level floppy calls to get "raw" reads of the disk sectors for the operation, whereas a simple file XOR can be knocked together in MS Quickbasic in five minutes, and as a under-one-k executable in ten :+) - if you don't want the bother of writing one yourself, a simple websearch on One Time Pad implimentations will turn up several dozen - with source.....
--
-=DaveHowe=-
As several people have pointed out, RAID-(X) is trivial to do with CD-R/RW, and is easily usable on floppies. I use it all the time. Several other people have linked to my shoddy HOWTO on CD-RAID, and that will get you going if you really want a RAID. Keep in mind that it is totally unusable unless you have a system with (n) CD/floppy drives or enough spare HD space to hold (n-1) cd images.
I wouldn't do it with floppies. Disk images on a bootable CD-R/RW work quite well. If a disk craps out, boot to the CD and make a new disk image. Writing a bootable CD with a small Linux or *BSD install and all of the images is easy. Of course, that means you have to carry (n + 1) + backup CD, but that shouldn't be terrible.
.sig: Now legally binding!
Custom FS, and reduced volume may be tolerable. What about storing the parity information outside of the normal disk area? Say we're working with 1440k floppies. You can actually fit 1600k on the disk. Use the first 1440k for a MSDOS/MINIX/etc filesystem, and the remaining 160k for parity.
You'd need at least nine disks in the set, and you'd have to carry (n>9)+1 disks (the extra disk being the rebuild utility) but they would seem to any unknowing PC to be ordinary install media. No custom filesystem, and probably easy to implement.
.sig: Now legally binding!