前回の記事で、yumでシステムを更新するときなどにスナップショットを取れるように、yumプライグインを導入したのですが、その際に既存のボリュームグループに空きなかったので、HDDを追加してボリュームグループを拡張する必要がありました。
そこでここでは、CentOS 7マシンにHDDを増設して、LVMのボリュームグループを拡張する方法を紹介します。
目次
パーティションを作成する
ここでは1本のHDDしか搭載されていないマシンに15GBのHDDを追加して、ボリュームグループ「centos」を拡張します。ボリュームグループの現在の状態は、以下のとおりで、サイズが33.8GB、空きエクステントが0の状態です。
# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 33.80 GiB
PE Size 4.00 MiB
Total PE 8653
Alloc PE / Size 8653 / 33.80 GiB
Free PE / Size 0 / 0
VG UUID Uwqv3Q-BGHh-0hQ4-Df2h-xdnL-RMFs-8m4imW
HDDが認識されているかを確認する
まずは、次のコマンドで、増設したHDDが認識されているか確認します。
# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sda: 37.6 GB, 37580963840 bytes, 73400320 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: gpt
Disk identifier: 2EADAF79-5C6C-4A8D-A4E6-8F35515B1546
# Start End Size Type Name
1 2048 411647 200M EFI System EFI System Partition
2 411648 2508799 1G Microsoft basic
3 2508800 73398271 33.8G Linux LVM
Disk /dev/mapper/centos-root: 32.5 GB, 32535216128 bytes, 63545344 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk /dev/mapper/centos-swap: 3758 MB, 3758096384 bytes, 7340032 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
増設したHDDが認識されていれば、出力行の下部に表示されているはずです。
ここでは「/dev/sdb」として認識されていることが分かります。
パーティションを作成する
fdiskコマンドで増設したHDDを指定し、パーティションを作成します。
# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x6dec2e2f.
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
まずは「n」コマンドで、パーティションを作成します。
ここでは、増設したHDDのすべての容量を使って1つのパーティションを作成するので、次のように設定しています。
コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-31457279, 初期値 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-31457279, 初期値 31457279): 31457279
Partition 1 of type Linux and of size 15 GiB is set
次に「t」コマンドで、作成したパーティション番号「1」を指定して、タイプ「8e」を指定します。
コマンド (m でヘルプ): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
最後に、変更内容をパーティションテーブルに書き込むため「w」コマンドを実行します。
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
パーティションを作成し終えたら、以下のコマンドで正しくパーティションが作成されているか確認します。
# fdisk -l /dev/sdb
Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
Disk label type: dos
ディスク識別子: 0x6dec2e2f
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 31457279 15727616 8e Linux LVM
最下行で「/dev/sdb1」というパーティションが作成できていることが確認できます。
LVMの操作
物理ボリューム(PV)を作成
次に、pvcreateコマンドを使って、上で作成したパーティションを指定して物理ボリュームを作成します:
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
上のように「successfully created.」と表示されればOKです。
物理ボリュームをボリュームグループに追加
次に、vgextendコマンドを実行して、上で作成した物理ボリュームを、ボリュームグループ(ここでは、ルートファイルシステムがあるボリュームグループ「centos」を指定しています)に追加します。
# vgextend centos /dev/sdb1
Volume group "centos" successfully extended
上のように「successfully extended」と表示されればOKです。
ボリュームグループが拡張されていることを確認
最後にvgdisplayコマンドを実行して、ボリュームグループが拡張されていることを確認します。
# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size <48.80 GiB
PE Size 4.00 MiB
Total PE 12492
Alloc PE / Size 8653 / 33.80 GiB
Free PE / Size 3839 / <15.00 GiB
VG UUID Uwqv3Q-BGHh-0hQ4-Df2h-xdnL-RMFs-8m4imW
「VG Size」が33.8GBから15GB分増えて48.8GBになっており、「Free PE / Size」も拡張した領域の分だけ空きエクステントが増えていることが分かります。
以上で、ボリュームグループの拡張は完了です。
あとがき
はじめは、既存のファイルシステム(論理ボリューム)を縮小して、ボリュームグループの空き容量を増やそうとしていましたが、CentOS 7のデフォルトで使用されるファイルシステムXFSは、拡張はできても縮小はできないため、ここで紹介したHDDを増設することになりました。