当我使用 rsync 将 1TB 目录从一个 USB 驱动器复制到另一个 USB 驱动器时,系统会变得混乱。系统负载迅速上升,尝试写入目标驱动器的进程进入顶部应用程序 D 状态。rsync 复制挂起。甚至该驱动器上的 ls 也会锁定。
我尝试使用 --bwlimit 运行 rsync,并减少带宽,结果系统负载上升速度反而变慢了,甚至 1MB/秒这样的非常慢的速度也无济于事。奇怪的是,其他进程仍然运行顺利。停止 rsync 也无济于事,唯一的恢复方法是重新启动。重新启动后,我尝试使用 cp 进行相同的复制,一切都运行顺利,所以驱动器可能没有问题。
我不知道驱动器是否位于同一个内部集线器上。我在 Ubuntu 18.04.5 LTS 服务器上。有人可以帮忙吗?
编辑:使用 cp 复制 100GB 后,cp 进程进入顶部 D 状态。负载没有上升,但卡在 3.0,所以我需要重新启动。在 CP 进程运行之前,负载为 0.1。因此仍有一些东西在加载系统。问题可能出在驱动器上吗?在出现此问题之前,此驱动器运行正常,活动很多,现在仍然正常。
EDIT2:这是由 rsync 导致的 USB 锁定的内核消息。
INFO:任务 usb-storage:285 被阻止超过 120 秒。受污染:GW 4.15.0-197-generic #208-Ubuntu “echo 0 > /proc/sys/kernel/hung_task_timeout_secs” 禁用此消息。usb-storage D 0 285 2 0x80000000 调用跟踪:__schedule+0x24e/0x890 schedule+0x2c/0x80 schedule_timeout+0x1cf/0x370
有人能解释一下并建议我如何避免锁定吗?现在我无法克隆驱动器。
EDIT3:即使 ddrescue 也在两小时后因相同的错误而死机。这种情况发生在不同的驱动器和电缆上。要么是我的 hp 笔记本电脑的 USB 硬件有问题,要么是 ubuntu USB 驱动程序有错误(可能性很小)。除非有人有其他想法可以尝试,否则我还是放弃了。我要找一份不同的工作。
编辑 4:经过许多痛苦之后,我确信我知道了所有我能知道的事情。我提高了使用 iotop、top 和 dmesg 的诊断技能,以便完全了解何时发生这种情况。cp 和 rsync 也同样会发生这种情况。
我发现源驱动器有许多神秘的“坏点”。我无法使用 fsck、badblocks 或 ddrescue 找到这些,所以它们不是正常的“坏块”。我正在通过以下方式取得进展:痛苦地让它继续运行,直到失败,然后重新启动。幸运的是,我复制的驱动器是大量文件的集合,而不是像数据库这样的文件。