用心打造
VPS知识分享网站

Linux服务器提示Read-only file system怎么办?先别急着重新挂载

上传文件、写日志或更新软件时,终端突然提示 Read-only file system,不少人的第一反应是执行重新挂载命令,把分区强制改回可写。这个动作有时能暂时恢复写入,但底层存在I/O错误或文件系统损坏时,也可能让问题继续扩大。

先暂停数据库写入、部署和批量复制,确认到底是哪一个挂载点变成只读,再根据内核日志决定修复方式。只读往往是保护结果,不一定是故障起点。

文件系统只读

先确认报错发生在哪个路径

用一个最小写入测试确认范围,不要拿重要文件反复覆盖:

touch /path/to/problem/.write-test
findmnt -T /path/to/problem

findmnt -T 会显示该路径实际属于哪个文件系统、设备和挂载点。网站目录可能位于独立云盘、LVM、容器挂载或网络存储中,只看根分区容易查错对象。

只有某个文件无法修改时,还要检查文件权限、不可变属性和目录属主。真正的只读挂载通常会影响同一挂载点内的多处写入,并明确返回只读文件系统错误。

查看当前挂载状态和文件系统类型

继续记录挂载参数与设备对应关系:

findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS -T /path/to/problem
lsblk -f

OPTIONS 中出现 ro 表示当前以只读方式挂载,rw 才是可写。系统启动后一直只读,可能来自 /etc/fstab、镜像设置或手动挂载;运行一段时间后突然从可写变只读,更应关注文件系统和存储错误。

容器里的只读还可能来自容器自身的只读根文件系统或卷挂载参数。此时宿主机磁盘正常,也不能直接在容器内通过 mount -o remount,rw 改变平台设置。

磁盘空间满和inode耗尽也要排除

空间写满通常返回 No space left on device,与只读错误并不相同,但两者可能同时出现。先把容量和inode数据一并保存:

df -hT
df -i

分区已满时,优先清理可确认的缓存、旧日志或无用备份,不要直接删除数据库文件。空间恢复后再次检查挂载状态;腾出空间不会自动修复已经发生的文件系统错误。

内核日志是判断方向的关键

查看本次启动中的存储和文件系统消息:

sudo journalctl -k -b --no-pager | tail -n 200
sudo dmesg -T | tail -n 200

关注I/O error、Buffer I/O error、EXT4-fs error、XFS错误、设备重置和文件系统被重新挂载为只读等信息。ext4支持在检测到错误时按配置重新挂载为只读,这种情况下 ro 是内核为了减少进一步写入损坏采取的保护措施。

把报错时间、设备名和云平台磁盘监控对齐。底层云盘异常、宿主机存储问题、文件系统损坏和异常关机后的恢复失败,处理路径并不相同。

不要在线对根分区直接运行fsck

fsck 通常需要在目标文件系统未挂载时执行。对正在使用的根分区或数据库分区直接修复,可能让内核与修复工具同时修改元数据。

更稳妥的方式是在控制台进入救援模式,或把数据盘卸载后再使用与文件系统匹配的检查工具。ext4常用 e2fsck,XFS的检查与修复流程不同,不能把同一条命令套在所有文件系统上。

执行前先做快照或可恢复备份,并确认备份不只存在于同一块故障磁盘。检测到持续I/O错误时,应先联系云服务商确认存储状态,再决定修复或更换磁盘。

什么时候可以尝试重新挂载

只有在确认文件系统本身健康、只读来自明确的挂载配置或临时维护操作时,才评估重新挂载:

sudo mount -o remount,rw /mount/point

/mount/point 换成实际挂载点。命令失败时不要追加更激进参数;命令成功后也要继续观察内核日志和写入测试。底层错误没有消失,系统可能再次切回只读。

旧服务器已经出现反复只读和磁盘告警时,可以在 萤光云 准备相近系统做恢复验证,也可以借助按小时计费的 LightNode 建立并行环境。迁移时优先从已验证的备份恢复,不要把损坏文件系统整盘复制后直接上线。

修复后的验收方式

确认目标挂载点显示为 rw,创建、修改和删除测试文件都正常;数据库、日志和网站上传能够持续写入。随后观察一个业务高峰,内核日志不应再出现新的文件系统错误或设备重置。

最后安排一次可控重启,验证 /etc/fstab、设备标识和启动挂载结果。只在当前会话里恢复写入,但重启后再次只读,说明问题还没有闭环。

常见问题

服务器重启后恢复可写,还需要处理吗?

需要。重启可能完成日志回放或暂时恢复设备,但仍应检查上次启动的内核日志、磁盘监控和文件系统状态,确认没有持续错误。

可以直接把errors=remount-ro改成continue吗?

不建议。继续写入可能让损坏扩大。该设置改变故障后的处理方式,不会修复已经存在的存储或文件系统问题。

快照能代替备份吗?

不能完全代替。故障发生后创建的快照可能同时保存了损坏状态,重要数据还应保留独立位置、可恢复验证过的备份。

赞(0)
未经允许不得转载;国外VPS测评网 » Linux服务器提示Read-only file system怎么办?先别急着重新挂载
分享到