创建 FS 后空文件缩小

创建 FS 后空文件缩小

我的服务器出了问题,这让我很担心。我想创建一个空文件,然后将该文件作为循环设备挂载。所以我尝试了这个:

dd if=/dev/zero of=/tmp/loop.img bs=1024k count=10

当我检查文件时,它具有正确的大小:

ls -lisah
528484126  10M -rw-r--r--  1 root root  10M 31. Mär 04:06 loop.img

下一步是创建 fs:

mkfs.ext4 /tmp/loop.img

之后文件变小了:

ls -lisah
528484126 1,2M -rw-r--r--  1 root root  10M 31. Mär 04:10 loop.img

我无法挂载该文件。有人知道发生了什么吗,或者能告诉我我的错误吗?

答案1

嗯,你最大的问题是你在运行 mkfs 之前没有通过循环挂载映像,这可能是你想要做的(例如,losetup /dev/loop0 /tmp/loop.img然后mkfs.ext4 /dev/loop0

但是,至于缩减量以及数字变化的原因,1.2M 是实际文件使用量;10M 是磁盘分配量。这说明“您已授予 loop.img 在 /tmp 上的 10M 空间,它当前正在使用其中的 1.2M”。

文件系统映像是少数几种重要的文件类型之一(以及稀疏分配的文件);通常磁盘分配只是比实际文件大小更高的下一个块边界。

相关内容