【银河麒麟高级服务器操作系统-实例】集群存储文件系统异常,本地复现+详细分析+解决建议

了解更多银河麒麟操作系统全新产品,请点击访问

麒麟软件产品专区:https://product.kylinos.cn

开发者专区:https://developer.kylinos.cn

文档中心:https://documentkylinos.cn


服务器环境以及配置

【机型】物理机 TG225 B1

|----------|-------------------------|
| 处理器: | HUAWEI Kunpeng 920 5220 |
| 内存: | 512G |
| 整机类型/架构: | ARM |
| BIOS版本: | Huawei Corp.5.19 |

【内核版本】

4.19.90-23.42.v2101.ky10.aarch64

【OS镜像版本】

银河麒麟高级服务器操作系统 Kylin-Server-10-SP1-Release-Build20-20210518-arm64

【第三方软件】

阿里云(k8s集群)+华为csi组件访问k8s集群存储

现象描述

pod飘逸后挂载失败,通过"blkid -o udev /dev/dm-35命令和lsblk命令查看不到文件系统属性, 手动mount 挂载时,提示指定文件系统类型,mount -t ext4 后可正常挂载和访问。k8s集群是使用CSI插件自动挂载文件系统,无法指定-t 文件系统类型,还需查明具体什么原因导致的,如何解决。mount挂载报错和csi插件日志报错,如图1:

图 1

现象分析

日志分析

通过查看messages日志,问题设备在首次绑定到KPVERW07主机,组成多路径设备mpathbb,如图 2所示。

图 2

在k8s日志中首次出现mount失败的情况,如图 3所示,由此可以判断,磁盘出现多个文件系统的情况可能发生在10:20:04-10:20:08之间或者更早。由于无早日志,无法判断问题发生的具体时间。

图 3

分析e2image收集的问题磁盘的元数据信息。通过命令dumpe2fs -i pvc.img查看文件元数据信息,分析后发现,存在组的可用块数量与可用块数位图无法对应的情况,如图 4中显示23513个可用块与块位图显示可用区域为0-32767(32768个)无法对应。同样可用inode数量与可用inode数位图也无法对应,从图 5可以看出可用inode位图最大为8192,但是其中存在大量不可用的inode号,远小于图 5中的8181个可用inode。怀疑此时磁盘上的ext4的元数据已经损坏。通过debugfs查看ext4的文件系统日志,但日志信息也已经损坏,无法查看,如图 6所示。

图 4

图 5

图 6

本地复现

将多路径设备,绑定到两台机器上,在两台机器上同时对该磁盘分别初始化ext4和xfs文件系统,偶现文件系统异常,和当前问题现象一致。如图7所示:

图 7

分析结果

综上所述,该问题应该是多个客户端或程序同时对同一个多路径设备进行操作,导致同一时间写入多个文件系统。

解决方案

1、使用mount -t指定文件系统的方式挂载问题磁盘,并将数据备份。

2、使用mkfs重新初始化新的文件系统。

3、重新挂载,并将备份数据恢复。

后续计划与建议

1、建议排查"阿里云(k8s集群)+华为csi组件访问k8s集群存储"应用使用场景(包括业务系统的指令操作),是否存在mkfs文件系统操作,以及是否存在多客户端同时对多路径设备mkfs操作的情况。

2、转储的元数据信息存在错误,怀疑盘上的ext4文件系统已损坏,建议不要再进行写入操作,及时备份重要文件并重新初始化文件系统。

相关推荐
蜜獾云2 分钟前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
小屁不止是运维3 分钟前
麒麟操作系统服务架构保姆级教程(五)NGINX中间件详解
linux·运维·服务器·nginx·中间件·架构
Hacker_Oldv8 分钟前
WPS 认证机制
运维·服务器·wps
bitcsljl17 分钟前
Linux 命令行快捷键
linux·运维·服务器
ac.char20 分钟前
在 Ubuntu 下使用 Tauri 打包 EXE 应用
linux·运维·ubuntu
Cachel wood39 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Youkiup1 小时前
【linux 常用命令】
linux·运维·服务器
qq_297504611 小时前
【解决】Linux更新系统内核后Nvidia-smi has failed...
linux·运维·服务器
_oP_i1 小时前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
weixin_437398211 小时前
Linux扩展——shell编程
linux·运维·服务器·bash