Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Remove Drive Without Losing Parity question...

Featured Replies

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?

 

  • 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

 

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.

 

 

  • 1 month later...

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?

 

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.

Hey, Joe, this would make a good plugin.  :P

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

8) 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.

 

 

  • 3 weeks later...

I made some slight updates to the original instructions to help future users.

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 ?

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.

Thanks much Joe.L . As always clear and concise.

  • 2 weeks later...

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

8) 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?

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

8) 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.
  • 2 years later...

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.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.