Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
LVM は、物理ディスクやパーティションを物理ボリュームとして扱い、ボリュームグループにまとめ、その上に論理ボリュームを作る仕組みです。Ubuntu 26.04 でローカルディスクを柔軟に扱う場合、後から容量を増やしやすい構成として LVM を使う場面があります。
この記事では、lvm2 の導入、ブロックデバイス確認、PV / VG / LV の作成、ファイルシステム作成、マウント、拡張、確認コマンドを扱います。ディスク初期化はデータ消失につながるため、対象デバイスを取り違えないことを最優先にします。
LVM の構成要素
PV: LVM が利用する物理ボリュームです。ディスクやパーティションを指定します。VG: 複数の PV をまとめるボリュームグループです。LV: VG の領域から切り出す論理ボリュームです。ファイルシステムやアプリケーションの保存先として使います。PE: VG 内部で管理される割り当て単位です。通常は既定値で問題ありません。
前提条件
- 対象デバイスが OS ディスクや既存データディスクではないことを確認していること。
- 対象デバイスの用途、VG 名、LV 名、容量、マウント先を決めていること。
- 既存ファイルシステムや既存 LVM メタデータの有無を確認していること。
- 作業前に必要なバックアップを取得していること。
lsblk -f
sudo blkid
sudo pvs
sudo vgs
sudo lvslvm2 をインストールする
Ubuntu 26.04 では、LVM 操作に lvm2 パッケージを使います。
sudo apt update
sudo apt install -y lvm2対象デバイスを確認する
以下では例として /dev/sdb を使います。実際の環境では、ディスク名が変わることがあります。lsblk -f と blkid で対象を確認し、既存データがあるデバイスを初期化しないようにします。
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL
sudo blkid /dev/sdb || true
sudo wipefs -n /dev/sdbPV を作成する
対象デバイスを LVM の物理ボリュームとして初期化します。この操作は対象デバイスの LVM メタデータを作成するため、対象を間違えないようにします。
sudo pvcreate /dev/sdb
sudo pvs
sudo pvdisplay /dev/sdbVG を作成する
作成した PV を使ってボリュームグループを作成します。ここでは vg_data という名前にします。
sudo vgcreate vg_data /dev/sdb
sudo vgs
sudo vgdisplay vg_dataLV を作成する
VG から論理ボリュームを切り出します。ここでは lv_app という名前で 20 GiB の LV を作成します。容量を全量使い切らず、後から拡張できる余地を残す設計も有効です。
sudo lvcreate -n lv_app -L 20G vg_data
sudo lvs
sudo lvdisplay /dev/vg_data/lv_appファイルシステムを作成する
LV にファイルシステムを作成します。以下では ext4 を使います。既存ファイルシステムがある場合は上書きになるため、事前確認を必ず行います。
sudo blkid /dev/vg_data/lv_app || true
sudo mkfs.ext4 /dev/vg_data/lv_app
sudo blkid /dev/vg_data/lv_appマウントして確認する
マウントポイントを作成し、手動マウントして動作を確認します。永続化する前に、読み書きできることと意図したファイルシステムであることを確認します。
sudo mkdir -p /srv/data/app
sudo mount /dev/vg_data/lv_app /srv/data/app
findmnt /srv/data/app
df -h /srv/data/app
sudo touch /srv/data/app/.lvm-test
sudo rm /srv/data/app/.lvm-testfstab に登録する
再起動後も使う場合は /etc/fstab に登録します。デバイス名よりも UUID を使うと、デバイス名の変化に強くなります。
UUID=$(sudo blkid -s UUID -o value /dev/vg_data/lv_app)
sudo cp -a /etc/fstab /etc/fstab.bak.$(date +%Y%m%d%H%M%S)
printf '%s\n' "UUID=$UUID /srv/data/app ext4 defaults 0 2" | sudo tee -a /etc/fstab >/dev/null
sudo findmnt --verify --verboseLV を拡張する
LVM の利点の一つは、VG に空きがあれば LV を拡張できることです。ext4 の場合は、LV 拡張後にファイルシステムも拡張します。縮小は難易度とリスクが高いため、ここでは扱いません。
sudo vgs
sudo lvextend -L +10G /dev/vg_data/lv_app
sudo resize2fs /dev/vg_data/lv_app
df -h /srv/data/app
sudo lvsPV を追加して VG を拡張する
別ディスクを追加して VG の容量を増やす場合は、新しいデバイスを PV にしてから VG へ追加します。対象デバイスの確認は、初回作成時と同じく慎重に行います。
lsblk -f
sudo wipefs -n /dev/sdc
sudo pvcreate /dev/sdc
sudo vgextend vg_data /dev/sdc
sudo vgs状態確認コマンド
LVM は階層があるため、PV、VG、LV、ファイルシステム、マウント状態を分けて確認します。
sudo pvs
sudo vgs
sudo lvs
lsblk -f
findmnt /srv/data/app
df -h /srv/data/app運用時に確認する項目
- 対象デバイスを取り違えていないこと。
- VG に空き容量を残すか、全量割り当てるかを用途に合わせて決めていること。
- LV 名とマウントポイントが用途から見て分かりやすいこと。
- ファイルシステムの拡張手順を、使用するファイルシステムに合わせて確認していること。
- 縮小やデバイス削除は、バックアップと停止手順を決めてから行うこと。
まとめ
Ubuntu 26.04 で LVM を使う場合は、対象デバイス確認、PV 作成、VG 作成、LV 作成、ファイルシステム作成、マウント、永続化の順に進めます。LVM は容量拡張に強い一方で、対象デバイスの取り違えや縮小操作の失敗が大きな障害につながるため、確認コマンドを挟みながら進めることが重要です。

