Adding 6tb parity but it is too small??


JohnnyT

Recommended Posts

I just finished building my array and got all my files copied. I was about to add my parity drive but it says it is not the largest disk. It is a 6tb hdd and I only have one other 6tb hdd on the array. The issue appears to be that the disk already in the array has 5,860,765,964 KB Partition Size while the drive I wanted to make parity is 5,860,522,532 KB. What is the best way to deal with this? I have no parity at the moment , how can I drop the 6tb hdd that is in the array and swap in the bigger one? Is there a quicker way to do this by just making the drive already in the array a little smaller?

Link to comment

Did you happen to harvest the smaller drive out of an external enclosure?  Sometimes manufacturers will toss an HPA partition onto those drives

 

Post the results after typing this in:

hdparm -N /dev/sdX

Change the X to be the identifier for the smaller drive  (you can also do this on one of the bigger drives).

 

And then we can move forward from there, either removing the HPA partition or doing a parity swap procedure to switch the data / parity drives around.

Link to comment

I ran it on both the drives and it did not return anything , same error.  I think one of these 6tb drives will be going back as it has some smart errors. What is the best way to drop a drive and add one without having to take my array offline the whole time? Here is the message I get when I run that command. I have the one 6tb drive at 97% full and have 3 smart errors, should I be worried?

 

5 Reallocated sector count = 25

187 Reported uncorrect = 2

197 Current pending sector = 2

 

root@davidFlix:~# hdparm -N /dev/sdh

 

/dev/sdh:

READ_NATIVE_MAX_ADDRESS_EXT failed: Input/output error

 

Link to comment

I ran it on both the drives and it did not return anything , same error.

 

/dev/sdh:

READ_NATIVE_MAX_ADDRESS_EXT failed: Input/output error

 

This usually means the controller used doesn't support that command.

 

 

What is the best way to drop a drive and add one without having to take my array offline the whole time?

 

Replace it with a spare a let unRAID rebuild the disk. Didn't notice you have no parity.

 

 

I have the one 6tb drive at 97% full and have 3 smart errors, should I be worried?

 

5 Reallocated sector count = 25

187 Reported uncorrect = 2

197 Current pending sector = 2

 

Pending sectors are never good, sometimes it can be a false positive, you can confirm by running an extended SMART test, if it fails it needs to be replaced.

Link to comment

This could take a while... but maybe it will give some ideas...

To start, pre-clear the drive you were going to use as parity (this is a good practice because if it was once was an external drive - any bad sectors will be remapped).

Next...

(For best results - stop your unRAID array)

Basically, swap the drives over... the larger one will be used as parity (currently part of the unRAID array )

Partition and format the cleaned drive with xfs.

mount the existing 6GB drive with all your data

mount the newly cleaned drive.

rsync all the data off the old drive to the newly prepared drive

(OCD... run rsync again... heh)

use http://tower/Tools/NewConfig and then add all your data disks to the array... I recommend not adding the other disk as parity at this stage

Once you are confident you have everything set up... preclear your old disk and simply add it as parity

Link to comment

I will give this a try and will report back, could be a while as transferring 6tb is not quick. To clarify I should do below.

 

1. Take array offline

2. Remove Large 6tb from array

3. Add Small 6tb to array - format etc

4. Mount Large 6tb

5. rysnc all data from mounted Large 6tb to array

6. Un-mount Large 6tb ,  add to array as parity

 

Is this what you are thinking or does my array need to be offline the whole time? I did run 2 passes of preclear on both drives before I put them in the system and with no issues. I did not see smart errors until the drive was full of data. I don't want to make this drive a parity drive if it is going to die.

Link to comment

In the OP you mentioned you don't have a parity disk currently. Is this because this is a completely new system and you haven't built parity on it yet? Does the larger 6TB have any data on it?

 

If you don't have parity, and the larger 6TB doesn't have any data that needs to be preserved, then we are over-complicating the problem. Just New Config and assign all you disks again the way you want them to be.

Link to comment

