AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 683313
Accepted
user3405291
user3405291
Asked: 2021-12-22 01:48:12 +0800 CST2021-12-22 01:48:12 +0800 CST 2021-12-22 01:48:12 +0800 CST

命令做什么:`badblocks -svn /dev/sda`?它只是报告坏块吗?

  • 772

这个命令:

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

如果您以这种方式完全处理了磁盘,则磁盘控制器应该已将所有坏块替换为工作块,并且重新分配的计数将在 SMART 日志中增加。

https://askubuntu.com/a/490549/507217

聪明的

badblocks运行命令后,我通过以下方式检查了 SMART 表:

smartctl --all /dev/sda

请注意,Current_Pending_Sector原始值为56. 28是报道的两倍badblocks。也许他们是相关的。

截屏

错误解释

根据这个:

如何解释坏块输出

badblocks错误日志的格式为reading/writing/comparing. 就我而言,所有28错误都是阅读错误。这意味着没有应用程序可以读取这些块。

操作系统日志

我查看了操作系统日志sudo journalctl -xe。实际上,SMART 会抛出有关这些56坏扇区(28坏块)的错误:

smartd [1243]:设备:/dev/sda [SAT],56 当前不可读(待处理)扇区

日志截图

结论

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

hard-disk hardware
  • 1 1 个回答
  • 683 Views

1 个回答

  • Voted
  1. Best Answer
    roaima
    2021-12-22T01:57:34+08:002021-12-22T01:57:34+08:00

    由该选项触发的“非破坏性读写模式-n”将测试数据写入每个块,就像-w, 并强制磁盘接受写入、重新分配错误块或返回写入错误。

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

    过程

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

    警告

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

    一个完整的磁盘写入测试,例如由or提供的测试badblocks,将强制写入所有磁盘块,确保它们都对您可用,或者突出显示无法重新映射的磁盘块。-w-n

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

    我的建议是,如果您有任何无法重新映射的磁盘块,请尽快更换磁盘,因为您不再有任何安全网。(就个人而言,我会在达到此阶段之前更换这样的磁盘。)该ddrescue工具可能有助于将数据从这个损坏的磁盘复制到新磁盘。

    • 3

相关问题

  • 如何在 Linux 中禁用硬件加速?

  • 我可以远程判断我是否有空闲的 SATA 端口

  • 将局域网硬盘挂载到 linux fedora

  • 销售没有预装专有操作系统的计算机的公司?[关闭]

  • 以 100% 的利用率捕捉 /dev/loop -- 没有可用空间

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve