VMware ESXi:ゲストに増設したHDDを元にLVMボリュームを拡張する

VMware ESXi などの仮想環境で、ゲストOS作成時「割り当てHDD容量」の見積りを誤りますと、いわゆる「/」が足りなくなる問題が発生します。その場合の対処として、HDD構成が「LVM(Logical Volume Manager)」であれば後から容量増設が可能です。(2014/09/19作成)

Expansion MichaelGaida / Pixabay

0.本紙の作業概要

VMware ESXi 既存ゲスト環境は、20GのHDDがLVMで設置されています。
上記環境に、HDDを30Gの新規追加、LVMボリューム「+20G」分容量を増やします。
作業時、対象ゲストOSは停止させる必要があります。
作業時、スナップショットがあると仮想ディスクサイズを増やせないです。
本紙でよく出現する「用語」を以下に補足します。

LVMとは…

LVM(Logical Volume Manager)とは、何台かのディスクをひとつのグループにまとめ、そこから論理ボリューム(パーティション)を切り出すことのできるHP-UXの機能です。 LVMでは、システムの運用を継続したまま論理ボリュームのサイズ変更やディスク追加が可能です。(参考文献:日本HP)

FDISKとは…

「 FDISK」とは、ハードディスクドライブに対して、論理的なパーティション(区画)を設定するためのMS-DOSのコマンドのことです。 PC互換機では、FDISKというプログラムを使ってハードディスクドライブに対して論理的なパーティションを設定することになっています。 システムに新しいハードディスクドライブを接続した場合は、まず最初にこのFDISKコマンドでパーティションを設定し、FORMATコマンドでフォーマットを行なうことによって、ユーザーが利用できる状態になります。(参考文献:Lenovo)

1.環境情報

ホストOS: VMware ESXi バージョン 5.1.0
ゲストOS: CentOS release 5.9

2.ゲストOS:新規HDDを追加

VMware ESXi 対象ゲストOSに「新規HDD」を追加します。なお VMware ESXi 上のHDDの追加方法については割愛します。

(HDD増設前)

# fdisk -l
ddisk /ev/hda: 21.4 gb, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/ddev/hda1   *           1          13      104391   83  linux
/dev/hda2              14        2610    20860402+  8e  Linux LVM

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       19G   16G  1.4G  93% /
/dev/hda1              99M   34M   61M  36% /boot
tmpfs                1006M     0 1006M   0% /dev/shm

(HDD増設後)

# fdisk -l
Disk /dev/hda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        2610    20860402+  8e  Linux LVM

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

ディスク /dev/sda は正常な領域テーブルを含んでいません

3.ゲストOS:HDDの初期設定(fdisk)

ゲストOS上で、増設したHDDに「fdisk」コマンドで初期設定を行います。

# fdisk /dev/sda
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 3916 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

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

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-3916, default 1): 
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-3916, default 3916): 
Using default value 3916

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

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1               1        3916    31455238+  83  Linux

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

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

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1               1        3916    31455238+  8e  Linux LVM

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

# /sbin/shutdown -r now

4.ゲストOS:LVMによる論理ボリューム拡張

ゲストOS上で、LVMによる論理ボリューム拡張します。

# fdisk -l
Disk /dev/hda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        2610    20860402+  8e  Linux LVM

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1               1        3916    31455238+  8e  Linux LVM

LVM物理ボリュームを作成 
# pvcreate /dev/sda1
  Writing physical volume data to disk "/dev/sda1"
  Physical volume "/dev/sda1" successfully created

物理ボリュームの情報を表示する(ボリュームグループ割り当て前)
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/hda2
  VG Name               VolGroup00
  PV Size               19.89 GB / not usable 19.49 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              636
  Free PE               0
  Allocated PE          636
  PV UUID               BptsvR-MYKn-dfOq-Tjp1-COMu-FwSS-c9grFb
   
  "/dev/sda1" is a new physical volume of "30.00 GB"
  --- NEW Physical volume ---
  PV Name               /dev/sda1
  VG Name               
  PV Size               30.00 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               QNuZpW-SL3L-yLZj-PG3K-yfHe-XOfL-4R1S3D

ボリュームグループに物理ボリュームを割り当てる
# vgextend VolGroup00 /dev/sda1
  Volume group "VolGroup00" successfully extended

物理ボリュームの情報を表示する(ボリュームグループ割り当て後)
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/hda2
  VG Name               VolGroup00
  PV Size               19.89 GB / not usable 19.49 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              636
  Free PE               0
  Allocated PE          636
  PV UUID               BptsvR-MYKn-dfOq-Tjp1-COMu-FwSS-c9grFb
   
  "/dev/sda1" is a new physical volume of "30.00 GB"
  --- NEW Physical volume ---
  PV Name               /dev/sda1
  VG Name               
  PV Size               30.00 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               QNuZpW-SL3L-yLZj-PG3K-yfHe-XOfL-4R1S3D

論理ボリュームを増加させる
# lvextend -L +20Gb /dev/VolGroup00/LogVol00
  Extending logical volume LogVol00 to 38.88 GB
  Logical volume LogVol00 successfully resized

ファイルシステムサイズの再認識 
# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 10190848 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 10190848 blocks long.

容量の確認
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       38G   16G   20G  45% /
/dev/hda1              99M   34M   61M  36% /boot
tmpfs                1006M     0 1006M   0% /dev/shm

以上

About yoshimasa

埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。