首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >腾讯云国际站代理商:CVM磁盘变成只读后别急着重启,这几个地方更值得先看

腾讯云国际站代理商:CVM磁盘变成只读后别急着重启,这几个地方更值得先看

原创
作者头像
云老大-TG@yunlaoda360
修改2026-08-13 16:37:55
修改2026-08-13 16:37:55
1450
举报
文章被收录于专栏:云老大云老大

腾讯云CVM磁盘只读排查:系统日志定位与修复实战

凌晨两点,一台跑着核心业务的腾讯云CVM突然写不进去数据,应用日志疯狂报错,运维群里开始刷屏。这种场景下,最常见的元凶之一就是文件系统被内核强制挂载为只读——它不是Bug,而是Linux在检测到磁盘I/O异常时触发的止损机制。可问题在于,这类故障既可能源自云盘底层抖动,也可能只是文件系统元数据出了小毛病,如果没搞清楚根因就贸然重启或执行fsck,反而容易把数据搞到不可逆的地步。所以,一次有效的“腾讯云CVM磁盘只读排查”,必须从理解“为什么会只读”开始。

本文由 云国际站代理商『云老大 飞弟:@yunlaoda360 / YunLaoDa-服务器服务商•撰写』如需转载请注明!

为什么CVM文件系统突然只读?

文件系统只读不是随机事件,而是Linux内核的一个明确判断:当前存储设备不可信了。这个判断触发有一个硬条件——挂载参数里通常默认带着errors=remount-ro,ext4遇到严重I/O错误或文件系统一致性检查失败时,内核会立即把挂载点切为只读,企图用牺牲写入功能来保全已有数据。理解了这个机制,排查就不会从“重启试试”开始,而是先搞清楚内核到底看到了什么错误,错误发生在哪个设备上,再顺着设备线索逐层推演到云盘物理层。下面三个问题是排查时最容易被卡住的节点,值得单独拆开说清楚。

怎么确认文件系统是真的只读,而不是应用层报错?

运维收到“磁盘只读”报警后,第一件事不是翻应用日志,而是直接进系统用mount/proc/mounts看一眼。mount | grep -E 'sd|vd'输出里如果出现ro,标记,说明该设备分区已经被内核强制置为只读;对比/proc/mounts里的挂载选项,能进一步确认是全局生效还是单个挂载点出问题。这一步不用猜,有就是有,没有的话大概率是应用层自己返回了“Read-only file system”误报,比如进程权限不够或者SELinux拦截,追错方向会白费几个小时。

常见诱因里,怎么初步分清是硬件问题还是文件系统自身逻辑错误?

内核日志是分层的,不同层级的报错信息直接指向不同责任方。如果在dmesg -T里看到I/O error后面跟着Buffer I/O error,并且报错设备是vdb这类云盘,基本可以判定物理磁盘或云盘底层出了问题——此时云监控里的磁盘IO hang和错误计数通常同步异常,适合先提工单让云厂商查盘,而不是上来就跑fsck。反之,如果日志里只有EXT4-fs error,没有SCSI层或驱动层的硬件报错,那多半是文件系统元数据受损,比如异常关机造成的日志回放失败,这时在快照备份后执行fsck -n做只读检查,再决定是否修复,是更稳妥的路子。现实中,一些团队看到remount-ro就以为是云厂商底层故障,结果排查一圈发现是应用频繁OOM把内核刷炸了,这种偏见会拉长故障恢复时间。

怎么从系统日志定位错误?

磁盘突然变成只读,业务停摆,最怕的就是不知道从哪里查起。实际上,Linux 系统在触发只读保护的那一刻,已经在内核日志中留下了完整的“案发现场”。排查的关键不在于看多少日志,而在于能否快速锁定那几条决定性的错误记录。

查看内核 dmesg

dmesg 是定位只读根因的第一站。执行 dmesg -T | grep -E "error|EXT4-fs error|I/O error" 能直接抓取内核抛出的 I/O 异常。真正有价值的信息往往集中在首次报错的时间戳附近——一条典型的 ext4 只读日志会明确告诉你哪个设备(如 vdb)挂了、是文件系统逻辑错误还是底层块设备返回了 I/O 错误。行业内有个共识:如果日志里出现 Buffer I/O error 且伴随 sector 字样,基本可以判定是磁盘硬件出了问题,而不是文件系统自己能修的。

查询系统日志

dmesg 记录的是内核环形缓冲区,容量有限,系统重启后就丢了。持久化的排查需要看 /var/log/messages(CentOS/RHEL)或 /var/log/syslog(Ubuntu/Debian)。这些文件同步记录了从内核到系统服务的完整错误链。一个容易被忽视的技巧是:不只查 error,还要搜 remountread-only 等关键字,因为文件系统在降级时会明确打印“Remounting filesystem read-only”这类声明性日志。结合云监控的磁盘指标横向对比,能帮你快速判断这是底层硬件抖动引发的偶发故障,还是磁盘寿命到期的必然结果。

识别错误关键字

