我有一个新的 Debian VPS,几乎每次在 ext4 文件系统上运行大量磁盘写入测试时,它都会失败。文件系统进入只读模式,并且“ata1:丢失中断(状态 0x50)”记录到 /var/log/messages。您建议我下一步做什么?我可以更改一些文件系统或服务器参数吗?有没有什么方法可以更深入地调试这个问题?我应该彻底切换到 ext3 吗?还是我应该从 Debian 切换到 Ubuntu 或 CentOS?
以下是目前发生的情况。我从 Hetzner 获得了一台新的 VQ 12 VPS。在将它们投入生产使用之前,我有一个标准的服务器测试程序要运行。我从 Hetzner 映像安装了 64 位 Debian,将其升级到最新补丁并开始测试。当我在 ext4 分区上运行 dd write 命令时,例如
dd if=/dev/zero of=/root/test.bin bs=2M count=4k conv=fdatasync
我几乎立刻就得到了
dd: writing `/root/test.bin': Read-only file system
并找到一条线
kernel: [ 457.816093] ata1: lost interrupt (Status 0x50)
在 /var/log/messages 上。文件系统可以恢复,也可以在重启时恢复
May 5 19:54:29 ****vq12 kernel: [ 1.772377] EXT4-fs (sda3): INFO: recovery required on readonly filesystem
May 5 19:54:29 ****vq12 kernel: [ 1.773184] EXT4-fs (sda3): write access will be enabled during recovery
May 5 19:54:29 ****vq12 kernel: [ 2.001101] EXT4-fs warning (device sda3): ext4_clear_journal_err: Filesystem error recorded from previous mount: IO failure
May 5 19:54:29 ****vq12 kernel: [ 2.002159] EXT4-fs warning (device sda3): ext4_clear_journal_err: Marking fs in need of filesystem check.
May 5 19:54:29 ****vq12 kernel: [ 2.004316] EXT4-fs (sda3): recovery complete
May 5 19:54:29 ****vq12 kernel: [ 2.005316] EXT4-fs (sda3): mounted filesystem with ordered data mode
但当我继续测试时,问题又出现了。我联系了支持人员,他们建议我增加 /sys/block/sda/device/timeout,但似乎没有什么效果。
root@****vq12 ~ # echo "600" > /sys/block/sda/device/timeout
root@****vq12 ~ # cat /sys/block/sda/device/timeout
600
root@****vq12 ~ # mount | grep " / "
/dev/sda3 on / type ext4 (rw)
root@****vq12 ~ # dd if=/dev/zero of=/test.bin bs=2M count=4k conv=fdatasync
dd: writing `/test.bin': Read-only file system
3096+0 records in
3095+0 records out
6492217344 bytes (6.5 GB) copied, 116.353 s, 55.8 MB/s
他们还将 VPS 迁移到另一个节点,但这也无济于事。我直接从映像测试了 32 位和 64 位 Debian,并升级到最新补丁,并且它在所有组合上都不断发生。但 ext3 似乎不受影响。Ubuntu 和 CentOS 即使使用 ext4(在同一台服务器上测试)似乎也不受影响。
最近,我在许多 Debian 和其他 Linux 服务器(甚至在一些 Hetzner VQ、EQ、EX 服务器)上运行了相同的写入测试,从未发生过这种情况。