初心者向けLinux ディスクQuotaで容量制限を行う設定と管理、確認方法

Linuxのディスククオータを設定して、xfsファイルシステムを使用する場合のディスク使用量を効率的に管理する方法を紹介します。ブログの最後に通常のquotaの設定も番外編として掲載していますので、参考になれば幸いです。

xfsファイルシステムのquotaの設定

今回はユーザのホームディレクトリにquotaを設定します。具体的には、こちらで追加した/home領域に、user001に利用できる領域をソフトリミット100MB、ハードリミット150MBに制限したいと思います。

まずは/etc/fstab にuquotaという文言を追加します。もしグループのquotaの場合はgquotaを追記します。

設定を追記しましたら、OSを再起動します。

xfsファイルシステムで、クォータの設定や情報表示等はxfs_quotaコマンドを使用します。まずは、/homeパーティションのクォータ設定情報を確認してみます。

# xfs_quota -x -c 'report -h' /home
User quota on /home (/dev/mapper/home-homedir)
                        Blocks
User ID      Used   Soft   Hard Warn/Grace
---------- ---------------------------------
root            0      0      0  00 [------]
user001       12K      0      0  00 [------]
user002       12K      0      0  00 [------]
user003       12K      0      0  00 [------]

ユーザごとにクォータで制限を設定する場合は下記のように設定を行います。

# xfs_quota -x -c 'limit bsoft=サイズ bhard=サイズ 設定ユーザ' パーティション

ここで、bsoftとはソフトリミットで、指定した容量を一時的に超えることはできますが、一定期間が過ぎますと書き込みができなくなります。bhardとは、いっさい指定した容量を超えることができない設定となります。

具体的に、user001にソフト100M、ハード150Mで設定した内容が以下になります。

なお、もし/ (ルート)領域にquotaをかける場合は、ちょっとややこしいので(grubからやる必要がある)ここでは割愛します。というか、/領域はクォータはかけない方が安全です。

動作確認

user001で下記のように100Mのファイル1と、10MBのファイル2を作成してみます。

$ dd bs=1M count=100 if=/dev/zero of=file1
$ dd bs=1M count=10 if=/dev/zero of=file2
$ ls -lh
合計 110M
-rw-rw-r--. 1 user001 user001 100M  5月 18 22:38 file1
-rw-rw-r--. 1 user001 user001  10M  5月 18 22:40 file2

ソフトリミットの制限にかかっていますが、ファイルは作成できます。

# xfs_quota -x -c 'report -h' /home
User quota on /home (/dev/mapper/home-homedir)
                        Blocks
User ID      Used   Soft   Hard Warn/Grace
---------- ---------------------------------
root            0      0      0  00 [------]
user001    110.0M   100M   150M  00 [6 days]
user002       12K      0      0  00 [------]
user003       12K      0      0  00 [------]

次に、ハードリミットの150Mを超えるように、50Mのファイル3を作成してみます。

$ dd bs=1M count=50 if=/dev/zero of=file3
dd: 'file3' の書き込みエラー: Disk quota exceeded
40+0 レコード入力
39+0 レコード出力
41877504 bytes (42 MB, 40 MiB) copied, 0.0690264 s, 607 MB/s

ちゃんと制限にかかってファイル3が作成されないことが確認できました。

番外編:通常の(?)quotaの設定(xfsでは動作しない誤った設定)

今回はユーザのホームディレクトリにquotaを設定します。具体的には、こちらで追加した/home領域に、ユーザ毎に利用できる領域を100MBに制限したいと思います。

まずquotaコマンドをインストールします。

まずは/etc/fstab にusrquotaという文言を追加します。もしグループのquotaの場合はgrpquotaを追記します。

設定を反映させるには、マウントをやり直す必要があります。もしまだ誰も使用していなければ、umount コマンドとmountコマンドを実施すれば問題ございませんが、もう使用している状況であれば、OSを再起動した方が早いかもしれません。

なにやら、メッセージが出てきたので、指示通りsystemctl daemon-reloadを実行しています。

マウントしなおしたら、quotacheckコマンドで、quotaファイルを作成します。

ここで何やら、quotaが使用できないとエラーが。ここで調査した結果、どうもxfsファイルシステムでは別のコマンドにてquotaを設定する必要があることに気が付きました。

このあと、本来であれば、edquota -u ユーザ名で各ユーザのquotaの設定を行い、quotaonコマンドで有効にし、quota -u ユーザ名でそのユーザのクォータの設定を確認できる。という流れになりますが、ここでは途中で設定を辞めて、xfsのクォータ設定を実施しました。

今回はここまでです。最後までお読みいただきありがとうございました。