結論:5つの層を順番に確認する

  1. lsblkで物理ディスクとパーティションを確認する
  2. findmntdfで、満杯のファイルシステムを特定する
  3. duで容量を使っているディレクトリを探す
  4. pvsvgslvsでLVMの未使用領域を調べる
  5. SMART情報を確認し、整理・拡張・交換のどれが必要か決める
注意:この段階ではrmmkfspvcreateを実行しません。まず読み取り専用の確認コマンドで構成と対象を特定します。

lsblkで物理構成を確認する

lsblk -e 7 -o NAME,MODEL,SERIAL,SIZE,TYPE,FSTYPE,MOUNTPOINTS

diskは物理ディスク、partはパーティション、lvmは論理ボリュームを表します。デバイス名だけで判断せず、モデル、シリアル、容量を一緒に確認します。

確認内容
NAMEsdanvme0n1などのデバイス名
MODEL / SERIAL物理ドライブを識別する情報
FSTYPEext4、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に空きがなくても、vgsVFreeに余裕があれば、物理ディスクを購入せず論理ボリュームを拡張できる可能性があります。ファイルシステムの拡張方法は形式によって異なるため、構成確認後に判断します。

ディスクの健康状態を確認する

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の接続方式・容量・耐久性の選び方を確認してください。

参考資料

著者について

intrajp。Linux、クラウドインフラ、Kubernetesなどの技術情報を発信しています。この記事は、購入前に現在の構成と不足の原因を確認できる診断手順としてまとめました。

運営者情報と記事の方針を見る