
Ubuntu システムから Fedora 17 システムにファイルシステムをバックアップ/復元しました。df
出力によると、使用済みスペースが 30 % 増加していることに気付きました。この理由は何でしょうか?
Fedoraシステムではdf
、78 GBが使用されています
Ubuntuシステムではdf
、60 GBが使用されていると表示されます
システム間の違い:
Ubuntu: ext3 (数年前に作成)
Fedora 17: ext4 (バニラmkfs.ext4
呼び出しで作成)
XFS ファイルシステム (Fedora 17 上) に復元すると、使用済み領域は 78 GB になります。
バックアップと復元は GNU tar を使用して行われました。ファイルシステムには、さまざまな種類のファイル (ソース ツリー、maildir、ISO など) が含まれています。
答え1
最初に思い浮かぶのは「スパース ファイル」です。従来は、ファイル内のオフセットにデータを含むファイルを作成し、その後、それよりずっと大きなオフセットを探していました。そのずっと大きなオフセットにデータを書き込む場合、ファイルシステムは介在するオフセットにディスク ブロックを割り当てません。ディスク ブロックを割り当てずにそれらのオフセットを読み取るプログラムは、ゼロ値を読み取ります。
スパース ファイルを tar 化すると、ディスク ブロックが割り当てられていないスパース ファイルのオフセットによって、tar ファイル (または出力ストリーム) と再作成されたファイルの両方でディスク ブロックが割り当てられます。
一部の DBMS は、MSC/NASTRAN (有限要素モデリング システム) などのプログラムと同様に、スパース ファイルを作成したことを覚えています。これらのスパース ファイルをバックアップすると、大量のオフライン ストレージが使用されることになり、関係者全員が驚きました。
答え2
スペースの不一致が見られる場合に注意すべきもう 1 つの点は、ルート用に予約されているスペースです (通常、ext{2,3,4} の 5%)。このスペースにより、ユーザーがディスクをいっぱいにしても (そのユーザーがルートでない限り)、OS は機能 (ログ ファイルの書き込みなど) できます。
この設定は以下を使用して表示できますtune2fs -l
:
[root@host ]# tune2fs -l /dev/md0 |grep Reserved
Reserved block count: 1279986
Reserved GDT blocks: 1017
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
extファイルシステムでこれを無効にするには、tune2fs -m 0 /dev/NAME
ざっと調べてみると、xfsにはルート用のスペースが確保されていないようです。