VMWare Player(CentOS)で仮想ディスク(LVM)のサイズを変更する

LVMのディスクサイズを変更しようとしたが、いろいろとハマったのでメモ。


◆準備物
GParted 0.10.0-3 iso パーティションの変更ツール
以下のサイトからLiveCDのISOのイメージgparted-live-0.10.0-3.isoをダウンロードします。
http://gparted.sourceforge.net/download.php

※実はubuntuでも別のパーティションから起動したlinuxから操作できれば
良いとの事らしいが、実際に次のISOではうまく実行できなかった。
GPartedだとすんなりうまくいったのでそちらを採用する。
ubuntu-ja-11.10-desktop-i386.iso

というか、これに気付くまでに一晩かかってしまった(汗


VMWare側の設定
仮想マシン仮想マシンの設定
画面でハードディスクを選択します。
ユーティリティで「拡張」をクリックします。
ディスク容量の拡張ウインドウがポップアップするので、
「ディスク最大サイズ」で拡張するサイズに変更する。
今回は10GBイメージを16GBに拡張する。

CentOSを起動しターミナルで作業を行う

まず、dfにて確認。

# df -H
Filesystem             Size   Used  Avail Use% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       6.2G   6.2G      0 100% / ←何故か100%になってしまっていた(汗
/dev/sda1              104M   104M      0 100% /boot
tmpfs                  530M      0   530M   0% /dev/shm

fstabも確認する。

# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

パーティーションを変更設定する。

# fdisk /dev/sda

このディスクのシリンダ数は 2088 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)

コマンド (m でヘルプ): p ←パーティションを表示させます

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

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1305    10377990   8e  Linux LVM ←今回のresize対象

コマンド (m でヘルプ): d ←パーティションを削除(書き込まない限り消えないらしい)
領域番号 (1-4): 2 ←対象のパーティションの番号

コマンド (m でヘルプ):  n ←新たにパーティションを作成
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4):  2 ←番号は以前と同じものを入力する
最初 シリンダ (14-2088, default 14): ←デフォルトのままでOKらしい
Using default value 14
終点 シリンダ または +サイズ または +サイズM または +サイズK (14-2088, default 2088): ←デフォルトのままでOKらしい
Using default value 2088

コマンド (m でヘルプ): t ←パーティションタイプを変更
領域番号 (1-4):  2 ←番号は以前と同じ
16進数コード (L コマンドでコードリスト表示): L

 0  空             1e  Hidden W95 FAT1 80  古い Minix    bf  Solaris
 1  FAT12           24  NEC DOS         81  Minix / 古い  c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 隠し C:  c7  Syrinx
 5  拡張領域    41  PPC PReP Boot   85  Linux 拡張領 da  非 FS デー
 6  FAT16           42  SFS             86  NTFS ボリュ  db  CP/M / CTOS / .
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS ボリュ  de  Dell ユーテ
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt
 9  AIX ブート   4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access
 a  OS/2 ブート  50  OnTrack DM      93  Amoeba          e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad    ee  EFI GPT
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC
11  隠し FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor
12  Compaq 診断   5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor
14  隠し FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS セカン
16  隠し FAT16    63  GNU HURD また ab  Darwin boot     fb  VMware VMFS
17  隠し HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI スワッ  fd  Linux raid 自
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  隠し Boot Wiz fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
16進数コード (L コマンドでコードリスト表示): 8e ←Linux LVMを指定する
領域のシステムタイプを 2 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): w ←書き込みして変更する。
領域テーブルは交換されました!

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

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

⇒何故か、警告がでてしまったが問題無いようであるので、この後に再起動を行うが
 その前に準備をしておく。
 ここから先は、別のLinuxで起動して作業することになるのだが、ubuntu 11.10では
 何故かうまく作業が出来なかったので、GPartedで作業を進めた。

先ずは設定のために、CentOSをシャットダウンしてVMWareを一度終了させておく。


