結論:5つの層を順番に確認する
lsblkで物理ディスクとパーティションを確認するfindmntとdfで、満杯のファイルシステムを特定するduで容量を使っているディレクトリを探すpvs、vgs、lvsでLVMの未使用領域を調べる- SMART情報を確認し、整理・拡張・交換のどれが必要か決める
rm、mkfs、pvcreateを実行しません。まず読み取り専用の確認コマンドで構成と対象を特定します。lsblkで物理構成を確認する
lsblk -e 7 -o NAME,MODEL,SERIAL,SIZE,TYPE,FSTYPE,MOUNTPOINTS
diskは物理ディスク、partはパーティション、lvmは論理ボリュームを表します。デバイス名だけで判断せず、モデル、シリアル、容量を一緒に確認します。
| 列 | 確認内容 |
|---|---|
| NAME | sda、nvme0n1などのデバイス名 |
| MODEL / SERIAL | 物理ドライブを識別する情報 |
| FSTYPE | ext4、XFS、LVM2_memberなど |
| MOUNTPOINTS | どのディレクトリで使用されているか |
findmntで対象パスの保存先を特定する
例えばDockerデータの保存先がどのファイルシステムに属するかは、次のように確認できます。
findmnt --target /var/lib/docker
findmnt --target /home
別ディスクをマウントしている場合、ルートファイルシステムだけを見ても原因は分かりません。findmntで対象パスと実デバイスの対応を先に確定します。
dfでファイルシステムの使用率を確認する
df -hT
df -ih
-hは容量を読みやすい単位で表示し、-Tはファイルシステム形式を表示します。容量に余裕があるのにファイルを作れない場合は、df -ihでinode枯渇も確認します。
Use%だけでなく、どのマウントポイントが不足しているかを見ます。ルートが満杯でも、別のデータ用ディスクには空きがある場合があります。
duで大きなディレクトリを探す
sudo du -xhd1 /var | sort -h
du -xhd1 "$HOME" | sort -h
-xは別ファイルシステムをまたがず、-d1は1階層だけ集計します。最初からディスク全体を深く走査せず、大きな階層を見つけてから対象を絞ります。
ログを確認する場合は、systemd journalの使用量も調べます。
journalctl --disk-usage
dfとduが一致しない場合
代表的な原因は、削除後もプロセスが開いているファイルです。次のコマンドで確認できます。
sudo lsof +L1
対象プロセスを確認せず停止してはいけません。ほかにも、ファイルシステムの予約領域、権限で走査できない場所、マウントで隠れたディレクトリなどにより差が生じます。
LVMに空きが残っていないか確認する
sudo pvs
sudo vgs
sudo lvs -o lv_name,vg_name,lv_size,data_percent,devices
dfに空きがなくても、vgsのVFreeに余裕があれば、物理ディスクを購入せず論理ボリュームを拡張できる可能性があります。ファイルシステムの拡張方法は形式によって異なるため、構成確認後に判断します。
ディスクの健康状態を確認する
SATA SSDやHDDではsmartctl、NVMe SSDではnvme-cliを利用できます。
sudo smartctl -x /dev/sda
sudo nvme smart-log /dev/nvme0
SMARTの総合判定だけで故障を否定することはできません。エラー、温度、使用率の推移、OSログ、実際のI/Oエラーを合わせて確認します。詳しくはsmartctl・nvme-cliによる検査で解説します。
結果から対策を選ぶ
| 確認結果 | 対策 |
|---|---|
| 不要なログやアーカイブが大きい | 保持方針を確認して整理・圧縮する |
| VGに未使用領域がある | バックアップ後、LVとファイルシステムの拡張を検討する |
| 物理ディスク自体に空きがない | SSDの増設・交換を検討する |
| SMARTやOSログに異常がある | 書き込みを減らし、先にバックアップして交換する |
増設が必要と判断した場合は、Linux用SSDの接続方式・容量・耐久性の選び方を確認してください。