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
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