629 文字
3 分
ext4 予約領域
2013-12-26
CAUTION

この記事は学生時代に書かれたもので、記録として残しています。内容が正確でない可能性や信頼性を担保できない部分があるため、その点を踏まえてご覧ください。

NTFSだったHDDをext4にフォーマットしたときに

mkfs.ext4 /dev/sdb1

と実行し、フォーマットした。 そして、予めバックアップとっておいた元々入っていたデータを復元したところ、容量が足りない。

フォーマットしたときに「予約領域」というものが確保されるようだ。 デフォルトで5%確保するようになってるので今回の場合だと2TB HDDの5%は2000GB*0.05=100GB。100GBも取られている。

そもそも予約領域というのは

「ext2fs は一部のブロックをスーパーユーザ(root)のために予約しています。普通は、全ブロックのうち 5% が予約されています。これにより、ユーザプロセスがファイルシステムを使い切ってしまったような状況からもうまく修復作業を行えます。」

(出典:Filesystems HOWTO – Extended ファイルシステム (ext, ext2, ext3)

「ext2fsとext3fsは、スーパーユーザ(もしくは指定されたその他のユーザ)が使うためのブロックを大量に予約する。予約領域のデフォルト値は5%だが、大きなパーティションや、それほど重要でないパーティション(/homeなど)では、これでは多すぎる場合がある。mke2fsで-m reserved-percentageオプションを使用すれば、使用可能な領域を多少増やすことができる。」

(出典:Open Tech Press – Linuxファイルシステムを最適化する

というものらしい。 今回の場合は倉庫用HDDなので、5%も要らないんじゃないか。というかそもそも予約領域自体要るのか。 ググッた結果いろんなひとが居た。

ほんとにいろいろな人がいるけど、鬱陶しいのでまあ0%にしてみようかと。 予約領域を変更するにはtune2fsコマンドの-mオプションを使用するらしい。 ここを参考に予約領域を0%にした。

# tune2fs -m 0 /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 0% (0 blocks)

dfコマンドで確認すると

# df
/dev/sdb1                1922858352 1828082600  94775752  96% /home/samba
/dev/sdc1                1953512444 1828135536 125376908  94% /mount1

増えた増えた。完全に予約領域をなくしてしまったので何か問題が出てくるかもしれないが、まあとりあえずは様子見。

ext4 予約領域
https://blog.maiani.dev/posts/2013-12-26-ext4-reserved-space/
作者
まいあに
公開日
2013-12-26
ライセンス
CC BY-NC-SA 4.0