異なるファイルシステムのスペースオーバーヘッドは何ですか?


8

ファイルシステムを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など)。

回答:


8

最初に頭に浮かぶのは「スパースファイル」です。従来、ファイル内のオフセットにデータを含むファイルを作成し、より大きなオフセットを探すことができました。はるかに大きなオフセットにデータを書き込む場合、ファイルシステムは、介在するオフセットにディスクブロックを割り当てません。割り当てられたディスクブロックなしでこれらのオフセットを読み取るプログラムは、ゼロの値を読み取ります。

スパースファイルをタール化​​すると、ディスクブロックが割り当てられていないスパースファイルのオフセットにより、tarファイル(または出力ストリーム)と再作成されたファイルの両方にディスクブロックが割り当てられます。

MSC / NASTRAN(有限要素モデリングシステム)などのプログラムと同様に、一部のDBMSはスパースファイルを作成したことを思い出します。これらのスパースファイルをバックアップすると、大量のオフラインストレージが使用されることになり、関係者全員が驚かされます。


トレントプログラムには、ダウンロードが不完全な場合に同じことを行うオプションがあると思います。(少なくとも、Azureusの説明は、あなたが説明しているように聞こえます)
Izkata

du --apparent-size ...スパースファイルが違いを生むかどうかをテストする方法は?
maxschlepzig

1
スパースファイルのもう1つの一般的な使用方法は、仮想化ソフトウェアのディスクイメージです。
Jochen Lutz

4

スペースの不一致が見られる場合に注意するもう1つのことは、ルート用に予約されているスペースです(通常、ext {2,3,4}では5%)。このスペースにより、ユーザーがディスクをいっぱいにした場合でも(そのユーザーがrootでない限り)、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がルート用にスペースを予約したとは思わない

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.