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%にしてる人
- 1%
- 10GB
ほんとにいろいろな人がいるけど、鬱陶しいのでまあ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
増えた増えた。完全に予約領域をなくしてしまったので何か問題が出てくるかもしれないが、まあとりあえずは様子見。