問題の発生設定ファイルの保存、重要なパッケージのダウンロード、またはデータベースのマイグレーションを実行しようとした際に、システムから次のような不可解なメッセージが返され、作業が中断されることがあります。
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
softとhardの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をもう一度実行し、新しい制限値に対して十分な余裕があることを確認してください。

