文件系统只读的修复方法
约 614 字大约 2 分钟
2026-08-29
写入任何文件都报 Read-only file system?这通常是内核检测到文件系统错误后,自动把分区挂成只读以保护数据的自我保护行为(ext4 默认策略 errors=remount-ro),也可能由磁盘 / 链路异常引起。不要反复硬试,按本文顺序处理。
第一步:确认现象与原因
确认分区挂载状态(出现
ro即只读):mount | grep -E ' / |/data'查看内核日志,确认触发只读的错误:
sudo dmesg | grep -iE "I/O error|EXT4-fs error|remount" | tail -20写入验证:
touch /data/testfile,报Read-only file system即为本文场景。
第二步:恢复读写,先备份数据
sudo mount -o remount,rw /data成功后立即备份重要数据,再进行后续修复。根分区同理:mount -o remount,rw /。
remount 后又变回只读?
如果几分钟后再次变只读,或 dmesg 里 I/O error 持续新增,说明底层错误还在发生——别再反复 remount,直接进入 fsck 修复,并优先把数据救出来。
第三步:fsck 修复文件系统
必须先卸载
fsck 只能修复未挂载的分区,对挂载中的分区执行可能造成二次损坏。
数据盘(如 /dev/vdb1)
sudo umount /data
sudo fsck -y /dev/vdb1
sudo mount /dev/vdb1 /data根分区(/)
根分区无法卸载,需在开机修复环境中执行:
重启实例,在 GRUB 菜单按
e编辑启动项,找到linux开头的那行,在行末追加:systemd.unit=emergency.target按
Ctrl + X启动,进入 emergency shell。该模式下根分区通常为只读,可直接修复:
fsck -y /dev/vda1提示
设备名以实际为准,用
mount | grep ' / '查看根分区所在设备;也可以通过进入Linux单用户模式进入修复环境,操作同样适用。完成后重启:
reboot。
第四步:反复出现只读,怎么办
- 统计错误是否持续新增:
sudo dmesg | grep -ci "I/O error",隔几分钟再看,数字持续增长基本可判定磁盘故障。 - 这种情况优先备份数据、迁移实例;无法自行处理时提交工单,附上 dmesg 相关日志。
- 数据盘日常挂载规范见Linux服务器挂载数据盘;fstab 写错导致开机异常的修复,见进入Linux单用户模式。
