![手动告诉 EXT4 有关坏扇区的信息?](https://linux22.com/image/206189/%E6%89%8B%E5%8A%A8%E5%91%8A%E8%AF%89%20EXT4%20%E6%9C%89%E5%85%B3%E5%9D%8F%E6%89%87%E5%8C%BA%E7%9A%84%E4%BF%A1%E6%81%AF%EF%BC%9F.png)
该驱动器当前采用 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.
答案1
这很严重:备份数据并扔掉硬盘。在您可以进行备份之前,请勿使用该驱动器;断开它。
当你创建文件系统时,有一个直接的方法可以告诉 ext4 哪些扇区是坏的,使用-L
创建文件系统时。我不会在这里更详细地描述它,因为这确实是一个糟糕的想法;尽管如此,您还是应该自行研究一下。
事实上,需要几个小时才能找到这些错误,这意味着您的硬盘驱动器在比这些已经发生故障的位置更多的地方需要很长时间进行常规操作。这意味着还有更多的地方即将失败。这个驱动器是丢失数据, 它是不是
这些地方坏了,驱动器的其余部分还不错
它是
该驱动器已损坏,但目前,经过大量努力,大部分内容仍然可读;它看起来正确,但无法知道是否正确是正确的。可访问性可能随时会变得更糟。
使用 EXT4 格式化分区并在其中复制任何新数据会给设备带来更大的压力。更多的事情将会失败。
这样驱动就完成了。它不再适合存储。对不起。把它扔掉。当数据在未知位置出错或者在您需要时可能无法读取时,实际上没有任何数据是有用的。
答案2
大约 20-25 年前,在磁盘进行内部缺陷管理之前,文件系统在格式化时和驱动器老化时进行块级缺陷管理并将块添加到坏块列表中是有意义的。
现代磁盘都具有 SMART 缺陷管理(或 NVME 同等功能),并自动用好块替换坏块。通常,写入坏块足以触发通过用好块替换来修复它。
如果您的磁盘有大量坏块,则意味着它已经用完了替换块。考虑到它开始时有大量的替换块,这可能意味着磁盘出现机械故障(内部可能有碎片漂浮,造成更多损坏),并且可能接近完全灾难性故障。
您可以使用smartctl -a
设备上的命令来验证这一点。在顶部附近,它应该指示驱动器运行状况,在底部附近它包括块错误列表。如果它表明磁盘出现故障或者您看到块错误报告,则磁盘可能出现故障。如果它显示没问题,您应该运行测试( 或-t long
)-t short
并等待(通常短时为 2 分钟,长时为多个小时),再次检查并查找测试结果。
如果驱动器通过了长时间的测试,它可能仍然可以使用,并且可能您只需要触发对坏扇区的一些写入来尝试修复它们。
答案3
您可以将“badblocks”命令与 e2fsck 一起使用来指定文件系统的坏磁盘块列表。
正如其他人评论的那样,这并不好,因为这意味着您的磁盘正处于故障增加的边缘。此外,由于目前这通常是在驱动器级别处理的,因此现在很少使用此坏块代码。