This is a new system and that is why I do no have parity. I just added all the drives and moved data to them and my last step was to add parity. It was all good until I realized my 6tb drive is smaller than the one already in the array. The drive currently in the array "6tb large" is full 97% usage. I could use unbalance to move the files off it or is there a better way? I have room in my array to move all of it's data off it to other drives. If I could I would like to keep my array up as much as possible while I do this. Thanks

Link to comment

This is a new system and that is why I do no have parity. I just added all the drives and moved data to them and my last step was to add parity. It was all good until I realized my 6tb drive is smaller than the one already in the array. The drive currently in the array "6tb large" is full 97% usage. I could use unbalance to move the files off it or is there a better way? I have room in my array to move all of it's data off it to other drives. If I could I would like to keep my array up as much as possible while I do this. Thanks

Since you don't have parity yet you could just assign the smaller 6TB as another data drive then copy all the data from the larger 6TB to the smaller 6TB using whatever method. Then you could New Config and reassign all the disks with the larger 6TB as parity.
Link to comment

Could I add the new drive to the array use unbalance to move all the files and then drop that drive? Is there a way to tell it not to do new writes to a specific drive while I unbalance all the files off it?

Dropping a drive is basically setting a New Config then rebuilding parity, which is what I suggested. Until you have built parity you might as well consider your array as reconfigurable.

 

As for unBalance been a while since I have used it. Maybe see its support thread. And there are other ways to copy/move files between disks.

Link to comment

Could I add the new drive to the array use unbalance to move all the files and then drop that drive? Is there a way to tell it not to do new writes to a specific drive while I unbalance all the files off it?

What trurl is suggesting involves copying all your files from the old drive to the new drive, not moving them.  If you copy all the files across then you can verify they made it safely.  Afterwards you can take the old 6TB drive out of its data drive position and move it into the parity position.  At that point all the data on it will be overwritten with parity information.  Nothing should write more data to your old disk while this is happening since it is already 97% full.

 

Reusing the technique from this thread, this is how you'd copy the data from one drive to another drive:

  rsync -rcvPX  /mnt/disk1/ /mnt/disk6/

Where disk1 is your old disk and disk 6 is your new disk (replace 1 and 6 with your actual device #s where 1 is the old drive and 6 is the new one).

 

There are two things to consider here.  First, make sure you use disk shares and not user shares.  Second, if disk1 is larger and already at 97% capacity it's unclear whether disk6 has enough room to store everything.  You might want to manually move some files between disk shares or use Unbalance for a little fine tuning first and then rsync for the full move.  Or you can probably just use Unbalance for the whole thing, but you then you have to prevent things like Dockers from writing to disk1 in the meantime.  If you go the rsync route either do it from the console or use screen for a persistent session.

 

Link to comment

OK, here is what I have done so far.

 

1. Added "6tb Small" to the array.

2. Shutdown all docker apps.

3. Copied appdata , domains , system , isos , system from disk14 "6tb large" to disk14 "6tb small"

              a. nohup rsync -rcvPX /mnt/disk6/appdata /mnt/disk14 &  "this is an example of what I ran, did it for each folder"

              b. I am using nohup so that I can use tail -f on the nohup.out and let if run without needing to stay ssh'd into the server or worry about disconnects.

4. Once those all copied I changed the name of each folder to appdataold , domainsold etc. etc. So I can keep the drive full but not use data from it. Not sure if this is right but it worked.

5. I then started up all my dockers and everything was working and looked good.

6. I then shut all dockers back off except for plex as it will not be writing tons of new data and I WANT MY PLEX

7. Now I am in the process of copying TV_Shows and Movies to disk14 using the same rsync command.

 

Once I get these copied I will run the command again to double check. Once all is good I will drop disk6 from my array and then re-add it as a parity drive. Thanks for all the help. Let me know if what I am doing is crazy. For now it all seems good. I am really surprised there is not a feature in unraid to drop a drive and have it auto disperse it's data to other drives. Or at least lock a drive so there are not more writes to it. I used drivebender in windows for a long time and it has some great features that would be nice to see in unraid.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.