this post was submitted on 27 Jan 2024
48 points (91.4% liked)

Linux

48129 readers
415 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
48
submitted 9 months ago* (last edited 9 months ago) by i_am_hiding@aussie.zone to c/linux@lemmy.ml
 

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
all 26 comments
sorted by: hot top controversial new old
[–] taladar@sh.itjust.works 11 points 9 months ago

Your fdisk output shows a single partition of type ee which according to https://en.wikipedia.org/wiki/GUID_Partition_Table is the type for the protective MBR partition shown by MBR tools when looking at GPT partition tables.

Try using gdisk -l instead of show the GPT partition table.

[–] kool_newt@lemm.ee 5 points 9 months ago

Just throwing some thoughts out there

  • fdisk shows /dev/sdc1 and mount doesn't see it -- did you perhaps unplug it and replug it causing potential renumeration?

  • Use the dmesg command to watch Linux detect the device

  • Use cat /proc/partitions to see the kernels view of storage devices

  • Check out the /dev/disk/by-label, /dev/disk/by-uuid, /dev/disk/by-partlabel etc and see how the point to each other

e.g.

$ ls -l /dev/disk/by-partlabel/arch-root lrwxrwxrwx 1 root root 10 Jan 25 19:46 /dev/disk/by-partlabel/arch-root -> ../../sda2

[–] yannic@lemmy.ca 4 points 9 months ago

I have no experience in this specific matter, but you could look up how to switch the sector size from 512 bytes to 4096 and, you know, just do the opposite.

[–] abominable_panda@lemmy.world 4 points 9 months ago (1 children)

Commenting because id also like to know.

In my case I resorted to using another enclosure/ adapter

[–] i_am_hiding@aussie.zone 1 points 9 months ago (1 children)

The only enclosure I have that works out of the box is one of those "SATA to USB adaptors" rather than a bona fide "3.5 inch drive enclosure". It's not ideal for long-term use.

I wonder if there's a place to find out if any given make/model of enclosure will report the sector size as 512 bytes. Then, presumably, one could purchase an enclosure off that list and be confident the disk will be readable.

[–] abominable_panda@lemmy.world 1 points 9 months ago

I dont know either. I used a seagate usb to sata adapter too and that gave me problems with large drives. Nothing on the datasheet mentioned anything, so i had an old backup external drive and swapped the drives to do my formatting/ transfer before putting the original back together

[–] FigMcLargeHuge@sh.itjust.works 4 points 9 months ago* (last edited 9 months ago)

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

[–] walden@sub.wetshaving.social 3 points 9 months ago (1 children)

How is the disk formated? NTFS?

[–] i_am_hiding@aussie.zone 2 points 9 months ago (1 children)
[–] JoMiran@lemmy.ml 1 points 9 months ago (1 children)

So you reformatted the disk after you pulled it from the XP machine?

[–] i_am_hiding@aussie.zone 1 points 9 months ago (1 children)

It's never been in a Windows machine.

[–] ReversalHatchery@beehaw.org 4 points 9 months ago* (last edited 9 months ago) (1 children)

Sorry man, I'm reading the comments and it seems as if nobody has read the post, and that people completely misunderstand details. What the hell is it with people. I don't have a solution for you, but I feel your pain.

[–] i_am_hiding@aussie.zone 1 points 9 months ago

Haha thanks. I think it's a lost cause! Perhaps I shouldn't have worded the post the way I did.

[–] KrapKake@lemmy.world 2 points 9 months ago* (last edited 9 months ago) (1 children)

Did you try simply mounting /dev/sdc1 without the extra arguments? You also need to make a mount folder in /mnt, so

sudo mkdir /mnt/mydrive

Then

sudo mount /dev/sdc1 /mnt/mydrive

[–] i_am_hiding@aussie.zone 1 points 9 months ago

Yes, the last code block in my OP shows the result of attempting to mount /dev/sdc1 normally: mount: /mnt: special device /dev/sdc1 does not exist.

Though I do not believe it is required as I can mount other drives to /mnt just fine, I have attempted to make /met/tmp and mount there to no avail.

[–] lemmyreader@lemmy.ml 1 points 9 months ago* (last edited 9 months ago)

Few years ago I had a collection of maybe fifteen old disks, which I wanted to get rid of, by means of recycling. First I wanted to check the content and then format all so I put them in an external enclosure. It turned out that some disks were unusable. A closer inspection showed that these were all a certain brand and type (Forgot whether it was Seagate or Maxtor or WD). These disks would probably still do fine in a desktop or server computer (Which I no longer had at home) but not with the external enclosure. Perhaps your enclosure is the bottleneck here as well.

[–] yo_scottie_oh@lemmy.ml 1 points 9 months ago (1 children)

Have you tried any GUI tools, e.g. Gnome Disks?

[–] i_am_hiding@aussie.zone 2 points 9 months ago (1 children)

No - I've been working on a headless server, and ideally I need this thing to be written into /etc/fstab and work reliably from the command line. I could plug the drive into my laptop to have a look in some GUI tools if you think there's one around that can circumvent the sector size mismatch, but in the end I'll need a CLI method.

[–] yo_scottie_oh@lemmy.ml -2 points 9 months ago

Gotcha. Worst case, if you can mount it using any tool (GUI or CLI), then maybe you can copy its contents to another drive, reformat it, and copy the contents back.

[–] BCsven@lemmy.ca 0 points 9 months ago* (last edited 9 months ago)

Looks like ee is legacy mbr type with an EFI entry right after it, it could be that somebody has solved mounting this if you deep dive. And maybe an additional package is needed. Buy are you able to remount to sata and just transfer data? becuase you would want to reformat this to a modern GPT and filesystem at some point. Or see if you can pass it through to an XP VM for data transfer.

[–] possiblylinux127@lemmy.zip 0 points 9 months ago (1 children)

Why were you using Windows XP? I don't think it was even optimized for such large drives

[–] i_am_hiding@aussie.zone 1 points 9 months ago (1 children)

I'm not using Windows. I run Debian on this server.

The bulk of external enclosures that money can buy tell the computer they're plugged into that the disks have logical sector sizes of 4096 bytes, apparently for compatibility with >2TB drives on Windows XP.

I do not need compatibility with Windows XP as the current year is 2024. My disk has logical sectors 512 bytes in size, but the external enclosures don't report that. I want to know how I can mount the disk anyway, despite the enclosure's attempts to thwart me. I know the disk is fine, as it is detected with 512 byte sectors and mounts happily via SATA.

[–] z00s@lemmy.world 1 points 9 months ago (1 children)

Do you really need 512 byte sectors for any specific reason? If not, just drop it back into the PC, backup contents, reformat, copy data back then put it back in the enclosure. Job done.

[–] i_am_hiding@aussie.zone 1 points 9 months ago (1 children)

I suspect this is what I'll have to do. I was hoping to avoid it as that'll take a weekend of copying, but I might just have to bite the bullet.

[–] z00s@lemmy.world 0 points 9 months ago

An entire weekend just to copy 4 TB?