为什么 fdisk -l 不显示所有连接的驱动器?

为什么 fdisk -l 不显示所有连接的驱动器?

我发现其他人启动的无数线程无法从设备启动,因为它们使用了错误的 SATA 配置。让我向你保证这不是我的问题。

我在一家公司的 IT 部门工作,我有需要擦除的 SSD。我已经创建了自己的 Ubuntu 机器,并配有dcflddhdparm(即使我物理上损坏了 HDD)。我有几个连接到计算机的 USB 转 SATA 读卡器,可以轻松交换要擦除的连接驱动器。

我们擦除的所有 SSD 最初都是在 SATA AHCI 配置中进行映像的。当我在终端中运行时,fdisk -l我偶尔会遇到未列出的 SSD。

我已断开驱动器的连接并在不同的 SATA 读卡器中尝试它们,但得到了相同的结果。 SSD 上的 SATA 针脚没有损坏或弯曲。我尝试使用该命令hdparm -I /dev/(drive)来尝试查看驱动器的信息,以查看它是否已锁定/冻结/等,但该命令失败。

互联网搜索没有产生关于如何解决/修复我遇到的问题或强制擦除连接的驱动器的结果,尽管它未被系统识别。


对于任何可能偶然发现这个问题的数据专家,我谨提出以下两个请求:

  1. 我很想学习为什么某些驱动器无法识别并且无法访问。如果这可能是由于驱动器故障造成的,我可以采取措施来验证这一点吗?
  2. 擦除这些未被识别的驱动器的替代方法是什么?我需要安全地清除公司数据。能够验证数据是否被破坏是一个优势。

编辑: 我不想让任何人感到困惑。我遵循美国政府的协议并使用命令

for n in 'seq 7'; do dcfldd if=/dev/urandom of=/dev/destination bs=8b conv=notrunc; done

使驱动器的数据不可恢复。同样,问题是/dev/sdaUbuntu,驱动器/dev/sdb - /dev/sdf是我要擦除的 SSD。有时,没有列出任何数量的这些驱动器,因此我用来擦除它们的命令对它们没有任何作用。使用这种性质的命令不能替代我当前用于擦除驱动器的方法。

此外,将这些驱动器直接连接到主板上的 SATA 电缆并不能使它们被任何实时启动 USB 识别。

答案1

fdisk是一个用户空间工具,如果内核无法识别设备则fdisk无能为力。连接磁盘后,检查dmesgjournalctl,您应该看到类似以下内容

kernel: scsi 3:0:0:0: Direct-Access     ATA      Samsung SSD 860  2B6Q PQ: 0 ANSI: 5
kernel: sd 3:0:0:0: Attached scsi generic sg0 type 0
kernel: ata4.00: Enabling discard_zeroes_data
kernel: sd 3:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
kernel: sd 3:0:0:0: [sda] Write Protect is off
kernel: sd 3:0:0:0: [sda] Mode Sense: 00 3a 00 00
kernel: sd 3:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
kernel:  sda: sda1
kernel: sd 3:0:0:0: [sda] Attached SCSI disk

还应该创建/dev/sdX节点和 sysfs 目录。/sys/block/sdX此时 UDev 和使用它的工具就像lsblk应该能够将其识别为磁盘并且将尝试使用它(检查分区/文件系统等)。

如果你看到类似的东西

kernel: print_req_error: I/O error, dev sda, sector 0
kernel: Buffer I/O error on dev sda, logical block 0, async page read

这通常很好地表明磁盘出现问题。这并不一定意味着它完全损坏,它仍然可能是控制器或电缆的问题,并不意味着其中的数据无法恢复。因此,如果您没有设备节点 ( /dev/sdX) 并且需要确保数据已从中“擦除”,我想您需要物理销毁磁盘才能 100 % 确定(但我不知道是什么)正确的政府流程)。

您可以随时尝试将磁盘连接到不同的系统或使用 USB 外壳,如 @schrodigerscatcuriosity 建议的那样。这至少可以消除一些电缆或主板 SATA 控制器问题。

相关内容