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 シーク=2GiB if=/dev/null of=big

持っています見かけのサイズは2GiBしかし、ほとんどの現代のシステムでは、実際にはディスク容量をほとんど使用しない

関連情報