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 / 问题 / 460716
Accepted
babou
babou
Asked: 2018-08-06 13:55:30 +0800 CST2018-08-06 13:55:30 +0800 CST 2018-08-06 13:55:30 +0800 CST

为什么 ddrescue 在无错误区域可以更快,但速度却很慢?

  • 772

这个问题解决了要救援的设备的第一次通过。ddrescue

我不得不抢救一个 1.5TB 的硬盘。

我使用的命令是:

# ddrescue /dev/sdc1 my-part-img my-part-map

当在磁盘的良好区域上启动救援(没有可选参数)时,读取速率(“ current rate”)保持在 18 MB/s 左右。

它偶尔会减慢一点,但随后又恢复到这个速度。

但是,当它遇到磁盘坏区时,它可能会明显变慢,然后再也回不到18 MB/s,而是保持在3 MB/s左右,即使读取了50 GB的好磁盘也没有问题.

奇怪的是,当它当前以 3 MB/s 的速度扫描一个好的磁盘区域时,如果我停止ddrescue并重新启动它,它会以 18 MB/s 的更高读取速率重新启动。ddrescue 实际上,当它以 3 MB/s 的速度运行时,我通过停止和重新启动节省了大约 2 天的时间,我必须这样做 8 次才能完成第一次通过。

我的问题是:为什么它ddrescue不会自己尝试回到最高速度。鉴于文档中明确说明的政策,即首先快速完成容易的区域,这是应该做的,而我观察到的行为在我看来是一个错误。

我一直想知道这个选项是否可以解决, 或者-a手册太简洁了,我不确定。此外,我不明白应该在什么基础上为此选项选择读取率。应该是上面的18MB/s吧?--min-read-rate=…

尽管如此,即使有一个选项来指定它,我很惊讶这不是默认完成的。

元注释

两名用户投票结束了这个主要基于意见的问题。

我会很感激知道它是什么意思?

我以某种数值精度描述了一个重要软件在实际示例中的行为,清楚地表明它不符合其文档中所述的主要设计目标(尽可能快地完成简单的部分),以及非常简单的推理可以改善这一点。

该软件众所周知,来自一个非常值得信赖的来源,具有精确的算法,我希望大多数缺陷在很久以前就被淘汰了。因此,我向专家询问这种意外行为的可能已知原因,而不是我自己在这个问题上的专家。

此外,我问是否应该使用软件的选项之一来解决这个问题,这是一个非常精确的问题。我要求提供详细的方面(如何为此选项选择参数),因为我没有找到相关文档。

我要的是我工作需要的事实,而不是意见。我用实验事实而不是意见来激励它。

data-recovery hard-disk
  • 2 2 个回答
  • 3135 Views

2 个回答

  • Voted
  1. Best Answer
    frostschutz
    2018-08-07T07:01:41+08:002018-08-07T07:01:41+08:00

    我一直想知道这是否可以通过选项 -a 或 --min-read-rate= ... 来处理,但手册非常简洁,我不确​​定。此外,我不明白应该在什么基础上为此选项选择读取率。应该是上面的18MB/s吧?

    该--min-read-rate=选项应该有所帮助。现代驱动器往往会花费大量时间进行内部错误检查,因此虽然速度极慢,但不会将其报告为错误情况。

    即使在读取 50 GB 的好磁盘后也没有问题。

    这也意味着:你甚至不知道是否有问题了。驱动器可能有问题,并决定不报告。

    现在,ddrescue支持使用动态--min-read-rate=值,来自info ddrescue:

     If BYTES is 0 (auto), the minimum read rate is recalculated every
     second as (average_rate / 10).
    

    但根据我的经验,自动设置似乎没有多大帮助。一旦驱动器卡住了,特别是如果刚开始就发生这种情况,我猜平均速率永远不会保持足够高以使其有效。

    因此,在第一次通过时,当您想获取尽可能多的数据时,首先是快速区域,我只是将其设置为average_rate / 10手动,average_rate 是驱动器完好无损时的平均速率。

    因此,例如,您可以使用10M此处(对于应该以 ~100M/s 的速度运行的驱动器),然后您可以随时返回并稍后在慢速区域尝试运气。

    我观察到的行为在我看来是一个错误。

    如果你有一个错误,那么你必须调试它。如果没有相同类型的驱动器故障,很难重现。它也可能是卡在某种恢复模式的驱动器本身。

    在处理有缺陷的驱动器时,您还必须检查dmesg是否发生了任何奇怪的事情,例如总线重置等。一些控制器在处理故障驱动器方面也比其他控制器更差。

    有时无法避免人工干预。

    即便如此,我很惊讶这不是默认完成的。

    大多数程序都没有健全的默认值。dd默认情况下仍然使用 512 字节块大小,在大多数情况下这是“错误”的选择......被认为是理智的也可能随着时间而改变。

    我要的是我工作需要的事实,而不是意见。

    拥有良好的备份总比依赖ddrescue. 从故障驱动器中获取数据首先是运气问题。数据恢复涉及很多个人经验,因此 - 意见。

    我们拥有的大多数恢复工具也很愚蠢。该工具没有向中央服务器报告的人工智能,并且就像“哦,我以前在这个特定的驱动器模型上看到过这种故障模式,所以让我们改变我们的策略......”。所以这部分必须由人来完成。

    • 8
  2. ParoXoN
    2020-02-26T23:35:20+08:002020-02-26T23:35:20+08:00

    这是一个有点死灵的帖子,但对于任何可能发生在这件事上的人:

    我已经能够重现 OP 的行为,并让 ddrescue 通过使用其-O标志恢复其最大读取速度,该标志在每次错误后重新打开输入文件。

    不幸的是,我没有机会深入研究为什么在遇到错误后它似乎恢复到 ~3 MiB/s,但我想我会分享我的经验。

    • 5

相关问题

  • 在 MS-Windows 7 下对外部磁盘进行分区时,ntfs 的版本是什么

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

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

  • dd_rescue 和 ddrescue 有什么区别,什么时候更喜欢哪一个?

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

Sidebar

Stats

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

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

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

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

    • 5 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • 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
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +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
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +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