Linuxで「Disk quota exceeded」エラーを修正する方法

intermediate🐧 Linux2026-05-23| ext4またはXFSファイルシステムを使用し、quota-toolsがインストールされたLinux(Ubuntu、Debian、CentOS、RHEL)。

Error Message

Disk quota exceeded
#クォータ#ディスク#ストレージ#edquota#linux

問題の発生設定ファイルの保存、重要なパッケージのダウンロード、またはデータベースのマイグレーションを実行しようとした際に、システムから次のような不可解なメッセージが返され、作業が中断されることがあります。

Disk quota exceeded

このエラーは時に「嘘」のように感じられることがあります。df -hを実行すると物理ディスクには50GBの空き容量があるように見えるからです。では、原因は何でしょうか?マルチユーザーシステムでは、管理者が**クォータ(quota)**を設定していることがあります。これは特定のユーザーが所有できるデータ量に対する人為的な制限(上限)です。この制限に達すると、ハードウェアに余裕があっても、システムはそのアカウントの書き込み権限をロックします。

ステップ 1:使用状況の診断まず、状況を確認しましょう。制限にどれだけ近づいているかを正確に把握する必要があります。quotaコマンドを使用すると、現在の自分の状況を一覧で確認できます。

# 自分のクォータを読みやすい形式で確認する
quota -s

blocks(実際の容量)とinodes(ファイル数)の列を注意深く見てください。「usage」が「limit」と一致している場合、それがボトルネックの原因です。sudo権限がある場合は、システム上の全ユーザーの使用状況を一度に監査できます。

sudo repquota -as

ステップ 2:容量を消費しているファイルを探す制限値を増やすことができない場合は、ファイルを削除する必要があります。どこにデータがあるか推測するのではなく、duを使用してホームディレクトリ内で最も容量の大きいフォルダを見つけましょう。

# 上位10個の大きなディレクトリを探す
du -ah ~ | sort -rh | head -n 10

以下のよくある原因に注意してください:

  • 隠れたランタイム: ~/.npm~/.cacheフォルダは、気づかないうちに2GBや3GBまで膨れ上がることがあります。- 放置されたログ: /var/www/html/logsやアプリのローカルログディレクトリを確認してください。暴走したデバッグログ1つで、数時間のうちに500MBを消費することもあります。- 幽霊のようなゴミ箱: GUI経由でファイルを削除すると、単に~/.local/share/Trashに移動されるだけのことが多いです。そのフォルダを完全に空にするまで、クォータの使用量としてカウントされ続けます。## ステップ 3:迅速なクリーンアップすぐにサービスを復旧させる必要がありますか?以下のコマンドは、手っ取り早く空き容量を確保するために、原因になりやすい場所を対象としています。
# 肥大化したパッケージマネージャーのキャッシュを削除する
npm cache clean --force
yarn cache clean

# 開発環境に蓄積した Python のバイトコードを削除する
find . -name "*.pyc" -delete

# ターミナルからゴミ箱を空にする
rm -rf ~/.local/share/Trash/*

ステップ 4:制限値の調整(管理者向け)ユーザーが業務を遂行するために、単により多くの容量が必要な場合もあります。クォータには「ソフト(Soft)」制限(警告ゾーン)と「ハード(Hard)」制限(絶対的な壁)があります。これらを変更するには、デフォルトのテキストエディタを開くedquotaを使用します。

sudo edquota -u username

設定内容は以下のようになります:

Disk quotas for user dev_user (uid 1001):
  Filesystem      blocks       soft       hard     inodes     soft     hard
  /dev/sda1      1048576    2097152    2500000         45        0        0

softhardのblocksの値を更新します。これらは通常1KB単位で計測されるため、2097152は2GBに相当することに注意してください。スクリプトなどでより迅速に設定したい場合は、setquotaを使用します。

# 2GBのソフト制限と2.5GBのハード制限を即座に設定する
sudo setquota -u username 2097152 2621440 0 0 /

検証:修正の確認数ファイルを削除しただけで解決したと思い込まないでください。touchを使用して書き込みが可能かテストします。

touch test_file && rm test_file

このコマンドがエラーなく完了すれば、ブロックは解除されています。最後にquota -sをもう一度実行し、新しい制限値に対して十分な余裕があることを確認してください。

学んだ教訓- iノード数に注意: 10GBの空き容量があっても、iノード(inode)制限に達しているとこのエラーが発生します。これは、数十万個の小さなセッションファイルやログファイルがある場合に起こります。- 猶予期間の罠: ソフト制限を超えると、タイマー(通常は7日間)が始動します。期限が切れる前に制限以下に戻さないと、ソフト制限がハード制限として扱われ、すべての書き込みがブロックされます。- 警告の自動化: クォータの80%を超えたときにユーザーにメールを送信する簡単なcronジョブを設定しましょう。金曜日の夜に本番環境がクラッシュするよりも、火曜日にクリーンアップする方がはるかに賢明です。

Related Error Notes