为什么我的硬盘不显示为块设备?

为什么我的硬盘不显示为块设备?

我的外部硬盘驱动器显示在另一台运行 Arch Linux 的计算机上,尽管在 Debian 11 上该设备未显示在fdisk或中lsblk

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 119.4G  0 disk 
├─mmcblk0p1 179:1    0   256M  0 part /boot
└─mmcblk0p2 179:2    0 119.1G  0 part /

$ sudo fdisk -l
### /dev/ram* output has been removed.
Disk /dev/mmcblk0: 119.38 GiB, 128177930240 bytes, 250347520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8e94f125

Device         Boot  Start       End   Sectors   Size Id Type
/dev/mmcblk0p1        8192    532479    524288   256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      532480 250347519 249815040 119.1G 83 Linux

USB 集线器显示在lsbusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

最后,dmesg出现 I/O 错误:

$ dmesg | tail
[  358.698270] sd 0:0:0:0: [sda] tag#2 CDB: opcode=0x28 28 00 0d 06 37 90 00 00 01 00
[  358.698274] blk_update_request: I/O error, dev sda, sector 218511248 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[  358.698328] sd 0:0:0:0: [sda] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x07 driverbyte=DRIVER_OK cmd_age=5s
[  358.698337] sd 0:0:0:0: [sda] tag#0 CDB: opcode=0x28 28 00 0d 06 37 91 00 00 1d 00
[  358.698342] blk_update_request: I/O error, dev sda, sector 218511249 op 0x0:(READ) flags 0x80700 phys_seg 29 prio class 0
[  358.698376] blk_update_request: I/O error, dev sda, sector 218511250 op 0x0:(READ) flags 0x80000 phys_seg 28 prio class 0
[  358.698432] blk_update_request: I/O error, dev sda, sector 218511248 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[  358.721185] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[  358.960749] sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=0x07 driverbyte=DRIVER_OK
[  358.961333] xhci_hcd 0000:01:00.0: WARN Can't disable streams for endpoint 0x81, streams are being disabled already

以前运行得很好,虽然我改用了btrfs,但后来就不再出现了。此外:

  • 在 Debian 和 Arch Linux 机器上,我都使用 SATA 转 USB 适配器。
  • 两个驱动器都是 500 GB 驱动器(过去与适配器配合良好)。

我怎样才能让我的驱动器出现任何帮助或建议,谢谢!

答案1

如果驱动器仍然在使用相同 SATA 转 USB 适配器的 Arch 系统中工作,则 Debian 系统的硬件可能根本无法为 HDD 提供足够的电力来正常运行。

输出中的错误消息dmesg是块级错误:文件系统类型的选择不应该在该级别产生差异(除非理论上一种文件系统类型要求驱动器比另一种文件系统类型进行更多的读/写头移动,从而导致磁盘消耗更多电量 - 但这也会使得该文件系统类型在 HDD 上的表现不佳)。

您可以尝试在 Debian 系统和驱动器之间引入一个具有自己电源的 USB 集线器。这可能允许驱动器从集线器的电源中获取更多电力,而不是依赖 Debian 系统自己提供的电力。

如果驱动器以前适用于两个系统,但现在不适用于任何一个系统,则外部驱动器可能已磨损或遭受了一些物理损坏:外部 HDD 很容易损坏,例如,如果它们所在的包掉落,或外部硬盘被硬物碰撞。

也有可能,以前驱动器从 Debian 系统获得的电力勉强够用,随着时间的推移,轴承的机械磨损导致驱动器需要稍微多一点的电力……但 Debian 系统却不能还供应什么。

相关内容