当前位置: 首页 > news >正文

云主机文件系统readonly处理案例

本文由作者朱益军授权网易云社区发布。


背景

维护巡检云主机时,发现有一台运行redis的云主机状态显示维护中,登录该实例查看,系统盘变成readonly。本文简单分析该问题出现原因,并为运维人员提供常见处理方法及建议。

故障分析

查看云主机dmesg信息发现,系统运行过程中python进程发生segfault,随后vda(云主机配置virtio-blk,故盘符显示为vda)系统盘I/O error。

[8349644.226151] Clock: inserting leap second 23:59:60 UTC
[8744049.152007] The scan_unevictable_pages sysctl/node-interface has been disabled for lack of a legitimate use case.  If you have one, please send an email to linux-mm@kvack.org.
[30940223.794815] python[28313]: segfault at 58 ip 00000000004aa8c7 sp 00007f2b44a2f560 error 4 in python2.7[400000+257000]
[42731185.176179] end_request: I/O error, dev vda, sector 12590864
[42731185.468491] EXT4-fs error (device vda1): __ext4_get_inode_loc:3697: inode #403168: block 1573613: comm updatedb.mlocat: unable to read itable block
[42731185.471307] Aborting journal on device vda1-8.
[42731185.472359] journal commit I/O error
[42731185.473183] EXT4-fs error (device vda1): ext4_journal_start_sb:327: Detected aborted journal
[42731185.474761] EXT4-fs (vda1): Remounting filesystem read-only
[42731185.588205] EXT4-fs (vda1): Remounting filesystem read-only
[42731185.750067] end_request: I/O error, dev vda, sector 12590872
[42731185.751578] EXT4-fs error (device vda1): __ext4_get_inode_loc:3697: inode #403173: block 1573614: comm updatedb.mlocat: unable to read itable block
[42817852.384073] EXT4-fs (vda1): error count since last fsck: 4
[42817852.384077] EXT4-fs (vda1): initial error at time 1517610339: __ext4_get_inode_loc:3697: inode 403168: block 1573613
[42817852.384081] EXT4-fs (vda1): last error at time 1517610340: __ext4_get_inode_loc:3697: inode 403173: block 1573614
[42904359.904061] EXT4-fs (vda1): error count since last fsck: 4
[42904359.904065] EXT4-fs (vda1): initial error at time 1517610339: __ext4_get_inode_loc:3697: inode 403168: block 1573613
[42904359.904069] EXT4-fs (vda1): last error at time 1517610340: __ext4_get_inode_loc:3697: inode 403173: block 1573614
[42990867.424056] EXT4-fs (vda1): error count since last fsck: 4
[42990867.424060] EXT4-fs (vda1): initial error at time 1517610339: __ext4_get_inode_loc:3697: inode 403168: block 1573613
[42990867.424064] EXT4-fs (vda1): last error at time 1517610340: __ext4_get_inode_loc:3697: inode 403173: block 1573614复制代码

基本可确定是业务把系统盘写坏了。通常发生该问题的场景有二:

一、云主机和宿主机IO繁忙,云主机的IO请求得不到及时的响应,从而产生磁盘IO错误,为了保护磁盘数据会remount分区为只读;

二、云主机被强制关机,导致磁盘出现文件系统错误故障。


故障处理

通常的解决方法是重启系统以root用户进入单用户模式,运行fsck.ext3 –y /dev/vda(如果是ext4使用fsck.ext4修复),/dev/vda是系统/根分区。修复完reboot进入系统。以debian系统为例:

1、重启系统,grub菜单会出现正常启动和修复模式(recovery mode)启动两个菜单项,选择修复模式启动;

2、进入修复模式,运行fsck工具修复;

3、重启进入正常模式启动。

注意:

1、运维人员在重启云主机之前尽量先收集一些关键的日志,如/var/log下面的一些日志、dmesg等,有条件也要收集宿主机的日志;

2、fsck是Linux内核自带工具,它不仅可以对文件系统进行扫描,还能修正文件系统的一些问题。fsck扫描文件系统时一定要在单用户模式、修复模式或把设备umount后进行。建议在单用户模式下运行。如果扫描正常运行中的系统,会造成系统文件损坏,需要root权限执行。


建议与思考

1、当前开发要定位问题,需要申请宿主机权限等流程,无法及时上去定位;

2、当前云主机的日志收集功能尚不完善,呈现的日志比较杂、乱、实用性不高,需要适当进行修改调整。另外,运维人员也不知道要收集哪些日志可支撑开发定位;

开发正在考虑开发一个一键式日志收集工具,集成到版本中,定期采集系统数据并归档,或者在发生故障时,由运维先收集分析,再交给开发定位,这样效率会高一些。


更多网易技术、产品、运营经验分享请访问网易云社区。

相关文章:
【推荐】 知物由学 | 如何从勒索软件的攻击中全身而退
【推荐】 MongoDB复制集与Raft协议异同点分析
【推荐】 基于开源,强于开源,轻舟微服务解决方案深度解读


相关文章:

  • STM8S003F3通过PWM波实现三基色呼吸灯(转)
  • 前端技术周刊 2018-12-10:前端自动化测试
  • puppet连载22:define用法
  • Django2.0——请求与响应(下)
  • 华为敏捷DevOps实践:如何从Excel管理软件的方式中走出来
  • CentOS7配置Kubernetes(K8S)集群
  • Docker在Linux/Windows上运行NetCore文章系列
  • 使用Python将MongoDB数据导到MySQL
  • Rem之自适应js
  • ubuntu16.04下安装postgresql 10.3
  • Groovy与Java集成常见的坑
  • SQLserver视图修改sql
  • Visual Studio Code编写C/C++代码常见问题
  • iOS8 自定义UITabBar (使用popToViewController导致的UITabBarButton重叠的问题)
  • 排序算法(Merge Sort)中的 merge 步
  • android图片蒙层
  • angular组件开发
  • C++11: atomic 头文件
  • CSS 三角实现
  • Java的Interrupt与线程中断
  • Mithril.js 入门介绍
  • PAT A1120
  • React-redux的原理以及使用
  • SpringCloud集成分布式事务LCN (一)
  • 彻底搞懂浏览器Event-loop
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 模型微调
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 我的面试准备过程--容器(更新中)
  • 运行时添加log4j2的appender
  • 智能网联汽车信息安全
  • 自定义函数
  • Java总结 - String - 这篇请使劲喷我
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #微信小程序:微信小程序常见的配置传值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)大型网站的系统架构
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET CLR基本术语
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net Web项目创建比较不错的参考文章
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理