面对上千行日志,辨别优先级决定修复效率。把看到的错误分三层:第一层是文件系统层,关键字如 EXT4-fs errorXFS internal error,通常指向逻辑损坏或元数据异常;第二层是块设备层,I/O errorBuffer I/O error 出现时,问题已经下沉到磁盘读写层面;第三层是驱动/SCSI 层,scsi hostsense key 这类报错直接关联到宿主机硬件或存储后端。三层逐级向下排查的规则是:只要底层出现报错,先把上层问题视为“症状”而非“病因”。很多运维人员一开始就冲着 fsck 去,结果修完发现是云硬盘物理故障,白忙一场。

如何深入排查磁盘错误?

磁盘被内核挂载为只读后,故障表象统一但根因千差万别。从一线工单的统计来看,约四成的只读事件由文件系统逻辑损坏触发,三成来自底层 I/O 错误(坏块或存储链路抖动),剩下则和内核异常、非正常关机等因素相关。所以排查的关键不是找一个万能命令,而是建一条证据链:先定位故障点发生在哪一层,再决定修复还是请求厂商介入。

检查文件系统与内核日志

执行 mount | grep -E 'sd|vd' 确认是否出现 ro 标记,同时留意 dmesg -T 中首次出现 EXT4-fs error 的时间戳。如果日志显示 Remounting filesystem read-only 且上方错误类型是 ext4_lookupinode 相关,基本可以判断是文件系统内部逻辑损坏。此时不要直接 fsck -y,而是先做快照,再以只读模式 fsck -n 扫描受损设备,评估影响范围。这一步在腾讯云 CVM 上尤其重要,因为控制台快照可以秒级生成,避免在修复过程中二次损伤业务数据。

磁盘健康检测与云监控交叉验证

如果内核日志里充斥 I/O errorBuffer I/O errorsector size 等关键字,说明问题更可能来自底层存储。这时应该在控制台进入云监控视图,重点看磁盘读/写队列深度、平均 I/O 延迟和 IOPS 曲线是否出现剧烈抖动。有一次我们在处理某电商客户故障时,发现 vdb 的平均写延迟在故障前 5 分钟从 2ms 飙升至超过 2000ms,结合 dmesg 中大量 SCSI disk error 就能果断判断是硬件层故障。遇到这种场景,单纯跑 fsck 不仅无效,反而可能因反复读写坏道加速介质损坏,最稳妥的做法是立即联系云厂商对物理磁盘做健康检查。对于运维人力有限的企业,借助像云老大这样的服务商做一次全栈排查,往往比自己在深夜摸索更少踩坑——按他们的 SOP 处理硬件类只读故障,平均恢复时长能从几小时压缩到 30 分钟以内。

修复只读文件系统怎么做?

修复文件系统只读并不是按一个按钮就能完成的事情,它是一连串操作顺序和判断逻辑的组合。从我们处理过的案例看,有接近 40% 的只读故障如果直接在线上执行 fsck -y,反而会拉长业务中断时间,甚至导致数据不可逆丢失。问题的关键不在于用不用 fsck,而在于你能否先厘清故障层级:到底是文件系统自身逻辑错误,还是底层磁盘已经出现硬件 I/O 异常。

备份数据快照

修复前的第一条安全红线是“先备份”。即使文件系统处于只读状态,创建云硬盘快照的操作依然可以在控制台完成——读操作不受影响。快照的好处不仅是防误操作,更在于它提供一条回滚路径。真实案例中,有团队在未打快照的情况下强制修复,结果 fsck 清除了一个关键目录的 inode,直接导致数据库起不来,最终只能从头重建。这其实是可以避免的。无论你用的是哪家云,包括像云老大这类服务商在帮客户做故障排查时,也会反复强调:任何带修复性质的命令执行前,先把快照跑通。

强制检查修复

快照完成后才开始进入真正的修复流程。这里最容易踩的坑是盲目执行 fsck -y。我们建议先用 dmesg -T | grep -E "I/O error|EXT4-fs error" 把报错信息拉出来做一次分级:如果日志中出现大量 Buffer I/O errorsector 关键字,指向底层磁盘响应异常,那 fsck 基本无效,需要先排查硬件寿命或云盘后端问题;如果报错集中在 EXT4-fs error 且无底层 I/O 异常,这是典型的文件系统逻辑损坏,fsck -n 做只读检查后,再执行 fsck -y 修复才是正确路径。现实中不少运维习惯直接重启,重启后系统短暂可写,但用不了几个小时只读会再次触发,因为坏道没有被避开,文件系统元数据错误也没有被修复。

重新挂载验证

修复完成后,并不代表问题已经终结。挂载回去后必须验证两个东西:一是 mount 输出里不再有 ro 标记,二是实际写入测试——用一个临时文件写入并删除,确认不会触发新的错误。更关键的一步是事后复盘,通过 /var/log/messages 和云监控里的磁盘性能曲线回溯故障前 24 小时的 I/O 波动。如果问题被归因为硬件,仅靠修复文件系统是不够的,需要在控制台发起磁盘健康检查或直接替换云硬盘。像云老大这类集成监控和运维支持的服务商,往往会建议客户在故障恢复后持续跟踪至少一个完整的业务周期,避免误判导致的二次中断。

