page_adsence

2011年3月15日火曜日

VMWareの仮想ディスクの拡張方法

VMWareで最初にパーティション切ってた容量がいっぱいになっってきたので、拡張してみた。
Windwosの方の空き容量が100GB以上あったので、とりあえず8GBから20GBに拡張してみた。
手順は以下の通り。


1.まず現状を確認する。
使用率が76%になっていてあまり空き容量に余裕がないことが確認できる。
確認したらVMWareを落とす。

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      7.2G  5.1G  1.7G  76% /
/dev/hda1              99M   12M   82M  13% /boot
tmpfs                 506M     0  506M   0% /dev/shm

2.VMWare-Serverに付属している「vmware-vdiskmanager.exe」を探す。
VMWareのインストールディレクトリ内にある。
通常であれば
「C:\Program Files\VMWare\VMware Server」の中にあります。

3.vmdkファイルの場所を探す。
基本的には「C:\Virtual Machines\[OS名]\[OS名].vmdk」になります。
似たような名前で「[OS名]-flat.vmdk」というファイル名があり、仮想HDD容量分のファイルがありますが、
使用するのはこちらではなく、「[OS名].vmdk」というファイルになります。

3.コマンドプロンプトを立ち上げて、「vmware-vdiskmanager.exe」があるディレクトリへ移動します。
cd C:\Program Files\VMWare\VMware Server

4.vmdkファイルを拡張します
vmware-vdiskmanager.exe -x 20GB C:\Virtual Machines\[OS名]\[OS名].vmdk

5.拡張が終わると以下のようなメッセージが出ます。
なにかWARNINGが出てますが、問題ありません。
Grow: 100% done.

The old geometry C/H/S of the disk is: 7281/16/63
The new geometry C/H/S of the disk is: 10402/16/63
Disk expansion completed successfully.

WARNING: If the virtual disk is partitioned, you must use a third-party
         utility in the virtual machine to expand the size of the
         partitions. For more information, see:
         http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1647

6.VMWareを立ち上げて状態を確認
容量が増えていることを確認する
# 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        1044     8281507+  8e  Linux LVM

7.パーティションを作成する
# fdisk /dev/hda
このディスクのシリンダ数は 2610 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)
コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 3
最初 シリンダ (1045-2610, default 1045):Enter
Using default value 1045
終点 シリンダ または +サイズ または +サイズM または +サイズK (1045-2610, default 2610):Enter
Using default value 2610

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

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

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

8.状態を再び確認
/dev/hda3が追加され、そこに空き容量が割り当てられていることを確認する
# 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        1044     8281507+  8e  Linux LVM
/dev/hda3            1045        2610    12578895   8e  Linux LVM

9.リブートもしくはpartprobeを実行する。今回はpartprobeで即時反映させる。
# partprobe

10.物理ボリュームを作成する
# pvcreate /dev/hda3
Physical volume "/dev/hda3" successfully created

11.既存のボリュームグループ(VG) に新しいパーティションを追加する
# vgextend VolGroup00 /dev/hda3
  /dev/hdc: open failed: メディアが見つかりません
  Volume group "VolGroup00" successfully extended

12.既存の論理ボリューム(LV) を追加したパーティションの分、拡張する。既存のLV は lvdisplay で確認。たぶん 「LogVol00」
# lvdisplay -C
  /dev/hdc: open failed: メディアが見つかりません
  LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  LogVol00 VolGroup00 -wi-ao   7.38G
  LogVol01 VolGroup00 -wi-ao 512.00M

13.vgdisplay で拡張できるサイズを確認する
# vgdisplay
  /dev/hdc: open failed: メディアが見つかりません
  --- Volume group ---
  VG Name               VolGroup00
  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               19.84 GB
  PE Size               32.00 MB
  Total PE              635
  Alloc PE / Size       252 / 7.88 GB
  Free  PE / Size       383 / 11.97 GB
  VG UUID               pvKmW5-rMWe-K7gi-IMhr-xaBy-GPDZ-xs14kc

14.[PE Size] * [Free PE] の値が拡張できるサイズとなるので、32MB * 383 = 12256MB を拡張する。
# lvextend -L +12256MB /dev/VolGroup00/LogVol00
  /dev/hdc: open failed: メディアが見つかりません
  Extending logical volume LogVol00 to 19.34 GB
  Logical volume LogVol00 successfully resized

15.ファイルシステムを拡張する。
# 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 5070848 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 5070848 blocks long.

16.容量が増えていることを確認する
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       19G  5.1G   13G  29% /
/dev/hda1              99M   12M   82M  13% /boot
tmpfs                 506M     0  506M   0% /dev/shm