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

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

麒麟软件产品专区: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文件系统已损坏,建议不要再进行写入操作,及时备份重要文件并重新初始化文件系统。

相关推荐
赶紧回家去几秒前
Ansible基本使用
运维·ansible
Suckerbin3 分钟前
Open SSH服务配置
linux·运维·ssh
雨会停rain4 分钟前
centos部署rabbitmq
linux·centos·rabbitmq
Maynor9965 分钟前
Nginx 迁移到 Caddy:一次完整的反向代理配置迁移实践
运维·nginx
苹果醋311 分钟前
springboot-springboot官方文档架构
java·运维·spring boot·mysql·nginx
低配加班人32 分钟前
【Jetson AGX Orin(Arm Linux)安装pyqt5及Format_BGR888报错】
linux·arm开发·qt
葱白有滋味1 小时前
浏览器无法访问非80端口网页
运维·服务器·网络
极客代码1 小时前
Linux标准I/O库汇总整理
linux·c语言·开发语言·文件·文件操作
烧烤大团子1 小时前
记录cuda12.4 ubuntu20.04安装DGL
linux·经验分享
AI新视界2 小时前
『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC
linux·ubuntu·vnc·vncviewer·vncserver