Linuxのディスククォータを設定する方法|quota・edquota・repquotaで使用量を制限する実践手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtipsディスク操作 > Linuxのディスククォータを設定する方法|quota・edquota・repquotaで使用量を制限する実践手順
「サーバーの容量が突然満杯になった」「特定のユーザーが大量のデータを置いて他のメンバーが困っている」。そんな状況に悩まされたことはないでしょうか。

Linuxのディスク管理では dfdu でディスク使用量を確認できますが、それだけでは「使い過ぎ」を防ぐことはできません。制限を設けるにはディスククォータ(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クォータ有効化の鍵


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

ディスククォータとは(なぜ設定が必要か)

Linuxは複数ユーザーが同一ファイルシステムを共用できる設計ですが、デフォルトでは1ユーザーがディスク全体を使い切ることを防ぐ仕組みがありません。

ストレージが満杯になると、他のユーザーがファイルを作れなくなるだけでなく、MySQLやPostgreSQLのデータ書き込みが止まりサービス停止につながることもあります。ディスククォータはユーザー単位(usrquota)またはグループ単位(grpquota)でディスク使用量の上限を設定する仕組みです。

クォータで制限できるのは次の2種類です。

ブロック制限:ファイルのデータ量(KB単位で指定)
inode制限:ファイルの個数(大量の小ファイルを防ぐ)

ソフト制限・ハード制限・猶予期間の3つの概念

クォータには「警告するだけ」と「強制的に止める」の2段階があります。
用語 意味 超過した場合
ソフト制限(soft limit) 警告のしきい値 猶予期間中は超過可能。猶予期間終了後は書き込み拒否
ハード制限(hard limit) 絶対的な上限 即座に書き込み拒否(No space left on device)
猶予期間(grace period) ソフト制限超過の許容期間 デフォルト7日。この間にユーザーは自発的に削除する
ソフト制限をハード制限より低い値に設定することで、「警告 → 猶予期間 → 強制停止」という段階的な制御が可能です。例えばソフト制限5GiB・ハード制限6GiBに設定すると、5GiBを超えた時点で警告が出始め、7日以内に削減しないとそれ以上書き込めなくなります。

【事前確認】ファイルシステムの種類を確認する

クォータの設定方法はファイルシステムの種類によって異なります。まず対象パーティションのファイルシステムを確認します。

# パーティションのファイルシステムを確認 $ df -T /home Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda3 xfs 104857600 215040 104642560 1% /home

RHEL9 / Rocky Linux 9 ではデフォルトでXFSが使われています。XFSの場合は quota・edquota・repquota のトラディショナルなツールは使えないため、xfs_quota で管理します(後述)。ext4の場合は次の手順で進んでください。

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

編集後(usrquotaを追加):

/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

システム起動時に自動でクォータが有効になるよう、RHEL9では 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

7days3days などに変更して保存することで猶予期間を調整できます。

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

スパムや悪意あるスクリプトが大量の小さなファイルを生成するのを防ぎたい場合は、isoftihard で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

usrquotaがOPTIONSに表示されていない場合は 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

なお、XFSのルートファイルシステム(/)に対してクォータを有効にするにはGRUBの起動パラメータ(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' /パス
ディスククォータはユーザーを「信用しない」のではなく、サービス全体を守るための仕組みです。特に共用サーバーやホスティング環境では、quota・xfs_quotaで上限を設けておくことで、一人の誤操作がシステム全体に波及するリスクを未然に防げます。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。