VMware ESXi ゲストのHDDを増やす(CentOS)

VMwareEsxiのゲストOS(CentOS)のハードディスクを増やした記録です。今回は、20GBから30GBにしました。

下記作業は、PHP5.1.6サーバで行いました。

まずはターゲットとなるゲストOSにログインしてrootになって停止します。

# shutdown -h now

vSphere Client を起動し、ターゲットの「仮想マシン設定の編集」
今回は、20GBだったものを30GBにしたかったので、下図のように 30 に変更してOK。

vmware

ゲストOSを起動してログインします。
ここからはゲストOSでの作業。

まずは今の状態を確認

$ df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_home-lv_root
16G 13G 1.8G 88% /
tmpfs 246M 0 246M 0% /dev/shm
/dev/sda1 485M 75M 385M 17% /boot

vSphere Clientの設定変更だけでは変わらず今まで通りです。

rootになります。

$ su

fdiskで確認してみます。

# fdisk -l

ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000b46d8

デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 64 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2 64 2611 20458496 8e Linux LVM

ディスク /dev/mapper/vg_home-lv_root: 16.7 GB, 16718495744 バイト
ヘッド 255, セクタ 63, シリンダ 2032
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

ディスク /dev/mapper/vg_home-lv_swap: 4227 MB, 4227858432 バイト
ヘッド 255, セクタ 63, シリンダ 514
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

32.2 GB という文字が見えます。

新しく追加した分をfdiskで作成します。

# fdisk /dev/sda

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
強く推奨します。 and change display units to
sectors (command 'u').

コマンド (m でヘルプ): p

ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000b46d8

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        2611    20458496   8e  Linux LVM

コマンド (m でヘルプ): n
コマンドアクション
e   拡張
p   基本パーティション (1-4)
p
パーティション番号 (1-4): 3
最初 シリンダ (2611-3916, 初期値 2611):
初期値 2611 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (2611-3916, 初期値 3916):
初期値 3916 を使います

コマンド (m でヘルプ): p

ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000b46d8

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        2611    20458496   8e  Linux LVM
/dev/sda3            2611        3916    10483750   83  Linux

コマンド (m でヘルプ): t
パーティション番号 (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p

ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000b46d8

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        2611    20458496   8e  Linux LVM
/dev/sda3            2611        3916    10483750   8e  Linux LVM

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。

fdiskを抜け出るので、再起動します。

# reboot

再起動したらログインして root になっておきます。

$ su

LVM物理ボリュームを作成

# pvcreate /dev/sda3
Writing physical volume data to disk "/dev/sda3"
Physical volume "/dev/sda3" successfully created

ここから環境によって少し変わるのでコピペな方は注意です。

VG(ボリュームグループ)名の確認

# vgdisplay -v
Finding all volume groups
Finding volume group "vg_home"
--- Volume group ---
VG Name vg_home
System ID
Format lvm2
Metadata Areas 1
~ 以下略 ~

Finding volume group "vg_home"
VGは、vg_homeなので、以下の説明には vg_home を使います。
※異なる場合は読み替えてください。

ボリュームグループに物理ボリュームを割り当てます。

# vgextend vg_home /dev/sda3
Volume group "vg_home" successfully extended

増加させるサイズを確認します。

# vgdisplay -v
Finding all volume groups
Finding volume group "vg_home"
--- Volume group ---
VG Name vg_home
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 29.50 GiB
PE Size 4.00 MiB
Total PE 7553
Alloc PE / Size 4994 / 19.51 GiB
Free PE / Size 2559 / 10.00 GiB
VG UUID EcLBR0-GHfM-acS6-xmUF-uE7N-N6kK-K6WP3O
~ 以下略 ~

Free PE / Size 2559 / 10.00 GiB
ここの数字に注目します。今回は、10GB増やすように進めているので「10.00 GiB」の文字が見えます。
その隣の 2559 の数字を使います。

論理ボリュームを増加させます
上の手順で確認した、 2559 を指定します。

# lvextend -l +2559 /dev/vg_home/lv_root
Extending logical volume lv_root to 25.57 GiB
Logical volume lv_root successfully resized

変わったことを確認します。

# vgdisplay -v
Finding all volume groups
Finding volume group "vg_home"
--- Volume group ---
VG Name vg_home
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
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 29.50 GiB
PE Size 4.00 MiB
Total PE 7553
Alloc PE / Size 7553 / 29.50 GiB
Free PE / Size 0 / 0
VG UUID EcLBR0-GHfM-acS6-xmUF-uE7N-N6kK-K6WP3O
~ 以下略 ~

Alloc PE / Size 7553 / 29.50 GiB
Free PE / Size 0 / 0
Freeの数字がそのまま Alloc に足されたことが分かります。

ボリューム名の確認

# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_home-lv_root
16G 13G 1.8G 88% /
tmpfs 246M 0 246M 0% /dev/shm
/dev/sda1 485M 75M 385M 17% /boot

/dev/mapper/vg_home-lv_root
ここに注目します。
今回は、 vg_home なので vg_home の文字が確認できます。
次の手順ではその後ろの lv_root を使います。

ファイルシステムサイズの再認識します。
vg_home と lv_root は、手元の環境に合わせて書き換えてください。

# resize2fs /dev/vg_home/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_home/lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg_home/lv_root to 6702080 (4k) blocks.
The filesystem on /dev/vg_home/lv_root is now 6702080 blocks long.

容量が増えたか確認してみます。

# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_home-lv_root
26G 13G 12G 54% /
tmpfs 246M 0 246M 0% /dev/shm
/dev/sda1 485M 75M 385M 17% /boot

増えてます。

比較として、本作業を行う前の df は下記になります。

# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_home-lv_root
16G 13G 1.8G 88% /
tmpfs 246M 0 246M 0% /dev/shm
/dev/sda1 485M 75M 385M 17% /boot

参考リンク