September 22, 200916 yr I'm assuming the answer is yes.. but I'd figure I'd ask anyway because I've never tried it.. I have one of my drives which stores my backups. When it gets full, I would like to remove it from the array and keep it in a drawer or something.. Easy enough to remove.. but if I need to get some data off it at later date, will I be able to hook it back up and just mount the resiersFS without adding it back to the array? Thanks, Jim
September 22, 200916 yr Yes... just DON'T add it to the array or it will be cleared and everything erased.
September 22, 200916 yr I'm assuming the answer is yes.. but I'd figure I'd ask anyway because I've never tried it.. I have one of my drives which stores my backups. When it gets full, I would like to remove it from the array and keep it in a drawer or something.. Easy enough to remove.. but if I need to get some data off it at later date, will I be able to hook it back up and just mount the resiersFS without adding it back to the array? Thanks, Jim When you remove it from your array, unless you replace it with another drive you will not be protected from a disk failure until you re-calculate parity without it. This is one of the few times where you must press the button labeled "Restore" to calculate parity without the drive you un-assigned and removed to store elsewhere. When you press the button you will be without parity protection until it completes a full parity sync. Joe L.
September 22, 200916 yr Author This is one of the few times where you must press the button labeled "Restore" to calculate parity without the drive you un-assigned and removed to store elsewhere. When you press the button you will be without parity protection until it completes a full parity sync. Yeah.. That's the bummer of it! It would be nice if we had a command to remove the drive from the array without losing parity protection. I know it can be done if we were to zero out the disk first.. but I want to keep the data! We need a disable writes to drive x and recalc parity without drive x. Jim
September 22, 200916 yr If you were planning to replace the drive anyway, do this: 1- preclear and add new drive to array. 2- copy data to the new drive, 3- zero out the old drive 4- remove old drive from array and force parity valid 5- remount old drive OUTSIDE the array 6- copy data to the old drive (outside the array), and delete it from the new drive (in the array) It takes more time, but you maintain parity the whole time.
September 22, 200916 yr This is one of the few times where you must press the button labeled "Restore" to calculate parity without the drive you un-assigned and removed to store elsewhere. When you press the button you will be without parity protection until it completes a full parity sync. Yeah.. That's the bummer of it! It would be nice if we had a command to remove the drive from the array without losing parity protection. I know it can be done if we were to zero out the disk first.. but I want to keep the data! We need a disable writes to drive x and recalc parity without drive x. Jim I've been reviewing the MD driver to see if this is possible. The trick is the source drive and the parity drive need to be read. The source drive's block XOR'ed out. The parity block re-written. It should be a pretty fast operation as it would operate as fast as two drives can rather then the whole array.
September 23, 200916 yr This seems to be like the question I had a bit back. I am awaiting a new server from Tom. I had to exchange my old one, but I had 1xParity and 3xData drives in the box. I have saved my setup and know which serial numbers goto which slots. But will this matter? I am receiving an entirely new system here in the next couple of days. I want to save the data on my data drives. I guess I should have, but I dont have any super.dat files or anything from the old flashdrive. If I readd the 3xData drvies to the new array will it think they are brand new and do a mkreiserfs on them? I do have one extra unformatted disk as of right now which was never added to the array which I can use to juggle this data around. Will I have to: 1] Preclear pristine disk. 2] Add to array 3] Insert old disk w/ data on it. Do not add to array. 4] Manually mount old disk somewhere like to /a 5] Copy all data from drive outside array to drive added to array. 6] Unmount /a 7] Add it to array and have a mkreiserfs run on it (which is fine because the data has been already copied to another drive in step 5) 8] Repeat for two remaining data drives. Thanks! Stefhen
September 23, 200916 yr This seems to be like the question I had a bit back. I am awaiting a new server from Tom. I had to exchange my old one, but I had 1xParity and 3xData drives in the box. I have saved my setup and know which serial numbers goto which slots. But will this matter? I am receiving an entirely new system here in the next couple of days. I want to save the data on my data drives. I guess I should have, but I dont have any super.dat files or anything from the old flashdrive. If I readd the 3xData drvies to the new array will it think they are brand new and do a mkreiserfs on them? I do have one extra unformatted disk as of right now which was never added to the array which I can use to juggle this data around. Will I have to: 1] Preclear pristine disk. 2] Add to array 3] Insert old disk w/ data on it. Do not add to array. 4] Manually mount old disk somewhere like to /a 5] Copy all data from drive outside array to drive added to array. 6] Unmount /a 7] Add it to array and have a mkreiserfs run on it (which is fine because the data has been already copied to another drive in step 5) 8] Repeat for two remaining data drives. Thanks! Stefhen No, you do not go to all that to add the new drives to your new array. You can simply assign your existing data drives to the new array. If you remember which drive was the parity drive, make sure it is assigned the parity slot in the array. If you do not remember, do not initially assign a parity drive. All those you assign should show up when you start the array... (or rather NO drive should show as un-formatted) If you accidentally assign the parity drive as a data drive it will show as un-formatted. Just go back to the "Devices" page and correct the assignment. unRAID will recognize the prior file systems. You don't need to add your extra "pristine" disk, not unless you want to... (it will show as un-formatted) Your situation is exactly the same as if you press the button labeled as "restore" except on new hardware. Both replace the super.dat file and use the currently assigned and working drives to establish a new super.dat files and then proceed to compute parity based on those drives. Joe L.
September 23, 200916 yr I've been reviewing the MD driver to see if this is possible. The trick is the source drive and the parity drive need to be read. The source drive's block XOR'ed out. The parity block re-written. Won't work... as soon as you process the first sector, parity is now bad unless you write back zeros to the source drive..... which is not what he wants. There is no way to remove a drive, with its data intact, and keep parity.
September 23, 200916 yr I've been reviewing the MD driver to see if this is possible. The trick is the source drive and the parity drive need to be read. The source drive's block XOR'ed out. The parity block re-written. Won't work... as soon as you process the first sector, parity is now bad unless you write back zeros to the source drive..... which is not what he wants. There is no way to remove a drive, with its data intact, and keep parity. Only way I can think of is to write a completely new set of parity, to a second "parallel" parity drive, but without the drive being removed as part of the calculation. While this is happening, the existing parity drive is kept up as normal, and any writes to the disks not being removed also written as needed to the new parity drive. Then in one "atomic" operation, switch to using the "parallel" parity drive and drop the one data drive from the array. At that point, the old parity drive is not being used at all, and the old data drive can be removed. The "new" parallel parity drive has good parity without the drive being removed. The drive being removed still has its data. It would not be a fast process, that's for sure, but it could be done. (or at least I think it would work ) Joe L.
September 23, 200916 yr Author I think the thought would be the the drive is virtually removed from the array as it processed. As parity is recalculted on the first sector.. Yes you would have to zero out the drive to have parity valid.. but you treat that sector as not in the system anymore so you don't have to zero it out. The other sectors are "still in the system" but as soon as a particular sector is "paritied out" It's gone from the system.. Jim
September 23, 200916 yr Only way I can think of is to write a completely new set of parity, to a second "parallel" parity drive, Using a second drive is what I originally proposed. but you treat that sector as not in the system anymore so you don't have to zero it out. The other sectors are "still in the system" ... and you have no what to know which sectors are in parity and which are not.... imagine if you have a reboot in the middle of this process.
September 23, 200916 yr Author but you treat that sector as not in the system anymore so you don't have to zero it out. The other sectors are "still in the system" ... and you have no what to know which sectors are in parity and which are not.... imagine if you have a reboot in the middle of this process. I didn't say it was easy!
September 23, 200916 yr I don't think there is a great need for a second parity drive, The time involved in reading the data drive, reading parity, rewriting parity is going to be pretty fast. The time between having no parity while removing one drive via XORing it out and having no parity if has to be regenerated from scratch is going to be big. It all depends on how many drives are in the array. I would not want to require a second temporary parity drive to remove or add a drive. There really should be a way to fold (XOR) a drive in an out of parity (albeit one at a time). If this fails, then require a complete regenerate. If someone wants to protect themselves to the extra degree, copy the parity drive to a spare, or re-assign the parity drive and regenerate with only the drives you need. The caveat to this is the array may need to be in a stopped/quiesced state to minimize any issues and keep the operation as fast as possible.
September 23, 200916 yr There really should be a way to fold (XOR) a drive in an out of parity (albeit one at a time). No need to fold....just clear it by writing zeros, then when it is finished you can remove it.... and parity is preserved the entire time. But I agree completely that this should be built in.... it would be fairly trivial to do.
September 24, 200916 yr No, you do not go to all that to add the new drives to your new array. You can simply assign your existing data drives to the new array. If you remember which drive was the parity drive, make sure it is assigned the parity slot in the array. If you do not remember, do not initially assign a parity drive. All those you assign should show up when you start the array... (or rather NO drive should show as un-formatted) If you accidentally assign the parity drive as a data drive it will show as un-formatted. Just go back to the "Devices" page and correct the assignment. unRAID will recognize the prior file systems. You don't need to add your extra "pristine" disk, not unless you want to... (it will show as un-formatted) Your situation is exactly the same as if you press the button labeled as "restore" except on new hardware. Both replace the super.dat file and use the currently assigned and working drives to establish a new super.dat files and then proceed to compute parity based on those drives. Joe L. Joe, Great! Thanks alot for your answer, this will save me a bunch of time, obviously I did save my drive info, I have stickies and also the S/N's of each on where they were in the array, so I will be good when I get the new box.
Archived
This topic is now archived and is closed to further replies.