If you have 'WD Red 10TB' or 'Seagate Exos 10TB' in a pool I need your help! (Clone of GPT/MBR)

theyost

Dabbler
Joined
Feb 24, 2019
Messages
30
If you have one of these drives in your pool please help!!!

Other 10TB drives might work but the specific hard drive model numbers I am looking for are:

Seagate Exos 10TB : ST10000NM0086-2AA101
and/or​
WD Red 10TB : WD100EFAX-68LHPN0

I will post detailed instructions below but if you have either of these drives in one of your pools I am hoping you can run a dd command to copy the first 1536 bytes of your drive to a file that you send to me. The code will look something like this:
Code:
dd if=/dev/da0 of=/media/da0.mbr.backup bs=512 count=3


Side Note: Below you will find me saying "the first 1536 bytes (GPT/MBR header)" a lot but according to this website the actual size of a GPT header should be 1280 bytes for a 2-partition GPT table. Remember I am posting these GPT/MBR headers on drives that start with a LOT more than 1280 bytes of nulls so I used 1536 bytes knowing there would be some overlap. This works for my drives but you might want to be a little careful when pasting on your drives

What happened / Why am I asking for this??

Back in February on a update/reboot FreeNAS was not able to find my pools. You can find my original thread trying to troubleshoot here: Unable to decrypt encrypted pools after reboot (GPT partitions gone on ALL drives?).

That thread/description is long so here is the shortened version:

I had two pools:

tenTB.spinners (12 10TB drives)... 2x 6-drive raid-z2 striped together | encrypted + password​
eightTB.spinners (3 8TB drives)... 1x 3-drive raid-z | encrypted + password​

On reboot FreeNAS could not find either pool. After a lot of troubleshooting I finally found out the problem was the GPT/MBR Partition Table was nulled out on all of my data drives. To give you an example of what I mean if I ran dd if=/dev/da0 of=/media/da0.mbr.dd1536.backup bs=512 count=3 the resulting file looked like this:
2020.07.04.at.10.33.19.ScreenShot.from.RYZEN-2700X.png


When it is supposed to look something like this:
2020.07.04.at.10.33.03.ScreenShot.from.RYZEN-2700X.png


The good news is I have already recovered the eightTB.spinners pool with the following steps:
  • Purchasing three identical/replacement drives
  • Create a new empty pool (3-drive raid-z, same as old pool)
  • Copy the GPT/MBR to small *.backup files (using dd command)
  • Destroy/Wipe this new pool (FreeNAS WebGUI)
  • Cloning the old drive data to the new drives (using dd command)
  • Put the original drives in a safe place
  • Copying the GPT/MBR from *.backup files to new drives (using dd command)
  • FreeNAS -> Pool -> Import worked without issue :)
I tried to use the same GPT/MBR *.backup file from the 8TB drives on the tenTB.spinners but unfortunately this does not work. I am pretty sure it has something to do with the drive size, sectors, etc. Unfortunately tenTB.spinners is made up of TWELVE 10TB drives so it would be pretty expensive to complete the same procedure as I did with eightTB.spinners .

So I ran some tests and here is what I learned:
  • The first 1536 bytes (GPT/MBR header) of a 8TB drive will NOT work with 10TB drives
  • If your pool is made up of identical drives... when you look at the first 1536 bytes (GPT/MBR headers) of each drive you will notice each one is slightly different, BUT you only really need one version. FreeNAS has no problem importing a pool even if all of the (same type of) drives start with the same 1536 bytes (GPT/MBR header).
  • If you take the first 1536 bytes (GPT/MBR header) from the first drive of a 3-drive, raid-z pool you can use that file and apply it to all the drives in a 12-drive, 2 x raid-z2 pool pool and FreeNAS will still be able to import (at least in a VirtualBox build... which different than real-world).
  • According to fdisk the Seagate Exos 10TB (ST10000NM0086-2AA101) & WD Red 10TB (WD100EFAX-68LHPN0) have the same cylinder count (1215865), heads (255), sectors/track=63 (16065 blks/cyl), etc, etc... very similar drives. Hopefully the GPT/MBR of one of these drives will work with the other.

