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

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

前言

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

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

主要优势

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

基本语法

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日志文件

[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.bin
done

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

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

性能对比

image-20260107102602854

注意事项

# 需要足够的磁盘空间
fallocate -l 1T ./huge.log  # 确保磁盘有1TB可用空间

# 某些文件系统可能不支持
# ext4, XFS, Btrfs, F2FS: ✅ 支持
# NFS, FAT32: ❌ 不支持

# 查看文件系统类型
df -T
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