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