Technology · 实用指南
Linux 报“Read-only file system”?先证明挂载点、命名空间与设备边界
先把失败路径映射到最深挂载点,保存首个内核错误,并在重挂载或修复前区分只读策略、命名空间隔离、介质保护与文件系统损坏。

“Read-only file system”表示内核在挂载或文件系统边界拒绝写入,不是普通权限位问题;失败进程看到的挂载树还可能不同于管理员 shell。
先冻结路径、PID、时间和原始错误,定位最深挂载并保存内核与存储证据,再只修已证明的责任边界。
固定准确失败边界
记录绝对路径、失败进程 PID、errno、时间、操作、身份以及容器或服务上下文;停止会覆盖证据的重试循环。
在失败上下文运行 findmnt -T 并读取 /proc/PID/mountinfo,确认真正拥有该路径的最深挂载点,再与管理员 shell 比较。
区分策略与错误重挂载
确认 ro 位于 VFS、文件系统层还是两者,并检查 fstab、unit、容器 bind、image、overlay 或云盘配置。
保存首个时间附近的 journalctl -k 或 dmesg。ext4 的 errors=remount-ro 明确定义了错误触发只读重挂载。
证明后端责任方与影响范围
映射 SOURCE、UUID、device-mapper、RAID、网络导出、loop image 或云卷,并检查块设备自身是否只读。
只有一个 namespace 或 bind 目标只读时修挂载策略;整个文件系统或设备只读时,所有相关路径都受影响。
只修已证明分支
策略问题应修改源配置并在维护窗重建或重挂载准确目标;文件系统或介质错误应停写、保存诊断、卸载或进入恢复环境,再按厂商和文件系统流程处理。
不要对已挂载可写文件系统运行 fsck,不要反复强制 rw,也不要仅凭 EROFS 更换存储。
在原命名空间验收
回到原服务、容器或 PID namespace,用同一路径核对期望标志,并确认测试期间没有新内核或设备错误。
创建唯一测试文件,写入、fsync、读回比对并删除;再观察一个正常工作负载。若错误重现,立即停止并升级处理。
