You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排查两台更换同型号NVMe硬盘后ext4文件系统频繁进入只读模式的问题(无硬件报错)

如何排查两台更换同型号NVMe硬盘后ext4文件系统频繁进入只读模式的问题(无硬件报错)

看起来你遇到的是一个典型的「相同操作+相同硬件导致共性问题」的场景,结合你提供的细节,我给你梳理几个优先级从高到低的排查方向:

  • 先排查克隆过程带来的文件系统底层问题
    你用dd if=/dev/nvme0n1 of=/dev/nvme1n1 bs=128M status=progress做了逐扇区克隆,这种方式会完整复制旧盘的分区表、文件系统元数据,甚至可能把旧盘上的微小文件系统瑕疵(比如之前没触发的inode异常)带到新盘。加上新旧盘的物理扇区对齐可能存在差异(比如旧盘是512B逻辑扇区,新盘可能是4K物理扇区+512B模拟),会导致ext4在新盘上出现持续的元数据错误。
    建议你尝试重新构建文件系统:

    1. 在新盘上用gdisk或parted重新创建分区(确保起始扇区对齐到4K,即lsblk里的PHY-SeC整数倍)
    2. 用mkfs.ext4重新格式化目标分区
    3. 用rsync -aAXv /old/mount/point/ /new/mount/point/同步所有数据(注意末尾的斜杠)
      这种方式能彻底避免克隆带来的元数据继承问题,很多时候这类奇怪的ext4报错都会消失。
  • 检查内核与NVMe驱动的兼容性
    你的两台机器用的都是比较旧的内核:桌面是5.15.0-94(Ubuntu22.04的默认内核,但990PRO是2023年的新盘,5.15早期版本对NVMe 2.0协议的支持可能不完善),服务器是4.15.0-213(Ubuntu18.04的内核,对新NVMe盘的支持更差)。
    建议:

    • 服务器端:升级到Ubuntu18.04支持的最新LTS内核(比如5.4系列),可以用apt install linux-generic-hwe-18.04-edge安装
    • 桌面端:尝试升级到5.15的最新小版本,或者测试5.19/6.x系列内核
      同时可以检查NVMe模块的电源管理参数,有些新盘的低功耗模式会触发IO超时,导致文件系统只读:编辑/etc/default/grub,在GRUB_CMDLINE_LINUX中添加nvme_core.default_ps_max_latency_us=0,然后执行update-grub重启,这会禁用NVMe的自动低功耗模式。
  • 实时监控内核与文件系统日志
    你提到文件系统进入只读前没有日志留存,这是因为只读模式触发后系统无法写入日志。可以提前设置离线日志记录:

    1. 准备一个USB盘,格式化为ext4并挂载到某个目录(比如/mnt/usb-log)
    2. 运行journalctl -f > /mnt/usb-log/kernel.log &,让日志实时写入USB盘
    3. 或者用dmesg -w >> /mnt/usb-log/dmesg.log &监控内核环缓冲区
      下次出现只读问题时,直接从USB盘提取日志,应该能找到触发ext4切换到只读模式的具体原因(比如IO错误、元数据校验失败等)。另外,也可以临时修改/etc/fstab的挂载选项,把errors=remount-ro改成errors=panic,这样系统会直接崩溃而不是只读,方便用crash工具分析内核转储。
  • 检查ext4文件系统特性与挂载选项
    用tune2fs -l /dev/nvme0n1pX(X是你的系统分区号)查看文件系统特性,重点关注:

    • 是否启用了discard选项:有些新NVMe盘的TRIM实现存在兼容性问题,建议把挂载选项里的discard移除,换成定时任务执行fstrim /(Ubuntu默认会有这个定时任务,但可以手动确认)
    • 检查文件系统的inode大小、块大小是否与新盘适配:旧盘的inode大小可能是256B,新盘用4K块大小的话可以调整为512B,但这个需要重新格式化才能修改
      另外,添加noatime,nodiratime挂载选项可以减少磁盘IO操作,降低触发异常的概率。
  • 验证NVMe盘的底层稳定性
    虽然SMART和三星魔术师都显示正常,但可以做一些底层IO压力测试:

    • 用fio做随机读写测试:fio --name=test --filename=/dev/nvme0n1pX --rw=randrw --bs=4k --numjobs=4 --size=10G --runtime=3600 --iodepth=32 --direct=1
    • 测试过程中监控dmesg和smartctl -a /dev/nvme0,看是否出现IO错误或温度异常
      另外,可以尝试把990PRO换到另一台机器(比如Windows)上持续运行几天,确认盘本身没有隐性硬件问题。

备注:内容来源于stack exchange,提问作者ilmiont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:28:08