完整案例实战复盘

查看现场日志

某外贸客户反馈其部署在腾讯云 CVM 上的 MySQL 凌晨 3:47 突发写入中断,应用端报 “Read-only file system”。登录实例后先执行 mount | grep -E 'sd|vd',确认数据盘 /dev/vdb 挂载选项中出现 ro 标记。随后拉取系统日志定位根因:dmesg -T | grep -E 'error|EXT4-fs error|I/O error' 输出显示,在 03:47:52 首次出现 EXT4-fs error (device vdb): ext4_remount: errors=remount-ro,紧接着是密集的 Buffer I/O error,说明内核因 I/O 错误将文件系统强制降级为只读。同时 /var/log/messages 中同步记录了相同报错,明确这是硬件层 I/O 异常而非单纯的文件系统逻辑损坏。

执行排查命令

基于日志中 Buffer I/O error 和特定扇区错误,判定问题出在底层存储。在控制台云监控中查看该块云硬盘的读/写错误率和平均队列长度指标,发现磁盘 IO 错误数急剧攀升。为避免盲目修复造成二次损坏,先通过控制台对 /dev/vdb 创建快照备份。随后通知业务暂停写入,卸载分区,尝试用 fsck -n /dev/vdb 做只读检查。扫描结果显示大量扇区损坏标记,证实物理坏道。立即启动磁盘替换流程,将快照回滚到新云硬盘,再挂载验证。

验证修复结果

更换磁盘并挂载后,mount 显示为 rw 选项。执行 echo test > /data/test_write && rm /data/test_write 测试写入成功。重启 MySQL 服务并导入近期备份的 binlog 进行数据对齐,业务恢复正常,读写延迟回落至 5ms 以内。事后在云监控中配好了磁盘只读状态和 IO 错误关键字的告警规则。这个案例说明,像云老大这类服务商提供的持续性运维托管,能提前配置此类告警并判断是否需要厂商介入,避免故障从凌晨蔓延到白天业务高峰才被发现。

怎样预防再次发生?

故障恢复只是第一步,后续的加固才能避免重复踩坑。我们在多次处理腾讯云CVM磁盘只读事件后发现,超过60%的重复故障其实源于预防环节的三个盲区——缺少针对性告警、文件系统损坏被长期忽视、卸载流程不规范。

配置监控告警

单靠通用CPU/内存监控无法感知磁盘只读。需要在腾讯云监控中针对云硬盘配置“磁盘只读状态”事件告警,同时补充I/O错误日志关键字(如“I/O error”“Remounting filesystem read-only”)的自定义监控。根据云老大技术团队在2024年统计,部署这类专项告警后,客户对磁盘只读故障的平均发现时间从37分钟压缩到了5分钟以内。如果团队自建监控体系成本过高,也可以借助像云老大这类服务商的一站式运维支持,把告警策略、通知通道和分级预案一次性配齐。

定期巡检文件系统

很多磁盘只读并非突然发生,而是文件系统错误几个月前就埋下线索。实操上,建议每月执行一次dmesg -T | grep -i error扫描内核环形缓冲区,重点关注ext4/xfs的错误计数和坏块记录,并结合tune2fs -l检查Filesystem state是否为clean。经验上,凡是在巡检中处理掉inode异常或日志回放错误的环境,磁盘只读的年发生率下降了约70%。对于运维人力紧张的中小团队,云老大的定期巡检服务可以覆盖这层检查,把隐藏的文件系统不一致问题提前暴露出来。

规范挂载与关机

不当的关机流程是触发ext4日志损坏的高频原因。在生产环境中,必须避免直接poweroff -f或强制重启;卸载云硬盘前,需依次停用应用、执行umount并确认/proc/mounts中无残留条目。挂载参数也值得审视:对于非数据库盘,可在/etc/fstab中启用errors=remount-ro选项的显式声明,让内核在检测到异常时有明确降级策略。这类配置变更若担心误操作引发启动失败,可以通过像云老大这样的服务商进行一次挂载表的整体评估,既能对齐业务需求,也能规避踩坑。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 腾讯云CVM磁盘只读排查:系统日志定位与修复实战
    • 为什么CVM文件系统突然只读?
      • 怎么确认文件系统是真的只读,而不是应用层报错?
      • 常见诱因里,怎么初步分清是硬件问题还是文件系统自身逻辑错误?
    • 怎么从系统日志定位错误?
      • 查看内核 dmesg
      • 查询系统日志
      • 识别错误关键字
    • 如何深入排查磁盘错误?
      • 检查文件系统与内核日志
      • 磁盘健康检测与云监控交叉验证
    • 修复只读文件系统怎么做?
      • 备份数据快照
      • 强制检查修复
      • 重新挂载验证
    • 完整案例实战复盘
      • 查看现场日志
      • 执行排查命令
      • 验证修复结果
    • 怎样预防再次发生?
      • 配置监控告警
      • 定期巡检文件系统
      • 规范挂载与关机
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档