磁盘突然变成只读,文件写不进去:先别重启,查这三处

举报
yd_241984912 发表于 2026/11/09 09:37:42 2026/11/09
【摘要】 服务器跑得好好的,突然写文件报错:Read-only file system。服务写不了日志,程序保存不了数据。重启大法这时候别急着用——只读挂载往往是文件系统在自我保护,先查清原因再动手,不然可能把还能抢救的数据也弄丢了。先确认是不是真的只读跑这两条:mount | grep ' / 'df -h /如果 mount 输出里根分区后面跟着 ro,那就是真的只读挂载了。df 可能还显示有空闲...

服务器跑得好好的,突然写文件报错:Read-only file system。服务写不了日志,程序保存不了数据。重启大法这时候别急着用——只读挂载往往是文件系统在自我保护,先查清原因再动手,不然可能把还能抢救的数据也弄丢了。

先确认是不是真的只读

跑这两条:

mount | grep ' / '

df -h /

如果 mount 输出里根分区后面跟着 ro,那就是真的只读挂载了。df 可能还显示有空闲空间——只读和写满是两回事,别混了。

再看内核日志,十分钟前发生了什么:

dmesg | tail -50

重点找 ext4、I/O error、remount 这类关键字。只读的原因基本逃不出下面三处。

第一处:文件系统出错,内核自动改成只读

这是最常见的原因。磁盘出现坏道、底层存储抖动、或者上次异常断电留下了不一致,ext4 在检测到错误后会按挂载参数的 errors=remount-ro 把分区改成只读,防止继续写入造成更大损坏。

dmesg 里一般能看到类似的字样:EXT4-fs error、I/O error, dev sda、Remounting filesystem read-only。

处理办法:先备份还能读的数据,然后卸载分区做检查:

umount /dev/vda1

fsck -y /dev/vda1

云服务器上操作前先打个快照再动手。fsck 修完重新挂载:

mount -o remount,rw /

如果 fsck 反复报错、或者修完很快又变只读,基本是盘本身有问题,别硬撑,挂新盘迁移数据。

第二处:有人(或者某个脚本)把它 remount 成了只读

不是每次只读都是故障。查一下最近有没有人动过挂载:

history | grep -i remount

cat /etc/fstab

fstab 里如果某一行写了 ro,或者某个定时任务、部署脚本里带了 mount -o remount,ro,分区就会被改成只读。这种情况 dmesg 里干净得很,没有任何错误。

处理很简单,改回读写挂载就行:

mount -o remount,rw /

然后把 fstab 或者脚本里那行 ro 改掉,不然下次重启又变回去。

第三处:底层存储出了问题,云盘被限制了

云服务器上还有一种情况:云盘欠费、到期、或者云平台侧的存储出现异常,平台会把盘置成只读。这种情况机器里面怎么查都查不出毛病,dmesg 干净、fsck 也没问题。

这时候去云厂商控制台看一眼云盘状态:有没有欠费提醒、盘是不是被标记异常、有没有快照或备份策略在跑。欠费就补齐,平台侧异常就提工单,别在机器里瞎折腾。

只读是保护,不是故障本身

记住一个顺序:先 mount 确认、再 dmesg 找原因、然后按原因处理。不要一上来就重启——重启解决不了坏道和欠费,还可能让正在写一半的数据彻底丢失。

平时防一手也不难:监控里加一条 dmesg 关键字告警(I/O error、EXT4-fs error),云盘开自动快照,根分区别塞满大文件。盘出问题不可怕,可怕的是发现的时候数据已经没了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。