ARM 上的 Linux Arch - 随机 USB 驱动器“冻结”

ARM 上的 Linux Arch - 随机 USB 驱动器“冻结”

我在 Seagate Free Agent Dockstar 上运行 Linux Box,虽然功能非常有限,但足以满足我的需要,大多数情况下确实如此……

我的操作系统安装在闪存驱动器上,并使用外部 USB 2“经典磁性”西部数据 1.5TB 硬盘进行海量存储。

经常会发生这样的情况:等待 IO % 的时间突然上升到接近 100%,系统陷入瘫痪,甚至很难通过 ssh 连接;在这种情况下,典型的“iostat -x”会给出如下输出:

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 0.00 0.00 0.00 0.50 0.00 2.00 8.00 14.80 91400.00 0.00 91400.00 2000.00 100.00

其中 sdb 是闪存驱动器,sda 是 USB 磁盘。这告诉我 USB 驱动器处于 100% 繁忙状态,但几乎没有人对其进行写入或读取。

我在“正常”使用过程中也使用了“lsof +D”,没有发现任何可疑情况:使用了相当多的文件,但没有什么奇怪的。

我如何进行更深入的调试?请记住,该机器使用 ARM 处理器,只有 128MB 的 RAM,没有屏幕或本地控制台,但是,考虑到这些限制,如果需要,我几乎可以安装所有东西。

编辑:我还尝试运行 smartctl,它表明驱动器适合:

SMART 整体健康自我评估测试结果:通过

... 有很多输出,但似乎都没用

编辑2:

我确实认为驱动器存在硬件问题;我注意到当它在没有负载的情况下 100% 忙碌时,它会发出重复的噪音,这让我想起了旧时的 Amiga 软盘——它们发出类似的噪音,就像它们漫无目的地转来转去一样……

由于这个原因,将 /var 和 /tmp 移动到磁盘的建议只会使情况变得更糟。

我想解决这个问题的唯一方法是购买新的硬盘并尽快备份有价值的数据。:-(

答案1

再次检查 WD 驱动器是否正常。我刚刚检测到我的一个驱动器有读取错误。读取一些坏扇区需要花费大量时间(几分钟)。不幸的是,SMART 可能无法通过 USB 工作,这使得检查驱动器状况变得困难。

检查的一种方法是使用 dd 读取整个磁盘:

dd if=/dev/sdX of=/dev/null bs=1M

通过 USB 传输会花费相当长的时间,但如果 dd 命令出错,则表示磁盘已损坏。您可以在安装磁盘时读取磁盘,但要小心使用if=of=

答案2

闪存驱动器的写入性能通常较差。因此,您需要尽量减少操作系统对闪存驱动器的写入。

  • /在 fstab 中为您的和分区使用“noatime”选项/usr
  • 禁用交换。
  • 如果可能的话,放上/var其他东西(如果可以的话,放上“海量存储”),如果不行,请禁用所有您绝对不需要的日志记录。
  • 与 也一样/tmp

相关内容