首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令是做什么的:‘`badblocks -svn /dev/sda`’?它只是报告不好的街区吗?

命令是做什么的:‘`badblocks -svn /dev/sda`’?它只是报告不好的街区吗?
EN

Unix & Linux用户
提问于 2021-12-21 09:48:12
回答 1查看 1.8K关注 0票数 0

这个命令:

代码语言:javascript
复制
badblocks -svn /dev/sda

是干什么的呢?它只是报告不好的街区吗?还是它以某种方式处理了不好的块,这样我就不需要担心它们了?

我阅读了man badblocks的手册,但没有-n选项:

代码语言:javascript
复制
       -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命令之后,我通过以下方法检查了智能表:

代码语言:javascript
复制
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个当前不可读(待定)扇区

结论

我宁愿备份数据,并在为时已晚之前更换硬盘。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-12-21 09:57:34

-n选项触发的“非破坏性读写模式”将测试数据写入每个块,就像-w一样,并迫使磁盘要么接受写入,要么重新分配错误块,或者返回写入错误。

然而,它的最大优点是,它首先读取将要覆盖的块,然后在编写测试数据之后重写该数据。这意味着在badblocks完成之后,磁盘应该包含与它开始运行之前相同的数据。

流程

  1. 读取块和保存
  2. 测试数据写入块
  3. 捕获状态结果并在必要时报告
  4. 重写保存块
  5. 用下一个块重复,直到完成

警告

将一个好的数据块写入磁盘将导致预期的操作:该块将被写入。但是,如果写入失败,磁盘固件将自动透明地将块地址重新映射到其备用块之一,并在磁盘上的新位置为您重新尝试写入。如果写入是成功的,那么您将不会知道任何不同的情况,并且磁盘看起来完全正常。(在智能表中,扇区重新分配的计数器将增加一个。)最终,随着时间的推移,一组备用块可能会耗尽,从这一点开始,本应被重新映射的磁盘写入就会简单地失败。

完整的磁盘写入测试(如badblocks提供的带有-w-n的测试)将强制对所有磁盘块进行写入,确保所有磁盘块都对您可用,或者突出显示无法重新映射的磁盘块。

注意,badblocks does不能保证您没有丢失数据:如果它不能读取一个块,那么它不能在测试之后重写它,因此它不会执行写测试(但是确实会将块报告为坏的)。如果badblocks无法读取块,那么任何其他应用程序都无法读取块,并且your数据将丢失

我的建议是,如果您得到任何无法重新映射的磁盘块,请尽快将磁盘replace ,因为您已经没有任何安全网了。(就我个人而言,在达到这一阶段之前,我会更换这样的磁盘。)ddrescue工具可能会有帮助复制数据中从这个坏掉的磁盘到一个新的磁盘。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/683313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档