1,系统内核编译选择PAGE_SIZE 64k。(arm64架构支持64k page,x86不支持)
2,ext4文件系统创建时blocksize 设置为64k。(默认为4k)
3,在该文件系统下任意目录内,创建一级子文件。数量超过约1500万时,问题触发。
在引入麒麟修复补丁前,目前世界上所有ext4文件系统在特定条件下都存在这种缺陷。
特定条件参见‘复现步骤’。
银河麒麟高级服务器操作系统 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 SP2
aarch64
升级软件包"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/
根据解决方案将系统的内核升级到指定版本即可解决此问题。修复补丁已经提交到国际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