该驱动器当前位于 NTFS 中。运行chkdsk
几个小时后,我找到了坏扇区的位置(下图)。我想在 EXT4 中重新格式化磁盘。我听说 EXT4 有某种元数据来标记坏扇区,并且有一个实用程序,但我不想再运行几个小时的测试。我可以直接告诉 EXT4 我已经找到的坏扇区位置chkdsk
吗?
Stage 4: Looking for bad clusters in user file data ...
Read failure with status 0xc000009c at offset 0x280036f1000 for 0x10000 bytes.
Read failure with status 0xc000009c at offset 0x280036fb000 for 0x1000 bytes.
Read failure with status 0xc000009c at offset 0x280cb987000 for 0x10000 bytes.
Read failure with status 0xc000009c at offset 0x280cb993000 for 0x1000 bytes.
Read failure with status 0xc000009c at offset 0x280dbdc2000 for 0x10000 bytes.
Read failure with status 0xc000009c at offset 0x280dbdc4000 for 0x1000 bytes.
Read failure with status 0xc000009c at offset 0x2835d5bb000 for 0x10000 bytes.
Read failure with status 0xc000009c at offset 0x2835d5c0000 for 0x1000 bytes.
这很严重:备份您的数据并丢弃该硬盘。在您可以进行备份之前,请不要使用驱动器;断开它。
在制作文件系统时,有一种直接的方法可以告诉 ext4 哪些扇区是坏的,在制作文件系统时使用
-L
。我不会在这里更详细地描述它,因为这确实是一个糟糕的想法;不过,您应该随意自己研究它。发现这些错误需要几个小时的事实意味着您的硬盘驱动器在比这些已经出现故障的位置更多的地方进行常规操作需要很长时间。这意味着有更多的地方即将失败。这个驱动器正在丢失数据,它不是
它是
使用 EXT4 格式化分区并在其上复制任何新数据会给设备带来更大的压力。更多的事情会失败。
这个驱动就完成了。它不再适合存放。对不起。把它扔掉。当数据在未知位置出现错误或在您需要时可能无法读取时,实际上没有有用的数据。
大约 20 到 25 年前,在磁盘具有内部缺陷管理之前,文件系统在格式化和驱动器老化时进行块级缺陷管理并将块添加到坏块列表是有意义的。
现代磁盘都具有 SMART 缺陷管理(或 NVME 等效功能)并自动将坏块替换为好块。通常写入坏块足以触发它通过替换一个好块来修复。
如果您的磁盘有大量坏块,这意味着它已经用完了替换块。考虑到它开始时有大量替换块,这可能意味着磁盘出现机械故障(可能有碎片漂浮在内部造成更多损坏),并且可能接近完全灾难性故障。
smartctl -a
您可以使用设备上的命令来验证这一点。在顶部附近,它应该指示驱动器运行状况,在底部附近,它包含一个块错误列表。如果它表明磁盘出现故障或您看到块错误报告,则可能是磁盘出现故障。如果它说没问题,您应该运行测试(-t long
或者-t short
)并在等待(通常短时间为 2 分钟,长时间为数小时)后,再次检查并查找测试结果。如果驱动器通过了长时间的测试,它可能仍然可以使用,并且可能您只需要触发一些对坏扇区的写入以尝试修复它们。
您可以将“badblocks”命令与 e2fsck 一起使用来指定文件系统的坏磁盘块列表。
正如其他人所评论的那样,这并不好,因为这意味着您的磁盘正处于越来越多的故障边缘。此外,因为这通常在今天的驱动器级别处理,所以这些坏块代码现在很少使用。