extファイルシステムのデフォルト予約ブロック率は5%です。 4TBデータドライブの場合、200GBで私にとっては大きすぎるようです。
明らかにこれは tune2fs によって調節することができます:
tune2fs -m <reserved percentage> <device>
ただし、tune2fsのマニュアルページには、これらの予約済みブロックの理由の1つが断片化を避けるためのものであることが示されています。
したがって、次の点を考慮してください(大きな意見の違いを避けるために具体的に説明しようとしています)。
- ~4TBハードドライブ
- 大容量ファイル保存用(すべて500MB以上)
- いっぱいになるとほとんど書き込まれません(月に一度1〜5個のファイルが置き換えられる可能性があります)。
- データのみ(ドライブでオペレーティングシステムやアプリケーションを実行しない)
- 適度な読書量(週あたり約20tb、3ヶ月に一冊ずつ読む)
- HDDの摩耗が問題であり、20GBを節約するためにHDDを取り除くのは理想的ではありません(まだ問題ですか?)。
断片化を引き起こすことなく(パフォーマンスおよび/またはハードドライブの摩耗の観点から)、ドライブを満たすことができる最大比率はいくらですか?
ビッグデータハードドライブを高い割合で埋めたり、予約ブロック数を0.1%に設定したりする他の問題はありますか?
答え1
断片化の最大の問題は空きスペースの残骸つまり、ファイルシステムがいっぱいになり、空き容量がなくなると、ファイルシステムのパフォーマンスが急激に低下します。各新しいファイルは一度に小さなスペースしか割り当てられないため、非常に断片化されています。他のファイルを削除しても、以前に書き込まれたファイルはディスクに散在して新しいファイルが再分割されます。
上記のユースケース(〜500 MBファイル、比較的少量の新しいファイルの上書きまたは書き込み、古い〜500 MBファイルの定期的な削除、およびある種のビデオストレージシステムであると仮定)では、断片化は比較的ほとんど発生しません。 - ファイルを想定します。サイズは比較的一定のままです。書き込みがシングルスレッドの場合は特にそうです。これは、複数の書き込みスレッドが少量の空き領域を置いて競合せず、ブロック割り当てに時間差を持たないためです。ディスクから削除されたすべての古いファイルに対して数百 MB の連続したスペースが確保され(ファイルが最初から断片化されていないと仮定)、再入力されます。
同時作成者が複数の人の場合は、ファイルごとfallocate()
に大きなスペースを予約し、truncate()
最後に残ったスペースを空にすることで断片化を回避することもできます。これがなくても、ext4は最悪の断片化を避けるためにファイルを書き込むときに約8MBのスペース(メモリ内)を予約しようとします。
すべての空き領域を消費せず、永続的な空き領域の断片化を導入しないように、空きファイルサイズの適切な倍数(16 GB以上など)を維持することをお勧めします。