If you are willing to help THANK YOU!!!

There are many different ways of completing this task here is what I would do:


1) SSH is probably the best way to get the files off your computer so you will probably want to turn it on:

FreeNAS WebGUI -> Services -> SSH (turn on)
... you will also want to click configure and select "Log in as root with password"
... <save>

2) Now if you have an SSH client (I use Putty when on Windows) you can use that to log in to your FreeNAS box as root. The nice thing about using an SSH client is you can usually cut & paste command (using right click in Putty). If you don't have an SSH client you can use the Shell that is built into the FreeNAS WebGUI.

3) Now lets find the appropriate da* number for the drive by typing dmesg | grep -iE "wd100efax|st10000nm0086" :
Code:
root@freenas[~]# dmesg | grep -iE "wd100efax|st10000nm0086"
da6: <ATA WDC WD100EFAX-68 0A83> Fixed Direct Access SPC-4 SCSI device
da10: <ATA WDC WD100EFAX-68 0A83> Fixed Direct Access SPC-4 SCSI device
da9: <ATA WDC WD100EFAX-68 0A83> Fixed Direct Access SPC-4 SCSI device
da7: <ATA WDC WD100EFAX-68 0A83> Fixed Direct Access SPC-4 SCSI device
da11: <ATA WDC WD100EFAX-68 0A83> Fixed Direct Access SPC-4 SCSI device
da4: <ATA ST10000NM0086-2A SN05> Fixed Direct Access SPC-4 SCSI device
da8: <ATA WDC WD100EFAX-68 0A83> Fixed Direct Access SPC-4 SCSI device
da2: <ATA ST10000NM0086-2A SN05> Fixed Direct Access SPC-4 SCSI device
da0: <ATA ST10000NM0086-2A SN05> Fixed Direct Access SPC-4 SCSI device
da1: <ATA ST10000NM0086-2A SN05> Fixed Direct Access SPC-4 SCSI device
da5: <ATA ST10000NM0086-2A SN05> Fixed Direct Access SPC-4 SCSI device
da3: <ATA ST10000NM0086-2A SN05> Fixed Direct Access SPC-4 SCSI device


Your list probably will be a lot shorter, but here you can find the 12 drives that make up tenTB.spinners that I am trying to recover. If my pool was still alive the first 1536 bytes of da0 through da11 would contain a valid copy of a GPT/MBR header.

4) I like to put the *.backup files in the /media folder so lets go there and use the 'dd' command to copy the header from one of these drives:
Code:
# I like to put the *.backup files in the /media folder so lets go there
root@freenas[~]#  cd /media

# Now use the 'dd' command to copy the first 1536 bytes
# If Seagate Exos (ST10000NM0086):
root@freenas[/media]#  dd if=/dev/da0 of=/media/da0.ST10000NM0086.mbr.dd1536.backup bs=512 count=3
# if WD Red (WD100EFAX):
root@freenas[/media]#  dd if=/dev/da6 of=/media/da6.WD100EFAX.mbr.dd1536.backup bs=512 count=3

# If you have more than one of these drives in your pool maybe spend the extra seconds to grab those as well??


5) Now you need to transfer the files off the FreeNAS box. I have used WinSCP for years... it is free (link).

6) Then you can hopefully message me the *.backup files :)

If you have any questions or concerns please let me know. I am really hoping someone out there is willing to complete these steps and hopefully I will finally be able to open this very large tenTB.spinners pool again

-Dave
 

theyost

Dabbler
Joined
Feb 24, 2019
Messages
30
I got a little impatient and I think in this case it worked out...

The tenTB.spinners was made up of twelve 10TB drives in the following configuration (2 x (6-drive raid-z2)). This meant I could pull out one 10TB drive from each VDEV and still have some redundancy.

This would give me two 10TB drives to work with and if the GPT header from a 2-drive mirrored pool could be used on a 2x(6-drive, raidz-2, degrated) pool I could dd-copy the headers and start the pool. I tested on a VirtualBox FreeNAS system and it worked so I thought I would give it a shot in the real world.

Great news... it worked :)
My tenTB.spinners is tagged as "DEGRATED" but the files are available!!!

More details later
 
Top