UbuntuシステムからFedora 17システムにファイルシステムをバックアップ/復元しました。df
出力に基づいて使用スペースが30%増加したことを確認しました。その理由は何ですか?
Fedoraシステムのdf
表示:78GB使用済み
Ubuntuシステムdf
表示:60GB使用済み
システム間の違い:
Ubuntu:ext3(数年前に作成)
Fedora 17:ext4(mkfs.ext4
通常の呼び出しを使用して作成)
XFSファイルシステム(Fedora 17)に復元すると、78 GBのスペースが使用されます。
バックアップと復元はGNU tarを使用して行われます。ファイルシステムには、さまざまな種類のファイル(ソースツリー、メールディレクトリ、ISOなど)が含まれています。
答え1
最初に浮かぶのは「スパースファイル」です。伝統的に、ファイル内の特定のオフセットにデータを含むファイルを作成し、より大きなオフセットを見つけることができました。大きなオフセットにデータを書き込む場合、ファイルシステムは中間オフセットにディスクブロックを割り当てません。ディスクブロックを割り当てずにこれらのオフセットを読み取るプログラムは、ゼロ値を読み込みます。
スパースファイルを圧縮すると、スパースファイルの未割り当てディスクブロックがtarファイル(または出力ストリーム)と再生成されたファイルのオフセットに割り当てられます。
MSC / NASTRAN(Finite Element Modeling System)などのプログラムのように、一部のDBMSがスパースファイルを生成したことを覚えています。これらの希薄なファイルをバックアップすると、オフラインストレージを大量に使用することになり、関係者全員が驚きました。
答え2
スペースの違いを見るときに注意すべきもう1つは、ルート用に予約されたスペースです(通常はext {2,3,4}から5%)。このスペースを使用すると、ユーザーがディスクでいっぱいになっても(ユーザーがルートでない場合)、オペレーティングシステムを実行できます(ログファイルの書き込みなど)。
次のコマンドを使用してこの設定を表示できます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はルートのためのスペースを予約すると信じていません。