Linux でファイルを書き込もうとした際に、
No space left on device
というエラーが出ることがあります。
しかし df -h
を実行すると、空き容量がまだ十分にあるように見えることがあります。
「空きがあるのになぜ書き込めないのか?」と戸惑うケースです。
この記事では、この現象の原因と確認方法、解決策を解説します。
あわせて読みたい


Linuxのディスクとファイルシステム管理の基本:df、du、fdiskなどの使い方を徹底解説
ディスクとファイルシステム管理の重要性 Linuxでのディスクやファイルシステムの管理は、システムの安定稼働に欠かせません。本記事では、ディスクの使用状況確認やフ…
目次
主な原因
1. inode の枯渇
Linux のファイルシステム(ext4 など)は「ファイルの中身」を保存する領域とは別に、ファイルの管理情報(inode) を保存する領域を持っています。
- ファイル数が非常に多い(小さなファイルを大量に作った場合など)
- inode 数の上限に達すると、空き容量があっても新しいファイルを作れない
この場合、df -h
では空き容量が見えるのに、実際には「No space left on device」となるのです。
2. 特定ディレクトリの容量制限(クォータ)
システムによってはユーザーやディレクトリごとに ディスククォータ が設定されており、
空き容量があってもその範囲を超えると書き込みできなくなります。
3. tmpfs などメモリベースのファイルシステム
/tmp
や /dev/shm
が tmpfs
(メモリを利用するファイルシステム)の場合、
ディスク容量には余裕があっても、メモリ上の制限に引っかかって書き込めなくなることがあります。
確認方法
inode の使用状況を確認する
df -i
IUse%
が 100% なら inode が枯渇しています。- 特にログファイルやキャッシュで小さなファイルが大量に作られたときに発生します。
クォータの確認
クォータが有効になっている場合は以下のコマンドで確認できます。
quota -v
または管理者が設定している場合、対象ディレクトリのクォータ状況を repquota
で確認します。
tmpfs の容量確認
df -h /tmp
や
mount | grep tmpfs
で tmpfs のサイズを確認できます。
解決方法
1. inode 不足の場合
- 不要な小さいファイルを削除する
find /path/to/dir -type f -size 0 -delete
で空ファイルを削除するのも効果的です。 - ログローテーション設定を見直し、不要なファイルが溜まらないようにする
あわせて読みたい


Linux検索コマンド完全ガイド:find、grep、locateを徹底解説!
検索準備:サンプルファイルを作成しよう まず、検索に使用するためのファイルやディレクトリを作成し、実際に検索結果を確認できるようにします。下記コマンドを実行し…
2. クォータ制限の場合
- 管理者にクォータの拡張を依頼する
- 不要なファイルを削除してクォータの範囲内に収める
3. tmpfs の場合
/etc/fstab
の設定を変更して tmpfs のサイズを増やす- 一時ファイルを
/var/tmp
(通常ディスク領域)に書き込むよう変更する
まとめ
df -h
で空きがあるのに「書き込めない」場合は、inode 不足が最も多い原因です。
df -i
で inode の使用率を確認する- クォータや tmpfs など特殊な制限も考慮する
- 不要ファイル削除や設定変更で対応する
こうした切り分けを覚えておくと、エラーの原因を素早く特定できます。
💡 補足:
システム運用では、容量監視とあわせて inode 使用率の監視も設定しておくと、トラブルを未然に防げます。