ext4 使用済みスペース (-m オプションなし、削除されたファイルなし)

ext4 使用済みスペース (-m オプションなし、削除されたファイルなし)

ext4 が使用済みスペースを報告する方法について、少し困惑しています。新しい Debian wheezy (テスト) インストールでは、 と比較して、60GB SSD で常に約 1GB の追加スペースを使用できましたdu。その後、そのコンピューターをネットワーク ブートし、SSD をマウントしました。ネットワーク ブートした OS (Debian squeeze) では、SSD で使用されている追加スペースは 180MB のみと表示されます。ジャーナルは 128MB なので、それ以上はそれほど多くありません。

によって報告される余分な使用済みスペースはdf、ルートまたは削除されたファイル用に予約されたスペースではないのに、何ですか? Google を使用すると、ほとんどの場合、私が除外した通常の原因が発生します。また、異なるオペレーティング システムにマウントすると、同じファイル システムでその量が異なるのはなぜですか? 再インストールしてこれをテストしたところ、wheezy インストールでは余分な使用量が再び約 1 GB になり、ネットワーク ブートしてその SSD をマウントすると 180 MB になりました。

XFS と btrfs では、報告される追加の使用量はごくわずかのようです。ファイルシステムには多少のオーバーヘッドが必要であることは理解していますが、そのオーバーヘッドが実際の使用量と混同されると不便です。

詳細な出力は次のとおりです。

df

$ df -m on wheezy
Filesystem              1M-blocks  Used Available Use% Mounted on
rootfs                      57132  1567     52703   3% /
udev                         7899     0      7899   0% /dev
tmpfs                        1581     1      1581   1% /run
/dev/mapper/ssd-kvmhost     57132  1567     52703   3% /
tmpfs                           5     0         5   0% /run/lock
tmpfs                        3162     0      3162   0% /tmp
tmpfs                        3162     0      3162   0% /run/shm

デュ

$ du -sm /
592     /

tune2fsInode の数は 3670016、サイズは 256 と表示され、実際に使用済みスペースのほとんどがこれで説明できます。Inode は静的に予約されているのに、なぜサイズから減算されないのか理解できません。これをスペースとしてカウントし、その後常に使用済みとしてカウントするのはあまり意味がありません。

以下は、ネットワーク ブートされた Debian squeeze からのまったく同じファイルシステムの出力です。

aufs                      7905        46      7859   1% /
tmpfs                     7905         0      7905   0% /lib/init/rw
udev                      7900         1      7900   1% /dev
tmpfs                     7905         1      7905   1% /dev/shm
172.17.172.127:/storage/private/tftp/debian-live-6.0.3-amd64-lxde-desktop
                         24737     17448      7289  71% /live/image
tmpfs                     7905        46      7859   1% /live/cow
tmpfs                     7905         0      7905   0% /live
tmpfs                     7905         1      7905   1% /tmp
/dev/mapper/ssd-kvmhost
                         56337       772     52703   2% /mnt

確認のため、ネットワークで起動した OS で du -sm / を実行します。

592     /

おそらく、古いカーネルは静的に予約された inode スペースを使用可能としてカウントしないので、使用済みとして表示する必要がないのでしょうか? 差は Size と Used の両方で 795MB で、inode に必要なスペースのほぼすべてです。では、180MB はいくらでしょうか? これも静的である場合、Size からそれを差し引くのが最適ではないでしょうか? そうすれば、df他のファイルシステムが行うように、実際の使用状況を表示できます。

私の考えでは、ファイルシステムが静的なオーバーヘッド量を必要とする場合、同じ絶対スペース量に対して他のファイルシステムよりも使用可能なスペースが少なくなるだけです。dfはそれを反映し、使用可能スペース利用した?

答え1

ext[234] はデフォルトで 128 MB のブロック グループあたり 8192 個の inode を予約します。これはグループあたり 2 MB を占め、60 GB のファイルシステムでは 1 GB 近くになります。ドライブを別のシステムにマウントしても違いはありません。カーネルが wheezy と squeeze の間で使用済み領域を報告する方法が変更されたようですが、これが意図的に行われたことを示すコミットはまだ見つかっていません。

答え2

df と du の出力を提供していただければ、質問への回答が容易になります。

しかし、それは df によると、使用されているディスク容量は du より 20G 多いそうです。なぜでしょうか?

基本的に、ファイル システムはディスクの一部を独自のメタデータに使用します。つまり、ファイル自体ではなく、ファイル、その名前、権限、ディスク上の場所などを追跡するために使用されます。

上でリンクした回答にあるように、 を実行すると、tune2fs -l <device name>より多くの情報が表示されます。特に、inode countx はとinode sizeの差に近くなるはずです。dfdu

前回の回答に基づくと、私のシステムのルート パーティションはディスクの約 1.77% を inode に使用しています。60 GB * 0.0177 ~= 1 GB。

180 MBという数字は間違っていると思いますが、ネットワークブートしたシステムの出力など、より詳しい情報がなければ確信が持てませんmount。たとえば、minixdf/bsddfマウント オプション。

関連情報