Watch at Ease看见世界,读懂生活。

Technology · 实用指南

Linux 报“Read-only file system”?先证明挂载点、命名空间与设备边界

先把失败路径映射到最深挂载点,保存首个内核错误,并在重挂载或修复前区分只读策略、命名空间隔离、介质保护与文件系统损坏。

原创示意图:从失败路径追踪最深挂载、进程命名空间与只读责任方。
原创示意图:从失败路径追踪最深挂载、进程命名空间与只读责任方。 Watch at Ease

“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、读回比对并删除;再观察一个正常工作负载。若错误重现,立即停止并升级处理。

原创示意图:从证据采集、分支分类与受控修复走到同命名空间验收。
原创示意图:从证据采集、分支分类与受控修复走到同命名空间验收。 Watch at Ease