このチュートリアルでは、新しいディスクパーティションを作成し、それらを LVM の物理ボリュームに変換し、既存のボリュームグループへ追加し、最後に論理ボリュームとファイルシステムを拡張することで、既存の Logical Volume Manager (LVM) 構成を拡張する手順を説明します。
以下の例では 2 台の NVMe ディスク /dev/nvme0n1 と /dev/nvme2n1 を使用し、新しいパーティションが /dev/nvme0n1p2 と /dev/nvme2n1p2 になることを前提としています。デバイス名、ボリュームグループ名、論理ボリューム名、パーティション番号、サイズは、自分のシステムに合わせて置き換えてください。
前提条件
- root または
sudo権限。 - 重要なデータの最新バックアップ。
- 既存の LVM ボリュームグループと論理ボリューム。
lsblk、pvs、vgs、lvsで正しいディスクデバイスを特定済みであること。- 新しいパーティションを作成できるだけの未割り当てディスク領域。
パーティションテーブルを変更する前に、現在のレイアウトを確認します。
lsblk
sudo pvs
sudo vgs
sudo lvs
このチュートリアルでは、例のボリュームグループを vg_storage、例の論理ボリュームを /dev/vg_storage/lv_storage とします。
ステップ 1: 必要に応じてファイルシステムをアンマウントする
変更しようとしているパーティションがマウントされている場合は、先にアンマウントします。無関係なマウント済みファイルシステムはアンマウントしないでください。また、自分が現在起動して使用しているファイルシステムは、何をしているのか正確に理解している場合を除き、アンマウントしないでください。
sudo umount /dev/nvme0n1pX
sudo umount /dev/nvme2n1pX
X は適切なパーティション番号に置き換えてください。新しいパーティションを作成する場所がディスク上の空き領域だけである場合、このステップは通常スキップできます。
ステップ 2: fdisk で新しいパーティションを作成する
以下のコマンドは、各ディスクに 465G の新しいプライマリパーティションを 1 つ作成します。ここでは fdisk を非対話的に使っています。便利ですが、やり直しが効きにくい方法でもあります。コマンドを実行する前に、対象デバイス名を必ず確認してください。
/dev/nvme0n1 の場合:
echo -e "nnpnnn+465Gnw" | sudo fdisk /dev/nvme0n1
/dev/nvme2n1 の場合:
echo -e "nnpnnn+465Gnw" | sudo fdisk /dev/nvme2n1
この入力シーケンスの意味は次のとおりです。
n: 新しいパーティションを作成する。p: プライマリパーティションを作成する。- 空行: デフォルトのパーティション番号を受け入れる。
- 空行: デフォルトの開始セクタを受け入れる。
+465G:fdiskが解釈する 465 GiB または GiB 相当のサイズのパーティションを作成する。w: 変更をディスクへ書き込む。
システムが GPT を使用していて、パーティションタイプを明示的に Linux LVM としてマークしたい場合は、対話形式の fdisk または parted を使い、パーティションタイプを適切に設定してください。LVM はパーティションタイプフラグがなくても使用可能な物理ボリュームを検出できることが多いですが、設定しておくと後から見る人にとってディスクレイアウトが明確になります。
パーティションテーブルを書き込んだら、カーネルに再読み込みを依頼します。
sudo partprobe /dev/nvme0n1
sudo partprobe /dev/nvme2n1
ディスクが使用中でカーネルがパーティションテーブルを再読み込みできない場合、新しいパーティションが正しく表示されるまで再起動が必要になることがあります。
ステップ 3: 新しいパーティションを確認する
新しいパーティションが作成されたことを確認します。
lsblk
たとえば、次のような新しいパーティションが表示されるはずです。
/dev/nvme0n1p2
/dev/nvme2n1p2
次のステップで使う予定のパスと、パーティション番号が一致していることも確認してください。新しいパーティションが p2 でない場合は、それに合わせてコマンドを調整します。
ステップ 4: 物理ボリュームを作成する
新しいパーティション上に LVM 物理ボリュームを作成します。
sudo pvcreate /dev/nvme0n1p2 /dev/nvme2n1p2
確認します。
sudo pvs
ステップ 5: ボリュームグループを拡張する
新しい物理ボリュームを既存のボリュームグループへ追加します。ボリュームグループ名が vg_storage であると仮定します。
sudo vgextend vg_storage /dev/nvme0n1p2 /dev/nvme2n1p2
追加された空き領域を確認します。
sudo vgs
ステップ 6: 論理ボリュームを拡張する
ボリュームグループ内のすべての空き領域を使って、論理ボリュームを拡張します。
sudo lvextend -l +100%FREE /dev/vg_storage/lv_storage
新しい論理ボリュームサイズは次のコマンドで確認できます。
sudo lvs
多くのシステムでは lvextend -r を使ってファイルシステムのリサイズも同時に実行できますが、以下では処理を明示的にするため、リサイズ手順を分けています。
ステップ 7: ファイルシステムをリサイズする
新しく追加された論理ボリューム領域を使えるように、ファイルシステムをリサイズします。
ext4 の場合:
sudo resize2fs /dev/vg_storage/lv_storage
XFS の場合、ファイルシステムはマウントされている必要があり、ブロックデバイスではなくマウントポイントを指定してリサイズします。たとえば、論理ボリュームが /mnt/storage にマウントされている場合:
sudo xfs_growfs /mnt/storage
ファイルシステムタイプが不明な場合は確認します。
lsblk -f
最後に、利用可能な領域を確認します。
df -h
完全なコマンドシーケンス
正確なコマンドシーケンスは、デバイス名、パーティション番号、ボリュームグループ、論理ボリューム、ファイルシステムタイプによって異なります。このチュートリアルの例では、次のようになります。
# Inspect current disks and LVM state
lsblk
sudo pvs
sudo vgs
sudo lvs
# Create new partitions on /dev/nvme0n1 and /dev/nvme2n1
echo -e "nnpnnn+465Gnw" | sudo fdisk /dev/nvme0n1
echo -e "nnpnnn+465Gnw" | sudo fdisk /dev/nvme2n1
# Re-read partition tables
sudo partprobe /dev/nvme0n1
sudo partprobe /dev/nvme2n1
# Verify the new partitions
lsblk
# Create physical volumes
sudo pvcreate /dev/nvme0n1p2 /dev/nvme2n1p2
# Extend the volume group
sudo vgextend vg_storage /dev/nvme0n1p2 /dev/nvme2n1p2
# Extend the logical volume
sudo lvextend -l +100%FREE /dev/vg_storage/lv_storage
# Resize an ext4 filesystem
sudo resize2fs /dev/vg_storage/lv_storage
# Verify the result
sudo pvs
sudo vgs
sudo lvs
df -h
この手順では、新しいパーティションを物理ボリュームとして追加し、既存のボリュームグループを拡張し、論理ボリュームを大きくし、追加容量を使えるようにファイルシステムをリサイズすることで、LVM を基盤とするファイルシステムを拡張します。
