这个命令:
badblocks -svn /dev/sda是干什么的呢?它只是报告不好的街区吗?还是它以某种方式处理了不好的块,这样我就不需要担心它们了?
我阅读了man badblocks的手册,但没有-n选项:
-s Show the progress of the scan by writing out rough percentage completion of
the current badblocks pass over the disk. Note that badblocks may do multiple
test passes over the disk, in particular if the -p or -w option is requested
by the user.
-v Verbose mode. Will write the number of read errors, write errors and data-
corruptions to stderr.
-n Use non-destructive read-write mode. By default only a non-destructive read-
only test is done. This option must not be combined with the -w option, as
they are mutually exclusive.运行badblocks -svn /dev/sda的输出持续了将近两天:

一些帖子建议,在运行badblocks -svn /dev/sda之后,硬盘控制器将处理不好的块。不确定。
让硬盘控制器用备用块替换坏块。
https://askubuntu.com/a/490552/507217
如果您已经以这种方式完全处理了磁盘,那么磁盘控制器应该已经用工作的块替换了所有的坏块,并且重新分配的计数将在智能日志中增加。
https://askubuntu.com/a/490549/507217
在运行badblocks命令之后,我通过以下方法检查了智能表:
smartctl --all /dev/sda注意,Current_Pending_Sector原始值是56。这是badblocks报道的D22的两倍。也许他们是亲戚。

根据这一点:
badblocks错误日志以reading/writing/comparing的形式出现。在我的例子中,所有的28错误都是读取错误。这意味着<#>no应用程序可以读取这些块。
我通过sudo journalctl -xe查看了操作系统日志。实际上,SMART正在抛出关于那些56坏扇区(28坏块)的错误:
smartd:设备: /dev/sda,56个当前不可读(待定)扇区

我宁愿备份数据,并在为时已晚之前更换硬盘。
发布于 2021-12-21 09:57:34
-n选项触发的“非破坏性读写模式”将测试数据写入每个块,就像-w一样,并迫使磁盘要么接受写入,要么重新分配错误块,或者返回写入错误。
然而,它的最大优点是,它首先读取将要覆盖的块,然后在编写测试数据之后重写该数据。这意味着在badblocks完成之后,磁盘应该包含与它开始运行之前相同的数据。
流程
警告
将一个好的数据块写入磁盘将导致预期的操作:该块将被写入。但是,如果写入失败,磁盘固件将自动透明地将块地址重新映射到其备用块之一,并在磁盘上的新位置为您重新尝试写入。如果写入是成功的,那么您将不会知道任何不同的情况,并且磁盘看起来完全正常。(在智能表中,扇区重新分配的计数器将增加一个。)最终,随着时间的推移,一组备用块可能会耗尽,从这一点开始,本应被重新映射的磁盘写入就会简单地失败。
完整的磁盘写入测试(如badblocks提供的带有-w或-n的测试)将强制对所有磁盘块进行写入,确保所有磁盘块都对您可用,或者突出显示无法重新映射的磁盘块。
注意,badblocks does不能保证您没有丢失数据:如果它不能读取一个块,那么它不能在测试之后重写它,因此它不会执行写测试(但是确实会将块报告为坏的)。如果badblocks无法读取块,那么任何其他应用程序都无法读取块,并且your数据将丢失。
我的建议是,如果您得到任何无法重新映射的磁盘块,请尽快将磁盘replace ,因为您已经没有任何安全网了。(就我个人而言,在达到这一阶段之前,我会更换这样的磁盘。)ddrescue工具可能会有帮助在复制数据中从这个坏掉的磁盘到一个新的磁盘。
https://unix.stackexchange.com/questions/683313
复制相似问题