June 16, 201016 yr I was following this thread http://lime-technology.com/forum/index.php?topic=2591.msg20919#msg20919 To remove the old drive from the system. However.. I go to the point where I was about to hit the restore button... But there is no restore button anymore. It's only giving me the option to start Start will disable the missing disk and then bring the array on-line. The disk's data will be available, but the array will be unprotected; install a new disk as soon as possible. What do I do?
June 16, 201016 yr Author I just figured out that they removed the restore button in one of the later versions! I think some forum posts need to be updated! I think there are several that refer to "Restore" button. The new command from the command line is initconfig
June 16, 201016 yr I was following this thread http://lime-technology.com/forum/index.php?topic=2591.msg20919#msg20919 To remove the old drive from the system. However.. I go to the point where I was about to hit the restore button... But there is no restore button anymore. It's only giving me the option to start Start will disable the missing disk and then bring the array on-line. The disk's data will be available, but the array will be unprotected; install a new disk as soon as possible. What do I do? The button labeled as "restore" has been removed. (you knew that) it was replaced with a command you can invoke at the command line: initconfig Typing that command is exactly like pressing the old button. The label on the old button was misleading and caused some users to lose data when they were attempting to re-construct a failed disk. Instead, the button immediately deleted their existing disk configuration and immediately invalidated parity. That is NOT what they needed when they had a failed drive as it prevented them from re-constructing the old drive's contents. Immediately after typing initconfig you can then issue the /root/mdcmd set invalidslot 99 command.
July 25, 201015 yr So... Right now I have a drive that I wish to remove from my array. This drive that I want to remove has no data. If I understand this procedure properly, I do the following: 1) Stop the array 2) From the Devices tab, remove the device 2.1) At this point the drive will show as 'Missing' on the Main tab. 3) Telnet to the server 3.1) Issue an 'initconfig' command to simulate a press of the (now missing) 'Restore' button. 3.2) Issue a '/root/mdcmd set invalidslot 99' to tell Unraid that parity is still good. 4) Restart the array. I did read this whole thread, and the other thread that was refereneced in the first post. I don't understand the purpose of writing zero's to the drive. In my case, the drive is empty. Do I still need to do this to protect parity and prevent a parity rebuild?
July 25, 201015 yr So... Right now I have a drive that I wish to remove from my array. This drive that I want to remove has no data. If I understand this procedure properly, I do the following: 1) Stop the array 2) From the Devices tab, remove the device 2.1) At this point the drive will show as 'Missing' on the Main tab. 3) Telnet to the server 3.1) Issue an 'initconfig' command to simulate a press of the (now missing) 'Restore' button. 3.2) Issue a '/root/mdcmd set invalidslot 99' to tell Unraid that parity is still good. 4) Restart the array. I did read this whole thread, and the other thread that was refereneced in the first post. I don't understand the purpose of writing zero's to the drive. In my case, the drive is empty. Do I still need to do this to protect parity and prevent a parity rebuild? NO.... No... you missed a very important step. You must write zeros to every byte of the drive that will be removed BEFORE you remove it from the array. If you proceed they way you do your parity will be completely useless. The first time a parity check is done it will be corrected, but until then it will not be able to reconstruct ANY drive. Even though the drive is "empty" of files there are thousands of blocks written to when it is formatted. The entire drive mist be zeroed before removing it. Joe L.
July 25, 201015 yr OK. I think I understand. Writing Zero's to the drive will essentially remove a drives participation from Parity and leave Parity intact for the remaining drives. Let me try one more time: 1) Telnet to the server 2) Unmount the drive to be removed with the following command (where ? is Unraid disc number) 2.1) umount /dev/md? 2.1) At the point the drive will show as "Unformatted" 3) Write Zero's to the drive with the following command: 3.1) dd if=/dev/zero bs=2048k of=/dev/md? 3.2) Wait for a very long time until the process is finished. 4) Stop the array 5) From the Devices tab, remove the device 5.1) At this point the drive will show as 'Missing' on the Main tab. 6) Telnet to the server 6.1) Issue an 'initconfig' command to simulate a press of the (now missing) 'Restore' button. 6.1.1) You will see the following prompt at the telnet command line: This will rename super.dat to super.bak, effectively clearing array configuration. The array must be in the Stopped state and it is up to you to confirm this. Are you sure you want to proceed? (type Yes if you do): 6.1.2) Type 'Yes' and hit enter. 6.1.3) At this point all your drives will be blinking BLUE and Unraid is waiting for you to press the Start Button. BUT Don't press the Start Button YET... (I think) if you do that a Parity Sync will start. The whole point of this exercise it to Avoid A Parity Sync. 6.2) Issue a '/root/mdcmd set invalidslot 99 ' to tell Unraid that parity is still good. 6.2.1) You should see the following response: cmdOper=set cmdResult=OK 7) Shut down the server Remove the drive. 9) Power up the server. 10) Restart the array. At this point you will notice that a Parity Check has started. This is Good. What I totally avoided is a Parity Sync. So... Even though this process took a long time to complete (in my case 16.8 hours to write zeros to a 1.5TB drive) I managed to remove a drive from the array without loosing parity at all. And... This was the goal. I tested this procedure and the only problem I ran into was at step #5. When I removed the drive on the Devices tab, the web interface hung in a 'waiting' state. After refreshing the browser a couple of times and then waiting for 30 minutes... I simply issued a 'powerdown' command in a telnet window and then powered the server back on. From that point everything progressed as I expected.
August 16, 201015 yr Excellent info here. Which I had seen this before I rebuilt parity Quick question, if its gonna take a very long time to zero the drive, why not just rebuild parity once the drive has been removed? Does zeroing the drive take less time? Or does building the parity drive put unnecessary stress on the drives? or ?
August 16, 201015 yr Excellent info here. Which I had seen this before I rebuilt parity Quick question, if its gonna take a very long time to zero the drive, why not just rebuild parity once the drive has been removed? Does zeroing the drive take less time? Or does building the parity drive put unnecessary stress on the drives? or ? The reason is simple. If you elect to rebuild parity you lose parity protection until it is completely rebuilt. ( depending on your array this could be 10 or more hours ) During this time, if a disk were to fail, there would be no way to recover its data. If you elect to zero the drive before removing it from the array, using this procedure, then you have continual parity protection from a drive failure. It will take more time than just doing an initial parity calculation, and there are manual steps involved, but if you are paranoid about losing data, it might work for you. (Of course, if you are that paranoid, you best have your precious files backed up off-site, since a single power-surge/lightning strike/flood/tornado/mischievous-child, etc can destroy your server and all the data in it. ) Joe L.
August 26, 201015 yr OK. I think I understand. Writing Zero's to the drive will essentially remove a drives participation from Parity and leave Parity intact for the remaining drives. Let me try one more time: 1) Telnet to the server 2) Unmount the drive to be removed with the following command (where ? is Unraid disc number) 2.1) umount /dev/md? 2.1) At the point the drive will show as "Unformatted" 3) Write Zero's to the drive with the following command: 3.1) dd if=/dev/zero bs=2048k of=/dev/md? 3.2) Wait for a very long time until the process is finished. 4) Stop the array 5) From the Devices tab, remove the device 5.1) At this point the drive will show as 'Missing' on the Main tab. 6) Telnet to the server 6.1) Issue an 'initconfig' command to simulate a press of the (now missing) 'Restore' button. 6.1.1) You will see the following prompt at the telnet command line: This will rename super.dat to super.bak, effectively clearing array configuration. The array must be in the Stopped state and it is up to you to confirm this. Are you sure you want to proceed? (type Yes if you do): 6.1.2) Type 'Yes' and hit enter. 6.1.3) At this point all your drives will be blinking BLUE and Unraid is waiting for you to press the Start Button. BUT Don't press the Start Button YET... (I think) if you do that a Parity Sync will start. The whole point of this exercise it to Avoid A Parity Sync. 6.2) Issue a '/root/mdcmd set invalidslot 99 ' to tell Unraid that parity is still good. 6.2.1) You should see the following response: cmdOper=set cmdResult=OK 7) Shut down the server Remove the drive. 9) Power up the server. 10) Restart the array. At this point you will notice that a Parity Check has started. This is Good. What I totally avoided is a Parity Sync. So... Even though this process took a long time to complete (in my case 16.8 hours to write zeros to a 1.5TB drive) I managed to remove a drive from the array without loosing parity at all. And... This was the goal. I tested this procedure and the only problem I ran into was at step #5. When I removed the drive on the Devices tab, the web interface hung in a 'waiting' state. After refreshing the browser a couple of times and then waiting for 30 minutes... I simply issued a 'powerdown' command in a telnet window and then powered the server back on. From that point everything progressed as I expected. Are these steps correct? I need to do this right now. I actually need to go one step further in that the empty drive being removed from Array #1 will be added to Array #2. Since it's been zero'd out does that make adding it to the other array easier?
August 29, 201015 yr OK. I think I understand. Writing Zero's to the drive will essentially remove a drives participation from Parity and leave Parity intact for the remaining drives. Let me try one more time: 1) Telnet to the server 2) Unmount the drive to be removed with the following command (where ? is Unraid disc number) 2.1) umount /dev/md? 2.1) At the point the drive will show as "Unformatted" 3) Write Zero's to the drive with the following command: 3.1) dd if=/dev/zero bs=2048k of=/dev/md? 3.2) Wait for a very long time until the process is finished. 4) Stop the array 5) From the Devices tab, remove the device 5.1) At this point the drive will show as 'Missing' on the Main tab. 6) Telnet to the server 6.1) Issue an 'initconfig' command to simulate a press of the (now missing) 'Restore' button. 6.1.1) You will see the following prompt at the telnet command line: This will rename super.dat to super.bak, effectively clearing array configuration. The array must be in the Stopped state and it is up to you to confirm this. Are you sure you want to proceed? (type Yes if you do): 6.1.2) Type 'Yes' and hit enter. 6.1.3) At this point all your drives will be blinking BLUE and Unraid is waiting for you to press the Start Button. BUT Don't press the Start Button YET... (I think) if you do that a Parity Sync will start. The whole point of this exercise it to Avoid A Parity Sync. 6.2) Issue a '/root/mdcmd set invalidslot 99 ' to tell Unraid that parity is still good. 6.2.1) You should see the following response: cmdOper=set cmdResult=OK 7) Shut down the server Remove the drive. 9) Power up the server. 10) Restart the array. At this point you will notice that a Parity Check has started. This is Good. What I totally avoided is a Parity Sync. So... Even though this process took a long time to complete (in my case 16.8 hours to write zeros to a 1.5TB drive) I managed to remove a drive from the array without loosing parity at all. And... This was the goal. I tested this procedure and the only problem I ran into was at step #5. When I removed the drive on the Devices tab, the web interface hung in a 'waiting' state. After refreshing the browser a couple of times and then waiting for 30 minutes... I simply issued a 'powerdown' command in a telnet window and then powered the server back on. From that point everything progressed as I expected. Are these steps correct? I need to do this right now. Yes BUT... it is only necessary to go through this is you insist on keeping parity protection throughout the entire process. It is NOT the normal way of removing a drive from an array. (Normal way is stop array, un-assign drive, type initconfig, start array, wait for new initial parity calc to complete) I actually need to go one step further in that the empty drive being removed from Array #1 will be added to Array #2. Since it's been zero'd out does that make adding it to the other array easier? No, it does not, other than any sectors pending re-allocation would have been re-allocated when the zeros were written to the drive. It is NOT the equivalent of pre-clearing it as it does not have a pre-clear signature.
December 7, 201213 yr Sorry to bump this old topic, but I have been just looking on how to do the same and think it may be good to share my findings... I did found it to be really easy to do on latest beta using the following steps: - move all data out of the drive that will be removed - stop the array - start the array in "Maintenance mode" (or manually unmount the disk to be removed like on original steps) - zero the drive that will be removed, on telnet using something like: dd if=/dev/zero bs=2048k of=/dev/mdX wait it to finish... - stop the array - reset the array at Utils -> New Config - reassign all hard disks except the one to be removed - make sure to enable the option "Parity is already valid" and start the array... parity-check will run and should end with 0 errors found Think it is a lot safer to remove a drive this way than just recalculating whole parity and thus unprotecting the whole array during the operation...
Archived
This topic is now archived and is closed to further replies.