创建 1GB 文件不会改变硬盘上的可用空间

创建 1GB 文件不会改变硬盘上的可用空间

我尝试根据剩余硬盘空间创建一个空文件。问题是,当我创建一个 1 GB 大小的文件时,df 命令显示剩余空间仅比创建文件之前小 12 kb。

someone@here:/tmp/delete# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             36827144   5031592  29924788  15% /
tmpfs                   508508         0    508508   0% /lib/init/rw
varrun                  508508       156    508352   1% /var/run
varlock                 508508         4    508504   1% /var/lock
udev                    508508       140    508368   1% /dev
tmpfs                   508508      1108    507400   1% /dev/shm

someone@here:/tmp/delete# dd if=/dev/zero of=tempFile bs=1000 count=1 seek=1000000
1+0 records in
1+0 records out
1000 bytes (1.0 kB) copied, 0.000438915 s, 2.3 MB/s

someone@here:/tmp/delete# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             36827144   5031604  29924776  15% /
tmpfs                   508508         0    508508   0% /lib/init/rw
varrun                  508508       156    508352   1% /var/run
varlock                 508508         4    508504   1% /var/lock
udev                    508508       140    508368   1% /dev
tmpfs                   508508      1108    507400   1% /dev/shm

有人知道为什么 df 命令没有占满 1GB 吗?谢谢。

答案1

您在支持以下文件系统上创建它稀疏文件因此它实际上只占用 1000 个字节,正如 的输出所示dd。省略seek并使用适当的count

答案2

info coreutils du(重点是我的):

'--apparent-size'
打印表观大小,而不是磁盘使用情况。文件的表观大小是常规文件上“wc -c”报告的字节数,或者更一般地说是“ls -l --block-size=1”或“stat --format=%s”。例如,包含单词“zoo”且没有换行符的文件当然会具有 3 的表观大小。如此小的文件可能需要 0 到 16 KiB 或更多的磁盘空间,具体取决于文件所在的文件系统的类型和配置。但是,使用创建的文件 此命令

dd bs=1 seek=2GiB if=/dev/null of=big

有一个表观大小为 2 GiB然而在大多数现代系统中,它实际上几乎不占用任何磁盘空间

相关内容