Hi All,
I have a 4TB drive that was originally in a PC connected via SATA. I now wish to put it in an external enclosure and connect it via USB, however this is proving more difficult than I expected, and from what I understand it's Windows XP's fault.
On attempting to mount the drive with sudo mount /dev/sdc /mnt
, I receive the following error:
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdc, missing codepage or helper program, or other error.
The output of fdisk -l
is as follows:
Disk /dev/sdc: 3.64 TiB, 4000787025920 bytes, 976754645 sectors
Disk model: Expansion Desk
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sdc1 1 4294967295 4294967295 16T ee GPT
As can be seen, the disk is detected correctly as a 3.64TiB drive, but there is a partition that's read as 16TB. This, AFAIK, is because the sectors are incorrectly read as 4096 bytes long when they should be 512 bytes, and this is a thing that external enclosures do to ensure MBR compatibility with Windows XP.
I tried overcoming this by mounting as follows:
$ sudo mount -o ro,offset=$((1*512)) /dev/sdc1 /mnt
however now I have a new error:
mount: /mnt: failed to setup loop device for /dev/sdc1.
Trying to mount with sudo mount /dev/sdc1 /mnt
only yields
mount: /mnt: special device /dev/sdc1 does not exist.
I'm at a loss as to how to mount this drive - at least, without reformatting it. Is it at all possible? Once I've cracked the code, can I configure /etc/fstab
to do it automatically for me, or am I stuck in this limbo-land where I have data on my disk that's only readable with a hacky workaround? As a last resort, I think I can plug it back in via SATA, copy all 4TB off, plug it in via USB, reformat it and copy everything back on, but I want to avoid that hassle.
Edit: Output of fdisk -l
when connected via SATA. Note the sector size is now 512 and the drive mounts happily.
Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: HGST HDN724040AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 5852E3A7-A2E4-4589-9D93-F8020C2D7E54
Device Start End Sectors Size Type
/dev/sdb1 2048 7814035455 7814033408 3.7T Linux filesystem
I think the first time you are trying to mount the drive and not the partition "sudo mount /dev/sdc /mnt" and on the second and third attempt have the sdc1 right, but need to make a folder under mnt to mount the drive onto. Make a folder like 'tempdrive' under /mnt and then try it with this since you said it was an ext4 filesystem. Note, you can name it whatever you want I just picked that as an example:
cd /mnt
sudo mkdir tempdrive
sudo mount /dev/sdc1 /mnt/tempdrive
If it doesn't recognize the filesystem then use -t
sudo mount -t ext4 /dev/sdc1 /mnt/tempdrive
And yes, once you get it down, an fstab entry will make this mount every time, but I would use the uuid in the fstab. I have two mounted on a machine like this in my /etc/fstab:
UUID="6a95603a-2112-4c4d-ad4d-e146e646a74a" /media/largedrive ext4 auto,nofail,noatime,rw,user 0 0
UUID="3E31-540B" /media/new4tbdrive exfat auto,nofail,noatime,rw,user 0 0