服务器还能登录,网站却突然写不了缓存、数据库报错,连保存配置都提示 Read-only file system。这类问题看起来像权限不足,实际往往不是 chmod 能解决的。
我处理这类故障时,最担心的不是暂时不能写入,而是有人看到网上的命令后直接强制改成可写,结果把文件系统或底层磁盘问题继续拖下去。本文就按安全顺序讲清楚:先确认哪个分区变只读,再检查内核日志,最后决定重挂载、修复文件系统还是联系服务商。

一、Read-only file system到底代表什么
这个报错表示目标文件所在的文件系统当前只允许读取,内核不会接受新的写入。它和普通的 Permission denied 不一样:权限不足只影响特定用户或目录,文件系统只读则会影响整个挂载点。
先用下面两条命令确认目标路径属于哪个分区,以及当前挂载参数:
findmnt -T /报错的路径
mount | grep ' ro[,)]'
输出中的 ro 表示只读,rw 才是可读写。不要只看根分区,有些网站目录、数据库目录或 Docker 数据目录可能挂载在单独的数据盘上。
二、为什么文件系统会突然变成只读
常见原因是 ext4 等文件系统检测到元数据或日志错误,并按照 errors=remount-ro 策略自动切换为只读。这是一种保护动作,目的是停止继续写入,降低损坏范围。
底层磁盘 I/O 异常、云盘短暂掉线、宿主机存储故障、不正常关机、文件系统损坏,都可能触发这个状态。还有一种情况是 /etc/fstab 本来就把分区配置成了 ro,或系统进入救援环境后以只读方式挂载根目录。
因此,先找触发原因,再恢复写入,比直接执行 mount -o remount,rw 更重要。
三、先从内核日志里找证据
优先查看本次启动中的内核消息:
journalctl -k -b --no-pager | tail -n 200
dmesg -T | grep -Ei 'error|ext4|xfs|i/o|buffer|read-only'
重点留意 EXT4-fs error、Buffer I/O error、blk_update_request、I/O error、Remounting filesystem read-only 等内容。若日志持续出现块设备错误,问题更可能在底层存储,而不只是文件系统状态。
云服务器无法读取 SMART 数据很常见,因为虚拟机看到的是虚拟磁盘。此时应保存日志、时间点和设备名,随后提交给云服务商核查宿主机或云盘状态。
四、能不能直接重新挂载为可写
先备份仍能读取的重要文件。如果日志没有持续 I/O 错误,且确认只是救援模式、配置错误或一次性异常,可以尝试:
sudo mount -o remount,rw /
数据盘则把 / 换成实际挂载点。命令失败时不要反复强制执行;即使命令成功,也要继续观察 dmesg 和 journalctl,确认分区没有再次变成只读。
出现持续 I/O 报错时,不建议把强制重挂载当作修复。 写入恢复只是表象,底层故障仍可能让数据继续损坏。
五、文件系统检查应该怎么做
ext4 文件系统可使用 fsck 或 e2fsck 检查,但不能对正在读写挂载的分区直接修复。数据盘应先停止相关服务并卸载,根分区则通常需要进入救援模式或从服务商控制台挂载救援系统。
sudo umount /dev/vdb1
sudo fsck -f /dev/vdb1
设备名必须以 lsblk -f 和 findmnt 的实际结果为准,不能照抄示例。XFS 应使用 xfs_repair,也需要先卸载;不要拿 ext4 的命令处理 XFS。
修复前最好先做云盘快照或块级备份。文件系统修复会改动元数据,没有备份时盲目确认修复并不安全。
六、修好后还要检查哪些地方
恢复可写后,先检查数据库、Web 服务和容器是否因写入失败而退出,再确认日志、缓存、临时文件及应用数据是否完整。可以执行:
systemctl --failed
journalctl -p err -b --no-pager
df -hT
df -ih
随后检查 /etc/fstab 中的 UUID、文件系统类型和挂载选项,避免下次重启再次只读或挂载失败。重要业务还应补上异地备份,云盘快照不能完全代替可恢复性经过验证的备份。
七、什么时候应该直接联系服务商
日志反复出现 I/O error、同一块云盘多次掉线、重启后很快再次只读,或控制台同时出现宿主机维护和磁盘异常时,应尽快停止非必要写入并联系服务商。提交工单时附上故障时间、实例 ID、设备名和内核日志片段,排查会更快。
如果准备迁移重要业务,可选择支持快照、备份和灵活升级的平台,例如 萤光云 和 LightNode。但换服务器之前仍要先把能读取的数据安全导出,避免在故障盘上继续折腾。
常见问题
问:Read-only file system和Permission denied一样吗?
答:不一样。前者是整个文件系统不允许写入,后者多半是用户、目录或文件权限不足。
问:重启VPS能恢复吗?
答:有时会暂时恢复,但文件系统或云盘故障没有消失时还会再次变成只读。
问:可以直接执行mount -o remount,rw吗?
答:先查内核日志。持续出现I/O错误时不应把强制重挂载当作修复。
问:fsck能在线执行吗?
答:只读检查和修复要求不同,真正修复通常应在目标文件系统卸载后进行。
问:修复前一定要做快照吗?
答:重要数据建议先快照或备份,因为文件系统修复会改动元数据。
文件系统突然只读,核心不是尽快把 ro 改回 rw,而是确认它为什么进入保护状态!先保存日志和数据,再修复文件系统或底层磁盘,能减少二次损坏的风险。


