lsblk 和 fdisk 列出的不同分区

lsblk 和 fdisk 列出的不同分区

我在安装外部 WD 4TB USB HD 时遇到问题。它有两个 2GB 分区,一个是 NTFS,另一个是 exfat。这是我在 RPI4 上的备份磁盘,运行良好超过 5 年,直到昨天重启后无法安装。在不同系统上进行一些测试后,我将其从 WD MyBook 外壳中取出,并将其连接到通用外壳和我的主要 Linux 系统。我使用的是 EndeavourOS,但也尝试将其安装在 Raspbian 和 MacOS 上...

当我运行时,lsblk我得到了三个磁盘,但是 USB 驱动器(sda)没有显示其分区:

sda                    3,6T 
nvme1n1              931,5G 
├─nvme1n1p1 vfat       300M /boot/efi
└─nvme1n1p2 ext4     931,2G /
nvme0n1                1,8T 
└─nvme0n1p1 ext4       1,8T /media/nvme2tb

但如果我运行fdisk -l /dev/sda,我会得到分区(具有奇怪的大小):

Disk /dev/sda: 3,64 TiB, 4000753476096 bytes, 7813971633 sectors
Disk model:                 
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: dos
Disk identifier: 0x9f002533

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1               1     76805     76805  37,5M ee GPT
/dev/sda2           77056 488395263 488318208 232,8G  7 HPFS/NTFS/exFAT
/dev/sda3       488428032 976745983 488317952 232,8G  c W95 FAT32 (LBA)

Partition 1 does not start on physical sector boundary.

如果我尝试挂载它的任何分区,我会收到相同的错误,提示该分区不存在(它们不在我的 /dev/ 目录中):

sudo mount /dev/sda3 /media/test_drive -t vfat -o rw
mount: /media/test_drive: special device /dev/sda3 does not exist.
   dmesg(1) may have more information after failed mount system call.

dmesg没有表现出任何奇怪的事情:

[35454.834257] usb 2-4: new SuperSpeed USB device number 6 using xhci_hcd
[35454.850855] usb 2-4: New USB device found, idVendor=152d, idProduct=0562, bcdDevice=22.01
[35454.850861] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[35454.850862] usb 2-4: Product: External
[35454.850863] usb 2-4: Manufacturer: JMicron
[35454.850865] usb 2-4: SerialNumber: DD5641988389A
[35454.890676] scsi host6: uas
[35454.891235] scsi 6:0:0:0: Direct-Access     JMicron                   2201 PQ: 0 ANSI: 6
[35454.893866] sd 6:0:0:0: [sda] 7813971633 512-byte logical blocks: (4.00 TB/3.64 TiB)
[35454.893868] sd 6:0:0:0: [sda] 4096-byte physical blocks
[35454.894018] sd 6:0:0:0: [sda] Write Protect is off
[35454.894019] sd 6:0:0:0: [sda] Mode Sense: 53 00 00 08
[35454.894303] sd 6:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[35454.894742] sd 6:0:0:0: [sda] Preferred minimum I/O size 4096 bytes
[35454.894744] sd 6:0:0:0: [sda] Optimal transfer size 33553920 bytes not a multiple of preferred minimum block size (4096 bytes)
[35462.811048] sd 6:0:0:0: [sda] Attached SCSI disk

有没有其他测试/程序可以让我检查硬盘是否完全坏了?我希望至少能够恢复部分数据。

谢谢

答案1

您的案例有两个问题。首先,成功运行的配置失败。其次:

您陷入了所有即用型外部磁盘盒制造商在未警告用户的情况下准备的扇区大小陷阱。

您的 WD 外壳很可能包含一些模拟 4096 字节扇区大小的转换电子设备。

实际上,您的磁盘在硬盘接口处具有 512 字节的逻辑扇区大小,这会在 MBR 分区方案下将分区大小限制为 2 TB。通过添加模拟电子设备,您的磁盘将显示为扇区大小为 4096 字节的磁盘。此扇区大小甚至允许使用旧的 MBR 分区方案,从而使外部磁盘与旧版操作系统兼容。

为了验证这一说法,您可以将磁盘放回机箱,然后使用上述fdisk -l /dev/sda命令再次验证其扇区大小。然后它应该显示 4096 字节的大小。

将裸盘直接连接到计算机时,显示 512 字节的大小,计算机将在错误的位置(77056 乘以 512 字节而不是 77054 乘以 4096 字节)搜索第一个分区。使用 user1686 在上面的评论之一中提出的命令

[... 另外,您可以尝试 losetup -r -b 4096 -P -f /dev/sda,然后在生成的 /dev/loop 设备上运行 fdisk -l 吗?(单独运行 losetup 以确定它创建了哪个循环设备。)– user1686 ...]来源:user1686

这将创建一个额外的虚拟设备,该设备知道 4096 字节的初始扇区大小。

上述说明应该可以解释并解决您的第二个问题。至于您的第一个问题,

  1. 使用 smartmontools 将您的 SMART 参数读入文件中,然后将该文件发布到这里,以便快速检查可能存在的硬件问题。
  2. 使用 ddrescue 复制可能出现故障甚至死亡的磁盘。

如果您在接口处有一个逻辑扇区大小为 4096 字节的磁盘作为复制目标,只要您的原始 WD 外壳显示扇区大小为 4096 字节,则无需特殊技巧即可进行安装。

最后,您可以继续进行数据救援工作。

相关内容