Linux 快速文件空间分配:fallocate 命令详解
前言
以前通过我这边初始化虚拟机会使用dd进行磁盘空间占用使其达标(zf项目有要求),但dd实际太慢了,下面就开始使用fallocate。
fallocate 是一个高效的文件预分配工具,可以快速为文件分配磁盘空间,而不需要实际写入数据。
主要优势
# 例子:fallocate -l 3G ./csapps_data01.log
基本语法
常用选项详解
| | |
|---|
-l, --length SIZE | | -l 3G |
-o, --offset OFFSET | | -o 1G -l 2G |
-n, --keep-size | | fallocate -n -l 10G file |
-p, --punch-hole | | -p -o 1G -l 2G |
-d, --dig-holes | | -d file |
-z, --zero-range | | -z -o 0 -l 5G |
使用案例
案例1:快速创建3GB日志文件
[root@host56 test]# fallocate -l 3G ./csapps_data01.log[root@host56 test]# ll总用量 3145728-rw-r--r-- 1 root root 3221225472 1月 7 10:07 csapps_data01.log[root@host56 test]#
案例2:指定偏移量分配空间
# 从第1GB处开始,再分配2GB空间fallocate -o 1G -l 2G ./myfile.log
案例3:保持文件大小,填充数据
# 分配10GB空间,但文件显示大小不变fallocate -n -l 10G ./sparse_file
案例4:创建多个大文件
# 快速为数据库预分配空间for i in {1..5}; do fallocate -l 100G ./data_$i.bindone
案例5:打孔释放空间(稀疏文件)
# 释放第1GB到3GB的空间fallocate -p -o 1G -l 2G ./large_file
性能对比

注意事项
# 需要足够的磁盘空间fallocate -l 1T ./huge.log # 确保磁盘有1TB可用空间# 某些文件系统可能不支持# ext4, XFS, Btrfs, F2FS: ✅ 支持# NFS, FAT32: ❌ 不支持# 查看文件系统类型df -T