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

参考リンク