結論:PV・VG・LV・ファイルシステムを分けて見る

物理ディスク/パーティション
        ↓
PV(Physical Volume)
        ↓
VG(Volume Group)
        ↓
LV(Logical Volume)
        ↓
ext4・XFSなどのファイルシステム
        ↓
マウントポイント

dfが示す空き容量は主に最上部のファイルシステムです。VGに空きがあっても、LVとファイルシステムへ割り当てなければdfには現れません。

最初のルール:pvcreatevgextendlvextendを実行する前に、現在の出力とバックアップを保存します。デバイス名の取り違えはデータ損失につながります。

PV・VG・LVとは

役割確認コマンド
PVディスクやパーティションをLVMで利用可能にした領域pvs
VG複数PVの容量をまとめるストレージプールvgs
LVVGから切り出し、ファイルシステムなどに使う論理領域lvs
ファイルシステムファイルとディレクトリを保存する形式lsblk -fdf -hT

構成全体を確認する

lsblk -e 7 -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
findmnt --target /
df -hT

lsblkのツリーで、物理ディスクからパーティション、LVM、マウントポイントまでの関係を確認します。暗号化やRAIDが間にある場合は、LVMだけの単純な構成ではありません。

pvsで物理ボリュームを確認する

sudo pvs -o pv_name,vg_name,pv_size,pv_free,pv_uuid

PVがどのVGへ属し、各PVにどれだけ未割り当て領域があるかを確認します。PVに空きがあっても、VG全体の割当方針や構成を確認してから使用します。

vgsでストレージプールの空きを確認する

sudo vgs -o vg_name,pv_count,lv_count,vg_size,vg_free

VG FreeまたはVFreeが、LVへまだ割り当てられていない容量です。ここに十分な空きがあれば、新しいSSDを追加せず既存LVを拡張できる可能性があります。

lvsで論理ボリュームを確認する

sudo lvs -a -o lv_name,vg_name,lv_size,lv_attr,seg_type,data_percent,devices

通常のlinear LVだけでなく、thin pool、snapshot、RAIDなどでは確認項目と拡張手順が変わります。data_percentが表示される構成では、プール自体の使用率にも注意します。

3種類の「空き」を区別する

空き意味増やす対象
dfのAvailableファイルシステム内でファイルに使える空きファイル整理またはファイルシステム拡張
vgsのVFreeVG内でLVへ未割り当ての空きLVへ割り当てる
ディスクの未割り当て領域パーティションやPVになっていない領域パーティション・PV設計を確認

既存のVG空きから拡張する考え方

例として、対象が通常のLVで、VGに20GiB以上の空きがあり、ファイルシステムが対応している場合は、次のような操作が候補になります。

# 例示。実際のLVパスとバックアップを確認してから実行
sudo lvextend --resizefs --size +20G /dev/vg_data/lv_data

--resizefs-r)はfsadmなどを介して対応ファイルシステムも拡張します。ただし、すべての形式と構成を同じ方法で処理できるわけではありません。実行前後に次を確認します。

findmnt --target /data
sudo vgs
sudo lvs
df -hT /data

縮小は拡張より危険で、XFSのように縮小をサポートしないファイルシステムもあります。本記事の手順を逆に実行して縮小してはいけません。

VGにも空きがない場合

不要データを整理してもVGと物理ディスクに空きがなければ、新しいディスクをPVとして追加するか、別ファイルシステムとしてマウントする方法を検討します。

購入前にLinux用SSDの接続方式と容量を確認し、取り付け後はSSDを追加してマウントする手順へ進んでください。

参考資料

著者について

intrajp。Linux、クラウドインフラ、Kubernetesなどの技術情報を発信しています。この記事は、変更操作より先にLVMの各層を確認することを目的にしています。

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