◆GPartedのブート設定
GPartedはLiveCDのISOイメージをブートするように設定する。

しかしそのままだと仮想ディスクからブートしてしまうのでBIOSにてブートの優先順位を
仮想CD-ROMを一番上にする必要がある。
仮想マシンBIOSを起動するには、VMware構成ファイル(拡張子がvmxファイル)を編集します。
中身はテキストファイルなので、メモ帳等で開いて以下の設定を一番下の行等に追記します。

bios.forceSetupOnce = "TRUE"

次に、仮想マシン仮想マシンの設定
より画面でCD/DVDを選択します。
「デバイスのステータス」で起動時に接続にチェックを入れます。
「接続」でISOイメージファイルを使用するを選択し、参照ボタンでダウンロードした
GPartedのISOファイルを指定します。


◆仮想BIOSの設定
仮想マシンを再生します。するとBIOS画面が表示されます。
矢印ボタンでBootタグを選択し、CD-ROMを一番上に持ってきます。
”-”を押すと上に移動します。
F10 Save & Exitで設定を保存してリブートします。


◆GPartedでの作業
リブートすると、GPartedが仮想CD-ROMから起動します。
画面が表示されたらGParted Live(Default settings)でエンターキーを押下します。

次にキーマップの選択が表示されます。
タブキーで移動して「select keymap from full list」でエンターキーを押下します。

次にリストから「Japanese / PC 110 / Standard」を選択して「OK」を押下します。

次に言語設定をします。
言語設定画面が表示されるので、15を入力してエンターキーを押下します。

次に起動モードの選択を問われるので、そのままエンターキーを押下します。

暫くするとGPartedが起動します。

画面のTerminalアイコンをダブルクリックして起動させておきます。


◆ここからは、サイズの拡張設定を進めます。
PV(Physical Volume)のサイズを拡張します。
※以下作業はコピーが取れなかったので、参考URLからの写し。

# pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

次に、LV(Logical Volume)の拡張を行います。
実際どれだけ拡張すれば最大まで拡張出来るのかを知る為に一度大きめのサイズを指定して、
コマンドを実行しわざとエラーを発生させます。
なおここで指定する「ディスクグループ/ボリューム」は最初に
/etc/fstabで確認したものを指定します。

# lvextend -L+30G /dev/VolGroup00/LogVol00
  Extending logical volume LogVol00 to 19.88GB
  Insufficient free space: 160 extents needed, but only 128 available

エラーが発生すると残りの余りが表示されるので、availableと言われている数字を利用し、
サイズではなくLE単位で拡張します。

# lvextend -l+128 VolGroup00/LogVol00
  Extending logical volume LogVol00 to 18.88GB
  Logical volume LogVol00 successfully resized

次にe2fsckにてエラーチェックします。

# e2fsck -f /dev/VolGroup00/LogVol00
e2fsck 1.41.3 (12-Oct-2008)
Adding dirhash hint to filesystem.

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/VolGroup00/LogVol00: ***** FILE SYSTEM WAS MODIFIED *****
/dev/VolGroup00/LogVol00: 170410/3899392 files (1.2% non-contiguous), 1310690/38
99392 blocks

次にfilesystemのサイズ変更をして、エラーが出なければ完了です。

# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/VolGroup00/LogVol00 to 4947968 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 4947986 blocks long.

⇒再起動を行いCentOSを起動します。

◆容量の確認
再起動後に増えているか確認します。

# df -H
Filesystem             Size   Used  Avail Use% マウント位置
/dev/mapper/VolGroup00-LogVol00
                        20G   4.9G    14G  27% /
/dev/sda1              104M    20M    80M  20% /boot
tmpfs                  262M      0   262M   0% /dev/shm

#参考
LVM内のパーティションを拡張する(メモ) | DOOM! DOOMER!! DOOMEST!? LVM内のパーティションを拡張する(メモ) | DOOM! DOOMER!! DOOMEST!?