当前位置:首页>Linux>Linux 快速文件空间分配:fallocate 命令详解

Linux 快速文件空间分配:fallocate 命令详解

  • 2026-10-28 12:16:14
Linux 快速文件空间分配:fallocate 命令详解

Linux 快速文件空间分配:fallocate 命令详解

前言

以前通过我这边初始化虚拟机会使用dd进行磁盘空间占用使其达标(zf项目有要求),但dd实际太慢了,下面就开始使用fallocate。

fallocate 是一个高效的文件预分配工具,可以快速为文件分配磁盘空间,而不需要实际写入数据。

主要优势

优势
说明
速度极快
直接通知文件系统分配空间,无需实际写入
节省时间
毫秒级完成,GB级文件秒速搞定
节省I/O
不进行实际的磁盘写操作
预留空间
预先保留存储空间,避免运行时不足
支持稀疏文件
可以创建包含空洞的文件
1
2

# 例子:fallocate -l 3G ./csapps_data01.log

基本语法

1

fallocate [选项] 文件名

常用选项详解

选项
描述
示例
-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日志文件

1
2
3
4
5

[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:指定偏移量分配空间

1
2

# 从第1GB处开始,再分配2GB空间fallocate -o 1G -l 2G ./myfile.log

案例3:保持文件大小,填充数据

1
2

# 分配10GB空间,但文件显示大小不变fallocate -n -l 10G ./sparse_file

案例4:创建多个大文件

1
2
3
4

# 快速为数据库预分配空间for i in {1..5}; do    fallocate -l 100G ./data_$i.bindone

案例5:打孔释放空间(稀疏文件)

1
2

# 释放第1GB到3GB的空间fallocate -p -o 1G -l 2G ./large_file

性能对比

注意事项

1
2
3
4
5
6
7
8
9

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

最新文章

随机文章