それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ext4 の予約ブロックのサイズを調整して空き容量を確保する。

WEBでアレコレ調べてるときに目にしたので試してみた。

容量の5%を予約ブロックとして占有している

ext4 では容量の5%を、先立って確保している

予約領域は root だけが書き込める領域で、仮にディスクの空きがなくなっても root は予約領域を使って作業ができる。

この仕組のお陰で、ディスクの空き容量が心許なくなってもしっかり動作する。

15TB の 5% って・・・

8GBのディスクを2本でRAIDを組んでいるとする。つまり15TBほどある、この5%を確保しているとすればば、800GB弱を予約ブロックとして確保しているのである。流石に多すぎないか?

ファイルを移動したりコピーするための予約ブロックとはいえ、扱うファイルは1ファイルで最大1GB程度だ、バックアップを扱ったとしても50GBくらいだ。700-800GBは使い切れない。

アーカイブ目的であれば大丈夫

デフォルトでは、ファイルシステムの 5% はフラグメントが起こらないように root ユーザー用に予約されます。非特権のプロセスがファイルシステムに書き込めなくなってからも root が使用しているデーモンは正しく動作し続けることができます (詳しくは mke2fs(8) を参照)。

最近の大容量ディスクでは、パーティションを長期アーカイブとして使用したり、システム運用に重要でない場合(/homeなど)必要以上に大きな値を設定します。予約ブロックに関する ext4 開発者の Ted Ts'o の意見は このメール を、このトピックに関する一般的な背景は このスーパーユーザの回答 を参照してください。

パーティションが以下の条件を満たしているならば、ディスク容量を増やすために予約ブロックの割合を減らしても大抵は問題ありません:

Archさんによれば、50GB以上のディスクで、データ保存が主たるディスク(頻繁に大量のファイルを作成したり消したりしない)の条件であれば、予約ブロックは消していいとのこと。つまり、徐々にファイルが溜まっていくようなバックアップ専用ディスクであれば、消して問題ないってことですね。/home でも予約ブロックが必要以上だというのであれば、もはやいらない子なんじゃ・・・

現在のブロックの確認

sudo tune2fs -l /dev/mapper/data  | grep -i Block
Reserved block count:     158135746
Block size:               4096

ブロックサイズは4096 で 予約ブロック数は、、、すごいサイズだなこれ。どう考えてもいらないわこれ。

予約ブロックの容量を減らすことにした。

100GBもあれば十分だと思うんだけど、まずは1%くらいにしておきます。

20GB にする場合

sudo tune2fs  -r $(( 20 * 1024* 1024 * 1024  / 4096 )) /dev/mapper/data-video

2%にする場合

sudo tune2fs  -m 2 /dev/mapper/data-video

参考資料