99 Star 56 Fork 230

src-openEuler / kernel

 / 详情

[21.03]物理机格式化mkfs.ext3 1.1T的磁盘,会卡住

已验收
缺陷
创建于  
2021-03-15 08:42

【环境信息】
系统:物理机 arm/x86
cpu:4核
OS版本: 版本 21.03
物理机型号:Taishan 200(Model 2280)
【问题复现步骤】
1.mkfs.ext3 /dev/sdd
【预期结果】
格式化成功
【实际结果】
格式化过程卡住
输入图片说明

【栈信息】
输入图片说明

相关issue:#I3ARNO:[21.03]物理机格式化mkfs.ext3 1.1T的磁盘,会卡住

附件
ga_beng_cui 2021-03-18 15:04
ga_beng_cui 2021-03-18 15:04

评论 (9)

liuzhiqiang 创建了任务
liuzhiqiang 关联仓库设置为src-openEuler/kernel
展开全部操作日志

Hey liuzhiqiang26, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

liuzhiqiang 关联分支设置为openEuler-21.03
ga_beng_cui 上传了附件blktrace_1_1T.log
ga_beng_cui 上传了附件blktrace_7_3T.log
Charlie_Li 里程碑设置为openEuler 21.03-RC2
Charlie_Li 负责人设置为Xie XiuQi
Charlie_Li 优先级设置为主要

合入补丁解决:
9d2d1b274 Revert "scsi: megaraid_sas: Set no_write_same only for Virtual Disk"
f71eee8a0 Revert "scsi: megaraid_sas: Replace undefined MFI_BIG_ENDIAN macro with __BIG_ENDIAN_BITFIELD macro"

zhengzengkai 任务状态待办的 修改为已完成

hisi_sas_v3_hw类型的磁盘 使用mkfs.ext3 -D格式化仍存在格式化很慢的问题
输入图片说明
输入图片说明
输入图片说明

megaraid_sas类型的磁盘 使用mkfs.ext3 -D格式化速度很慢的问题已解决
输入图片说明
输入图片说明

Charlie_Li 任务状态已完成 修改为待办的
Charlie_Li 任务类型任务 修改为缺陷
Charlie_Li 任务状态待办的 修改为已挂起

scsi中层在读取盘的write zero特性时,如果盘反馈支持write zero,那么中层就会设置相应的write_zeroes_max_bytes。之后,mkfs.ext3下发fallocate(fd, FALLOC_FL_ZERO_RANGE, offset, 4096)下发后,就会以WRITE_ZEROS类型的IO下发给磁盘。但是,有些磁盘(比如SEAGATE的磁盘),对write zero的处理相比普通IO的处理要慢,就会导致mkfs.ext3非常慢。

对于megaraid_sas卡,此前都是默认关闭write zero的,直到v5.6合入以下补丁。
commit a7faf81d7858b504279713d6cb98053f0ff00082
Author: Anand Lodnoor anand.lodnoor@broadcom.com
Date: Tue Jan 14 16:51:13 2020 +0530

scsi: megaraid_sas: Set no_write_same only for Virtual Disk

开启了write zero特性,即如果底层磁盘支持write zero,就开启;如果底层磁盘不支持,就不开启。

因此,5.10通过回退还主线补丁,即默认都是关闭write zero,能够加快mkfs.ext3的速度。

相比megaraid_sas,hisi_sas_v3并没有设置不支持no_write_same,只要底层磁盘返回支持write zero,那就会开启write zero。因此会比较慢。

以下面的环境为例,sas卡为hisi_sas_v3:

输入图片说明

Samsung, WDC的磁盘都是不支持write same的,因此,读到的write_zeros_max_bytes值为0:
输入图片说明

SEAGATE盘读取上来是支持write same的,因此,write_zeros_max_bytes不为0
输入图片说明

虽然SEAGATE盘报上来支持write zero,但其write zero的IO很慢,导致mkfs.ext3卡住

目前,linux社区最新主线代码也是同样的策略,也存在mkfs.ext3卡住的问题

该问题是mke2fs工具处理流程的问题,在使用mkfs.ext3过程中,创建日志流程会分配和写零一些block,当前采用的是逐个block依次分配写入的方式,因此IO速率非常慢。社区补丁https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/commit/?id=86d6153417ddaccbe3d1f4466a374716006581f4
解决了这个问题,采用聚合多个block以后再写零的方式,提升了IO速率

使用最新镜像验证,hisi_sas_v3_hw和megaraid_sas类型的磁盘,mkfs.ext3格式化卡住现象已解决
输入图片说明
输入图片说明
输入图片说明

问题解决,问题单关闭

zhengzengkai 任务状态已挂起 修改为已完成
ga_beng_cui 任务状态已完成 修改为已验收

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(6)
5329419 openeuler ci bot 1632792936 7361816 ga beng cui 1655284969 5592035 liuzhiqiang26 1594357385
1
https://gitee.com/src-openeuler/kernel.git
git@gitee.com:src-openeuler/kernel.git
src-openeuler
kernel
kernel

搜索帮助