Linuxのディスク管理では
df や du でディスク使用量を確認できますが、それだけでは「使い過ぎ」を防ぐことはできません。制限を設けるにはディスククォータ(disk quota)が必要です。この記事では RHEL 9.4 / Rocky Linux 9.4 を前提に、ext4パーティションでのディスククォータ設定(quota・edquota・repquota)と、RHEL9デフォルトのXFSファイルシステムでのクォータ設定(xfs_quota)を実機出力とともに解説します。
この記事のポイント
・quota・edquota・repquotaはext4パーティションで使うクォータ管理ツール
・ソフト制限(警告)・ハード制限(強制停止)・猶予期間の3段階で制御できる
・RHEL9デフォルトのXFSはxfs_quotaコマンドで設定し、edquota不要
・fstabへのusrquota追加とquotacheckがext4クォータ有効化の鍵
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ディスククォータとは(なぜ設定が必要か)
Linuxは複数ユーザーが同一ファイルシステムを共用できる設計ですが、デフォルトでは1ユーザーがディスク全体を使い切ることを防ぐ仕組みがありません。ストレージが満杯になると、他のユーザーがファイルを作れなくなるだけでなく、MySQLやPostgreSQLのデータ書き込みが止まりサービス停止につながることもあります。ディスククォータはユーザー単位(usrquota)またはグループ単位(grpquota)でディスク使用量の上限を設定する仕組みです。
クォータで制限できるのは次の2種類です。
・ブロック制限:ファイルのデータ量(KB単位で指定)
・inode制限:ファイルの個数(大量の小ファイルを防ぐ)
ソフト制限・ハード制限・猶予期間の3つの概念
クォータには「警告するだけ」と「強制的に止める」の2段階があります。| 用語 | 意味 | 超過した場合 |
|---|---|---|
| ソフト制限(soft limit) | 警告のしきい値 | 猶予期間中は超過可能。猶予期間終了後は書き込み拒否 |
| ハード制限(hard limit) | 絶対的な上限 | 即座に書き込み拒否(No space left on device) |
| 猶予期間(grace period) | ソフト制限超過の許容期間 | デフォルト7日。この間にユーザーは自発的に削除する |
【事前確認】ファイルシステムの種類を確認する
クォータの設定方法はファイルシステムの種類によって異なります。まず対象パーティションのファイルシステムを確認します。# パーティションのファイルシステムを確認 $ df -T /home Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda3 xfs 104857600 215040 104642560 1% /home
ext4パーティションでのクォータ設定(quota・edquota・repquota)
1. quotaパッケージをインストールする
# インストール前の確認 $ rpm -q quota package quota is not installed # インストール $ sudo dnf install quota -y # インストール確認 $ rpm -q quota quota-4.06-4.el9.x86_64
rpm -q quota でバージョンを確認する方法についてはrpm コマンドの使い方も参照してください。Ubuntu 24.04の場合は sudo apt install quota -y でインストールします。2. /etc/fstabにusrquotaオプションを追加する
クォータを有効にするパーティションのfstabエントリにオプションを追加します。ここでは/dev/sdb1 を /data にマウントしているext4パーティションを例にします。mount コマンドの使い方でfstabの基本書式を確認しておくとスムーズです。編集前のfstabエントリ:
/dev/sdb1 /data ext4 defaults 0 2
/dev/sdb1 /data ext4 defaults,usrquota 0 2
defaults,usrquota,grpquota とします。fstab編集後に再マウントします。# 再マウントでオプションを反映する $ sudo mount -o remount /data # マウントオプションにusrquotaが含まれていることを確認 $ cat /proc/mounts | grep /data /dev/sdb1 /data ext4 rw,relatime,quota,usrquota 0 0
3. quotacheckでクォータデータベースを初期化する
quotacheck は既存のファイルシステムをスキャンしてクォータ管理ファイル(aquota.user)を作成します。# -c: データベースを新規作成 -u: ユーザー対象 -m: 読み取り専用再マウントしない $ sudo quotacheck -cum /data # 作成されたファイルを確認 $ ls -la /data/aquota.user -rw------- 1 root root 8192 9月 17 12:00 /data/aquota.user
-c フラグは初回のみ必要です。2回目以降(障害後の整合性確認など)は quotacheck -um /data で十分です。4. quotaonでクォータを有効化する
# 特定パーティションのクォータを有効化 $ sudo quotaon /data # 全パーティションのクォータを有効化する場合 $ sudo quotaon -a # 有効化されているかを確認 $ sudo quotaon -p /data /dev/sdb1 [/data]: user quotas are on
quota-on.service が担います。$ systemctl status quota-on * quota-on.service - Enable filesystem quotas Loaded: loaded (/usr/lib/systemd/system/quota-on.service; enabled) Active: active (exited) since Thu 2026-09-17 10:00:01 JST; 2h ago
edquotaでユーザーの制限値を設定する
1. edquotaの基本的な使い方
edquota はviまたは $EDITOR 環境変数で指定されたエディタを起動してクォータを編集するコマンドです。$ sudo edquota -u testuser
Disk quotas for user testuser (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdb1 128 0 0 3 0 0
・blocks:現在の使用量(KB単位)
・soft(blocks):ソフト制限(KB単位、0=制限なし)
・hard(blocks):ハード制限(KB単位、0=制限なし)
・inodes:現在のファイル数
・soft/hard(inodes):ファイル数の制限(0=制限なし)
ソフト制限を5GiB(5242880KB)、ハード制限を6GiB(6291456KB)に設定する例:
Disk quotas for user testuser (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdb1 128 5242880 6291456 3 0 0
2. 複数ユーザーに同じ設定を一括適用する(edquota -p)
既にクォータを設定済みのユーザーをひな型として他ユーザーにコピーできます。大量ユーザーへの一括設定に便利です。# testuser の設定を user2 と user3 にコピー $ sudo edquota -p testuser user2 user3
3. 猶予期間を変更する(edquota -t)
$ sudo 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/sdb1 7days 7days
7days を 3days などに変更して保存することで猶予期間を調整できます。repquotaで使用状況を確認する
repquota はファイルシステム上の全ユーザーのクォータ使用状況を一覧表示します。# 全マウントポイントを対象にレポートを出力 $ sudo repquota -a *** Report for user quotas on device /dev/sdb1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 8 0 0 2 0 0 testuser -- 128 5242880 6291456 3 0 0 user2 -- 2048 5242880 6291456 5 0 0
・--:ソフト制限未達(正常)
・-+:ソフト制限超過中・猶予期間内
・++:猶予期間を超えて制限が発動中
個別ユーザーの確認には
quota コマンドも使えます。$ sudo quota -u testuser Disk quotas for user testuser (uid 1001): Filesystem blocks quota limit grace files quota limit grace /dev/sdb1 128 5242880 6291456 3 0 0
XFSファイルシステムでのクォータ設定(xfs_quota)
RHEL9 / Rocky Linux 9 ではデフォルトでXFSが使われています。XFSではquotaパッケージは不要で、マウント時のオプションとxfs_quota コマンドで管理します。1. fstabにuquotaオプションを追加する
# 編集前 /dev/sda3 /home xfs defaults 0 0 # 編集後(uquota=ユーザークォータ、gquota=グループクォータ) /dev/sda3 /home xfs defaults,uquota 0 0
# 再マウントしてオプションを反映 $ sudo mount -o remount /home # クォータが有効か確認(Accounting: ON, Enforcement: ONを確認) $ sudo xfs_quota -x -c 'state -u' /home User quota state on /home (/dev/sda3) Accounting: ON Enforcement: ON Inode: #131 (2 blocks, 2 extents)
2. xfs_quotaで制限値を設定する
# testuser にソフト制限5GiB・ハード制限6GiBを設定 # bsoft=ブロックソフト制限 bhard=ブロックハード制限(g=GiB) $ sudo xfs_quota -x -c 'limit bsoft=5g bhard=6g testuser' /home # 設定を確認(-h で人間が読みやすい単位で表示) $ sudo xfs_quota -x -c 'report -h -u' /home User quota on /home (/dev/sda3) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 0 0 0 00 [------] testuser 512M 5G 6G 00 [------]
3. inode(ファイル数)の制限も設定する
# ブロック制限とinode制限を同時に設定 # isoft/ihard でファイル数の上限を設ける $ sudo xfs_quota -x -c 'limit bsoft=5g bhard=6g isoft=100000 ihard=120000 testuser' /home
isoft と ihard でinode数の制限も組み合わせましょう。クォータ超過時の動作を確認する
実際にクォータを超えるファイルを作成して動作を確認します。# testuser でハード制限を超えるファイルを作成しようとすると即座に失敗 $ su - testuser $ fallocate -l 7g /data/testfile.bin fallocate: fallocate failed: Disk quota exceeded # ソフト制限は超えるがハード制限内なら作成可能(猶予期間が開始される) $ fallocate -l 5500m /data/testfile.bin (成功) # quota -u で猶予期間を確認 $ quota -u testuser Disk quotas for user testuser (uid 1001): Filesystem blocks quota limit grace files quota limit grace /dev/sdb1 5632000 5242880 6291456 6days 1 0 0
grace 列に残り日数が表示されます。猶予期間内にソフト制限以下へ削減しないと、それ以上の書き込みが拒否されます。トラブルシュートと確認ポイント
quotaonで「No such process」が出る場合
$ sudo quotaon /data quotaon: /data: No such process # aquota.user が存在しない → quotacheck を実行していない $ ls /data/aquota.user ls: cannot access '/data/aquota.user': No such file or directory # 解決策:quotacheck を再実行する $ sudo quotacheck -cum /data $ sudo quotaon /data
repquotaで「No filesystems with quota detected」が出る場合
fstabにusrquotaが記載されているか、かつ実際にそのオプションでマウントされているかを確認します。# fstabの確認 $ grep usrquota /etc/fstab /dev/sdb1 /data ext4 defaults,usrquota 0 2 # マウントオプションの確認(usrquota が表示されているか) $ findmnt /data TARGET SOURCE FSTYPE OPTIONS /data /dev/sdb1 ext4 rw,relatime,quota,usrquota
mount -o remount /data を実行してください。XFSでxfs_quotaがエラーになる場合
$ sudo xfs_quota -x -c 'state -u' /home xfs_quota: cannot setup quota context: No such process # 原因:マウント時にuquotaオプションが指定されていない # 解決策:fstabにuquotaを追加して再マウントする $ sudo mount -o remount,uquota /home
rootflags=uquota)の追記と再起動が必要です。通常は/homeや/dataなどの追加パーティションにクォータを設定するほうがシンプルです。
ディスクを「守る」には、Linuxサーバー運用の「型」が必要です
ディスククォータはユーザー単位のリソース制御の入口です。安全なサーバー運用には、クォータ設定だけでなく、ファイルシステム設計・権限管理・監視の仕組みを体系的に理解することが重要です。独学で断片的に覚えるより、現場で実際に使われる設計パターンを一度体系的に身につけることで、障害を未然に防ぐサーバー管理ができるようになります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
本記事のまとめ
| やりたいこと | コマンド(ext4) | コマンド(XFS) |
|---|---|---|
| パッケージインストール | dnf install quota |
不要(OS標準) |
| クォータDBを初期化 | quotacheck -cum /パス |
不要 |
| クォータを有効化 | quotaon /パス |
fstabにuquotaを追加して再マウント |
| ユーザーの制限を設定 | edquota -u ユーザー名 |
xfs_quota -x -c 'limit bsoft=...' /パス |
| 設定を他ユーザーにコピー | edquota -p ひな型 対象 |
— |
| 使用状況を一覧表示 | repquota -a |
xfs_quota -x -c 'report -h' /パス |
| 個別ユーザーを確認 | quota -u ユーザー名 |
xfs_quota -x -c 'quota -h ユーザー名' /パス |
| 猶予期間を変更 | edquota -t |
xfs_quota -x -c 'timer -b 3days' /パス |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:LinuxのLVMスナップショットでオンラインバックアップを取る方法|lvcreate -sで稼働中データを複製してrsyncで転送する手順
- この記事の属するカテゴリ:ディスク操作へ戻る

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