ext4文件系统数据丢失(KYUA-202308-1256)
发布时间:2023-09-06 浏览次数:882次 作者:湖南省计算产业生态创新中心 (长沙)
更新简述:
ext4文件系统在同一目录下创建一级子文件数量约为1500万个时,文件系统有如下报错: EXT4-fs error (device xx): ext4_dx_csum_set:492: inode #xxxx: comm xxxxx: dir seems corrupt? Run e2fsck -D. EXT4-fs error (device xx): ext4_dx_csum_verify:463: inode #xxxx: comm xxxxx: dir seems corrupt? Run e2fsck -D. EXT4-fs error (device xx): dx_probe:856: inode #xxxx: block 8188: comm xxxxx: Directory index failed checksum 该报错有潜在导致数据丢失的可能。
影响操作系统版本:
银河麒麟高级服务器操作系统 V10 SP1 aarch64
银河麒麟高级服务器操作系统 V10 SP2 aarch64
银河麒麟高级服务器操作系统 V10 SP3 aarch64
1. 复现步骤
(1,系统内核编译选择PAGE_SIZE 64k。(arm64架构支持64k page,x86不支持)
(2,ext4文件系统创建时blocksize 设置为64k。(默认为4k)
(3,在该文件系统下任意目录内,创建一级子文件。数量超过约1500万时,问题触发。
2. 问题分析结果
在引入麒麟修复补丁前,目前世界上所有ext4文件系统在特定条件下都存在这种缺陷。
特定条件参见‘复现步骤’。
3. 补丁及下载地址
银河麒麟高级服务器操作系统 V10 SP1 aarch64
升级软件包"kernel"到"4.19.90-23.37.v2101.ky10"或更高版本。
补丁包下载地址:https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/
银河麒麟高级服务器操作系统 V10 SP2aarch64
升级软件包"kernel"到"4.19.90-25.30.v2101.ky10"或更高版本。
补丁包下载地址:https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/
银河麒麟高级服务器操作系统 V10 SP3 aarch64
升级软件包"kernel"到"4.19.90-52.27.v2207.ky10"或更高版本。
补丁包下载地址:https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/updates/
4. 修复和更新方法
根据解决方案将系统的内核升级到指定版本即可解决此问题。修复补丁已经提交到国际ext4社区。参考社区链接:https://lore.kernel.org/all/20230731010104.1781335-1-zhangshida@kylinos.cn/
更新方法:
方法一:配置源进行升级安装
1. 打开软件包源配置文件,根据仓库地址进行修改。
仓库源地址:
银河麒麟高级服务器操作系统 V10 SP1 aarch64:https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/aarch64/
银河麒麟高级服务器操作系统 V10 SP2 aarch64:https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/
银河麒麟高级服务器操作系统 V10 SP3 aarch64:https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/updates/aarch64/
2. 配置完成后执行更新命令进行升级,命令如下:
yum update kernel
方法二:下载安装包进行升级安装
根据使用的操作系统版本,下载“补丁及下载地址”一节中对应的软件包列表进行升级安装, 命令如下:
yum install kernel