为什么我的磁盘忽略对某些扇区的擦除和写入命令?

为什么我的磁盘忽略对某些扇区的擦除和写入命令?

我对 SSD 进行了 ATA 安全擦除(使用 SystemRescueCD 和hdparm)。磁盘的某些部分被重置为零,但某些部分没有。特别是,Windows Vista 分区的 MBR 和引导扇区被清零,但 Windows 7 分区的引导扇区完全未受影响。增强型安全擦除会产生相同的结果。

在删除分区表之前,Windows 7 分区是扩展分区(即 /dev/sda6)内的第二个逻辑分区。我尝试使用 dd 将其引导扇区清零:

dd if=/dev/zero of=/dev/sda bs=512 skip=184252416 count=1
dd if=/dev/sda bs=512 skip=184252416 count=1 | hexdump -C

命令成功返回,但是扇区仍未改变,好像写入请求被完全忽略了。

在 SSD 被擦除之前,它完全可以正常工作。擦除之后,它通过了 SMART 扩展离线自检,所以我相信它仍然可以正常工作。

我搜索了 BIOS 选项,但找不到任何与写保护相关的选项。TPM 模块已停用。磁盘未加密。

知道为什么磁盘可能会忽略擦除和写入命令吗?

  • 系统:戴尔 Latitude E4200
  • BIOS 版本:A19
  • SSD 型号:SAMSUNG SSD Thin uSATA 128GB M(我相信它是一张 mini PCIe 卡)
  • SSD 固件版本:VAM05D1Q(我找不到任何更新)
  • SATA 模式:尝试了 AHCI 和 ATA

答案1

有两个选项可以dd跳过块。来自手册页:

seek=N 在输出开始时跳过 N 个 obs 大小的块

skip=N 在输入开始时跳过 N 个 ibs 大小的块

因此,第一个命令从/dev/zero(用零填充)读取块 184252416,并将其写入 上的块 0。/dev/sda第二个命令从 上的(未触及的)块 184252416 读取/dev/sda

第一个命令应该是:

dd if=/dev/zero of=/dev/sda bs=512 seek=184252416 count=1

从 读取一个块/dev/zero,寻找 上的块 184252416 /dev/sda,然后写入它。

相关内容