「homeディレクトリが共用なので、ユーザー単位で容量を制限したい」
共用サーバーや開発環境で必ず一度は直面する課題です。
この記事では、Linuxのディスククォータ(quota)の管理方法を、quotacheck・edquota・repquota・quotaonの実コマンド付きで解説します。RHEL9/Ubuntu 24.04 LTS時代に合わせて、ext4だけでなくXFS(プロジェクトクォータ)の運用ポイントもカバーします。
この記事のポイント
・Linuxのディスククォータはユーザー単位/グループ単位で容量制限を設けられる
・ハードリミット=書込み禁止、ソフトリミット=警告(猶予期間付き)の2段階制限
・edquotaで設定し、repquotaで利用状況を確認するのが管理の基本サイクル
・現代のXFSはquotaonでなくmount時オプションprjquotaで有効化する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Linuxのディスククォータとは:ユーザー/グループ単位の容量制限の仕組み
Linuxでクォータを利用すると、ユーザーごと、もしくはグループごとにディスク容量の制限を設けることができます。ディスク容量の制限は、サイズ(バイト数)、もしくはiノード数(ファイル数)で指定できます。
共用サーバーや開発環境で誰か1人がディスクを食い潰してサーバー全体が止まる、という事故を防ぐための古典的かつ確実な手段です。20年以上Linuxサーバーを運用してきた経験から言うと、現代のクラウド時代でもオンプレ共用環境ではクォータは現役で使われています。
クォータの4つの制限パラメータ:ハードリミット/ソフトリミット/猶予期間
クォータは、以下のパラメータで制限を設定します。・ユーザーごとのハードリミット
1ユーザーが利用できる最大のディスク容量がハードリミットです。
ハードリミットに達すると、それ以上ファイルを書き込むことができなくなります。
・ユーザーごとのソフトリミット
容量制限の警告を発するタイミングがソフトリミットです。
ソフトリミットに達すると、ユーザーに対して警告が発せられますが、ファイルを書き込むことはできます。
ただし、ソフトリミットを超えたまま一定期間が過ぎると、書込みできなくなります。
・グループごとのハードリミット
グループ単位でハードリミットを設けることも可能です。
ハードリミットに達すると、そのグループに属するユーザーは、それ以上ファイルを書き込むことができなくなります。
・グループごとのソフトリミット
ソフトリミットに達すると、そのグループに属しているユーザーに対して警告が発せられますが、ファイルを書き込むことはできます。
ただし、ソフトリミットを超えたまま一定期間が過ぎると、書込みできなくなります。
・猶予期間
ソフトリミットを超えた場合、猶予期間に入ります。
猶予期間が経過すると、ソフトリミットがハードリミットと見なされ、それ以上のファイルの書込みはできなくなります。
解除するには、ソフトリミット以下までファイルを削除するなりして容量を空ける必要があります。
デフォルトでは、7日間が指定されていますが、変更することも可能です。
quotaパッケージのインストール:RHEL系/Debian系の導入手順
クォータコマンド群(quotacheck・edquota・repquota・quotaon)はLinuxの最小インストールには含まれていません。最初にパッケージを導入します。# RHEL/Rocky Linux/AlmaLinux [root@web01 ~]# dnf install quota # Ubuntu/Debian root@web01:~# apt install quota
[root@web01 ~]# quota --version Quota utilities version 4.06.
ext4ファイルシステムでクォータを有効化する:fstabとquotacheckの基本手順
クォータを使用するためには、これから紹介する手順を実施します。今回の例として、/homeディレクトリとしてマウントしている/dev/sda5のファイルシステム(ext4)に対して、ユーザークォータを適用します。1./etc/fstab の編集
マウントオプションの指定に「usrquota」を追加します。
# vi /etc/fstab /dev/sda5 /home ext4 defaults,usrquota 1 2
2.マウントオプションを有効にするために、一時的にファイルシステムをアンマウントし、再びマウントします。
# umount /home # mount /home # アンマウントできない場合(プロセスがopen中)はリマウントで代替 # mount -o remount /home
# touch /home/aquota.user # chmod 600 /home/aquota.user
# quotacheck -cum /home # または明示的に # quotacheck -avug
# quotaon /home # 状態確認 # quotaon -p /home
# edquota pakira # repquota /home
edquotaの実行画面の見方:blocks・soft・hardの設定方法
edquotaを実行すると、viエディタが立ち上がってユーザーごとの設定画面が開きます。Disk quotas for user pakira (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sda5 12480 0 0 128 0 0
・blocks:現在使用中のブロック数(1ブロック=1KB単位)。直接編集してはいけない
・soft(左側):ソフトリミット(KB単位)。0は無制限
・hard(左側):ハードリミット(KB単位)。0は無制限
・inodes:現在のファイル数
・soft(右側):iノード数のソフトリミット
・hard(右側):iノード数のハードリミット
たとえば、ユーザーpakiraに対し容量1GB(ソフト)/1.2GB(ハード)の制限をかけるなら、soft=1048576・hard=1258291と入力します。
repquotaで全ユーザーの利用状況を一覧確認する
repquotaは、指定ファイルシステム上の全ユーザーのクォータ利用状況を表形式で出力します。日次のディスク監視に組み込むと便利です。[root@web01 ~]# repquota /home *** Report for user quotas on device /dev/sda5 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20 0 0 4 0 0 pakira -- 12480 1048576 1258291 128 0 0 www-data -- 524288 1048576 1258291 256 0 0
全ファイルシステムを一括で見たい場合は repquota -a を使います。
猶予期間(grace time)を変更する:edquota -tの使い方
ソフトリミット超過の猶予期間は、デフォルトで7日間ですが、edquota -tで変更できます。[root@web01 ~]# edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sda5 7days 7days
XFSのプロジェクトクォータ(prjquota):RHEL9時代の標準
RHEL7以降の標準ファイルシステムであるXFSは、ext4とクォータの扱いが大きく異なります。XFSではquotaonコマンドを使わず、mount時のオプション(usrquota / grpquota / prjquota)でクォータを有効化します。# /etc/fstabに追加(XFSの場合) /dev/sdb1 /data xfs defaults,usrquota,grpquota,prjquota 0 0 # 再マウント [root@web01 ~]# mount -o remount /data # XFS専用のクォータ管理コマンド [root@web01 ~]# xfs_quota -x -c 'limit bsoft=1g bhard=1.2g pakira' /data [root@web01 ~]# xfs_quota -x -c 'report -h' /data
【重要】quotacheck運用の落とし穴とトラブル回避
20年以上サーバーを運用してきた経験から、ディスククォータ管理で踏みやすい地雷を3つ挙げておきます。・quotacheckはマウント中に実行しない:書込み中のファイルがあるとaquota.userの計測値がずれます。シングルユーザーモードかリマウントreadonlyにしてから実行するのが鉄則です。
・tmpfsやNFSではクォータが効かない:/tmp(tmpfs)はメモリ上のファイルシステムなのでext4/XFSのクォータは無関係。NFSは別途エクスポート側の制限が必要。
・SELinuxラベルが壊れる事故:quotacheck後にaquota.userのSELinuxコンテキストが壊れて、システム起動に失敗するケースがあります。restorecon -v /home/aquota.user で復旧します。
# 安全なquotacheck実行手順 [root@web01 ~]# quotaoff /home [root@web01 ~]# mount -o remount,ro /home [root@web01 ~]# quotacheck -avug [root@web01 ~]# mount -o remount,rw /home [root@web01 ~]# quotaon /home
「quota: No such file or directory」が出た時の対処
quotaコマンド実行時によく出るエラーと対処を整理します。# エラー: aquota.userが存在しない [root@web01 ~]# quota pakira quota: No such file or directory # 対処: 初期化を実行 [root@web01 ~]# quotacheck -cum /home # エラー: mount時のオプションが無い [root@web01 ~]# quotaon /home quotaon: using //aquota.user on /dev/sda5 [/home]: No such process # 対処: /etc/fstabにusrquotaを追加して再マウント [root@web01 ~]# mount -o remount /home
本記事のまとめ:Linuxディスククォータ管理コマンド早見表
クォータは設定さえ済めば、後はOSが自動で制限してくれる優秀な仕組みです。最初の設定だけは丁寧に進めてください。| やりたいこと | コマンド |
|---|---|
| クォータパッケージの導入(RHEL系) | dnf install quota |
| クォータパッケージの導入(Debian系) | apt install quota |
| quotaファイルの初期化 | quotacheck -cum /home |
| クォータの有効化 | quotaon /home |
| クォータの無効化 | quotaoff /home |
| ユーザー単位の設定編集 | edquota pakira |
| グループ単位の設定編集 | edquota -g groupname |
| 猶予期間の変更 | edquota -t |
| 利用状況の一覧確認 | repquota /home |
| 全ファイルシステムの利用状況一覧 | repquota -a |
| XFSのクォータ管理 | xfs_quota -x -c 'report -h' /data |
| quota状態の確認 | quotaon -p /home |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:エイリアス(alias)|bashで定義する方法・unaliasの解除・.bashrcで永続化する手順
- 前のページへ:/etc/fstabの書き方と読み方|6つのフィールド解説とUUIDを使ったマウント設定
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます