
近日,麒麟软件的工程师定位到Linux内核中的一项bug,并将问题描述、复现步骤、触发条件、可能的优化方案等信息同步到上游内核社区。
问题现象描述
在服务器上将数据盘格式化成ext4文件系统时,如果强制指定blocksize 64K大小,在同一目录下文件数量达到千万级别时,可能导致系统ext4文件系统异常,文件写入失败等问题。
问题定位
经过层层定位,发现ext4 get_dx_countlimit()函数有三处代码可能导致问题的产生。下图函数主要是在校验fakedirent -> rec_len的长度,在不符合规范的情况下可能返回空值。

ext4 中目录采用了B+树(htree)结构来加速查找过程。这其中将节点划分为了根节点和中间节点,而fakedirent 是每个节点的第一个entry,用于记录整个节点的大小。

对此, rec_len的可能取值有以下两种情况:
• rec_len = blocksize(表明属于中间节点 struct dx_node)
• 等于12个byte大小(表明属于根节点 struct dx_root)
在 rec_len 不属于以上两种取值时,程序会报错并返回空值。通过问题定位,发现故障文件中rec_len的值为0xffff,这是由于blocksize 为64K时,rec_len的值应当为0x10000, 但是由于字节大小限制,会使用rec_len = 0xffff 来代表 rec_len = 0x10000。而在最初的代码中,对rec_len进行校验时存在异常,可能导致问题出现。
问题复现
在实验环境模拟现场复现,通过在同类服务器上数据盘在格式化成ext4时强制制定blocksize 64K大小,同时在一个目录下创建 2000 万个文件夹,成功复现问题现象,此时文件夹无法进行读取,系统日志内出现了 ext4 文件系统的报错。同时,按照同样的复现步骤,使用其他发行版本和 Linux 社区最新内核,指定 blocksize 64K大小,也成功复现了这一问题,证明这一问题同时存在于社区以及主流的Linux系统上。
问题修复
基于上述分析及定位,麒麟软件推出修复方案,并将该方案第一时间推送社区(点击阅读原文可访问社区链接),提醒所有ext4用户在此场景下都会遭遇相同的问题。
同时,麒麟软件建议问题修复前:
• 在业务部署时格式化存放数据硬盘,采用默认值blocksize 4K, 避免强制设置64K
• 在业务层面进行优化, 避免在同一个目录写入千万级别的文件
若已经有机器出现了该文件系统错误,最佳的方案是通过fsck-r对文件系统进行修复、再升级修复的内核包。考虑到fsck修复存在数据丢失风险以及数据的重要性,不建议出现问题后多次执行fsck操作。
目前,社区已认可该方案,银河麒麟高级服务器操作系统 V10 SP1 已更新内核修复此问题,其他版本也将合入社区补丁。
麒麟v10系统,麒麟操作系统 linux
银河麒麟桌面操作系统V4 桌面 民用(一年服务)
银河麒麟桌面操作系统V10 桌面 民用(一年服务)
银河麒麟服务器操作系统V4 服务器 民用(一年服务)
银河麒麟桌面操作系统V10 SP1 2303
银河麒麟桌面操作系统(兆芯版)v10
银河麒麟桌面操作系统(海光版)v10
银河麒麟桌面操作系统(amd64版)v10
中标麒麟v7操作系统,麒麟v10操作系统,中标麒麟服务器系统v7.0 ,麒麟操作系统工控版
银河麒麟高级服务器操作系统V10 服务器 民用(一年服务)
银河麒麟桌面操作系统V4(国防版) 桌面 军用(三年服务)
银河麒麟桌面操作系统V10(国防版) 桌面 军用(三年服务)
银河麒麟服务器操作系统V4(国防版) 服务器 军用(三年服务)
银河麒麟高级服务器操作系统V10(国防版) 服务器 军用(三年服务)
银河麒麟安全云桌面软件,银河麒麟操作系统V10,星光麒麟万物智联操作系统,星光麒麟操作系统1.0(StarKylin 1.0),银河麒麟桌面操作系统的便捷式云存储产品——“麒麟云盘”,银河麒麟涉密专用,麒麟KOS
代理体系:麒麟总代,麒麟金牌,麒麟经销商,麒麟分销商,麒麟区域分销商
CentOS社区于2020年12月08日官方宣布其CentOS项目将陆续停服。此举对处于生命周期中CentOS版本产生以下影响:
CentOS Linux 8(以下简称CentOS 8)已于2021年12月31日停止更新和发布(EOL,End Of Life)。
CentOS Linux 7(以下简称CentOS 7)将于2024年6月底在生命周期结束后停止维护,已在2020年第4季度停止更新。
Kylinos, openkylin, 银河麒麟操作系统,麒麟操作系统,中标麒麟,开放麒麟 ,麒麟软件官方网站,银河麒麟高级服务器操作系统V10,银河麒麟系统官方网站,银河麒麟桌面操作系统 V10 SP1
天津麒麟信息技术有限公司成立于2014年,是中国电子信息产业集团和天津市政府在安全可控信息系统领域进行战略合作的重大部署, 是中国电子集团布局安全可控信息产业的核心企业之一。
2019年12月,为顺应产业发展趋势、市场客户需求、国家网络空间安全战略需要,发挥央企在国家关键信息基础设施建设中的主力军作用,中国电子旗下的两家操作系统公司,中标软件和天津麒麟,已经强强整合,打造中国操作系统新旗舰——麒麟软件有限公司。天津麒麟信息技术有限公司更名为麒麟软件有限公司(简称“麒麟软件”)。天津麒麟和中标软件
麒麟软件以安全可信操作系统技术为核心,旗下拥有“中标麒麟”、“银河麒麟”两大产品品牌,既面向通用领域打造安全创新操作系统和相应解决方案,又面向国防专用领域打造高安全高可靠操作系统和解决方案,现已形成了服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云等产品,能够同时支持飞腾、龙芯、申威、兆芯、海光、鲲鹏等国产CPU。企业坚持开放合作打造产业生态,为客户提供完整的国产化解决方案。包括麒麟软件的银河麒麟桌面终端操作系统、银河麒麟服务器操作系统、银河麒麟工控机及嵌入式操作系统等。银河麒麟桌面终端操作系统与国际当前内核版本5.4同步,除提供传统PC模式外,还提供平板模式,实现多终端融合。银河麒麟服务器操作系统V4演进至V10版本,同源支持飞腾、龙芯、申威、兆芯、海光、鲲鹏等自主CPU及x86平台,构建基于自主软硬件、密码技术的内核与应用一体化的内生本质安全体系。银河麒麟工控机及嵌入式操作系统定制性强,提供可视化维护界面,支持网络、蓝牙、多屏等丰富配置功能,对国产工控、嵌入式领域CPU全兼容,在金融、高速、轨道交通、电力等行业常用外设,如ATM机、自助机、ETC等场景有广泛应用。
适用型号
国产操作系统、麒麟软件、麒麟操作系统V10 、银河麒麟桌面操作系统V4、银河麒麟高级服务器操作系统V10、中标麒麟桌面操作系统软件V7.0、中标麒麟安全增强电子邮件系统V5、中标麒麟可视化隔离交换一体机、负载均衡–银河麒麟负载均衡系统V1.0,麒麟操作系统V10 麒麟操作系统价格,麒麟操作系统命令,麒麟操作系统官网,银河麒麟高级服务器操作系统(鲲鹏版)V10,银河麒麟高级服务器操作系统(国防版)V10
服务区域:
四川麒麟 成都麒麟 西藏麒麟 重庆麒麟贵州麒麟 贵阳麒麟 云南麒麟 昆明麒麟,麒麟软件拥有银河麒麟、中标麒麟两大品牌,形成服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云
四川麒麟: 德阳麒麟 绵阳麒麟,攀枝花麒麟,西昌麒麟,雅安麒麟,内江麒麟,资阳麒麟,南充麒麟,眉山麒麟,乐山麒麟,自贡麒麟 泸州麒麟 广元麒麟 遂宁麒麟 宜宾麒麟 广安麒麟 达州麒麟 雅安麒麟 巴中麒麟 资阳麒麟 攀枝花麒麟 凉山彝族自治州麒麟 甘孜藏族自治州麒麟 阿坝藏族羌族自治州麒麟
解决方案:金融解决方案,金融云解决方案
成都科汇科技有限公司( 麒麟 操作系统 –价格优 服务好)
地址:四川省成都市武侯区人民南路四段一号时代数码大厦18楼A5
电话咨询热线:400-028-1235
QQ咨询热线: 1325383361
24小时咨询热线:180 8195 0517(微信同号)