lazy_itable_init=1能提速,因跳过格式化时全盘清零inode表,改由挂载后内核异步完成;centos 7/ubuntu 16.04+默认启用,mkfs.ext4 /dev/sdx1即可受益。

直接启用 lazy_itable_init=1(默认即开启)就能显著加速大容量磁盘的格式化过程——它让 inode 表初始化推迟到首次挂载时由内核后台完成,跳过格式化阶段耗时的全盘清零操作。
为什么 lazy_itable_init 能提速?
Ext4 格式化时,默认需将整个 inode 表区域用 0 填满(尤其在大磁盘上可能达数十GB),这是最耗时环节。启用 lazy 初始化后,mkfs 只写入元数据结构,不写零;实际清零工作交由内核线程 ext4lazyinit 在挂载后异步执行,用户无需等待。
注意:该特性自内核 2.6.37 起支持,CentOS 7 / Ubuntu 16.04+ 均默认启用,无需额外指定参数即可生效。
正确启用方式(推荐默认行为)
大多数场景下,直接使用默认命令即可获得加速效果:
-
mkfs.ext4 /dev/sdX1—— 已隐式启用lazy_itable_init=1和lazy_journal_init=1 - 如需显式确认,可加参数:
mkfs.ext4 -E lazy_itable_init=1,lazy_journal_init=1 /dev/sdX1 - 避免误关:不要用
=0,否则会强制同步清零,格式化时间陡增数小时
配合挂载策略发挥最大效用
加速效果依赖后续挂载行为,需注意以下几点:
- 首次挂载时,
ext4lazyinit进程会自动启动并持续写入,此时磁盘 IO 会上升,属正常现象 - 若希望挂载后立即可用(不等 lazyinit 完成),可提前预热:
find /mnt/data -maxdepth 0 -ls > /dev/null触发部分块组初始化 - 监控进度:通过
cat /proc/fs/ext4/sdX1/lazyinit_status查看剩余未初始化块组数(需内核支持) - 避免在 busy 系统中首次挂载大量 lazy-init 磁盘,防止多个
ext4lazyinit进程争抢 IO
替代方案:XFS 更适合超大容量场景
当单盘超过 16TB 或需极致初始化速度时,XFS 是更优选择:
-
mkfs.xfs -f /dev/sdX1几乎瞬时完成,无后台初始化负担 - 采用动态 inode 分配,不预分配全表,空间利用率更高
- CentOS 7 官方支持良好,建议在新部署的数据盘中优先测试 XFS











