今回の方法は、新たなディスクを追加し、そのディスクをLVMに組み込むことで、ゲストOSのディスクサイズを増やす方法だ。
前回の『VMwareのゲストOS(CentOS6.4)のディスク容量を増やす方法』では、既存のディスクの割り当て容量をVMwareのディスク設定で増やし、パーティションを作成するため、Linuxのパーティション数制限(4パーティション)に引っかかってしまうというデメリットがあったが、今回の方法であれば、そのデメリットも解消される。
今回、CentOS6.4でディスクサイズを20GBから40GBまで増やした。


概要

手順は以下の通り。
1.VMwareの仮想ディスクを追加
2.ゲストOSのパーティションの作成
3.LVMで使用するためにパーティションを初期化
4.LVMのボリュームグループにパーティションを追加
5.LVMのサイズを拡張
6.ファイルシステムのリサイズ

図1:ディスク拡張の概要

図1:ディスク拡張の概要

ディスクを追加して、ディスクをまたいで最後に中身を拡げるイメージだ。

現状の確認

現在のパーティションを確認する。

 

# fdisk -l

ディスク /dev/sda: 21.5 GB, 21474836480 バイト
ヘッド 64, セクタ 32, シリンダ 20480
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00068a85

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

ディスク /dev/mapper/VolGroup-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/VolGroup-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

/dev/sdaを使っていて、/dev/sda2まで使用していることがわかる。

VMwareの仮想ディスクを追加する

vSphere Clientからディスクを拡張したいサーバを選択し、『サマリ』タブを開く。
『設定の編集』(①)をクリック。
『仮想マシンのプロパティ』ウィンドウが開くので、『追加』ボタン(②)をクリック。
『ハードウェアの追加』ウィンドウが開くので、
『追加したいハードウェア』として『ハードディスク』(③)を選択し、『次へ』ボタン(④)をクリック。

図2:仮想ディスクの追加(1)

図2:仮想ディスクの追加(1)

『新規仮想ディスクを作成』(⑤)を選択し、『次へ』ボタン(⑥)をクリック。

図3:仮想ディスクの追加(2)

図3:仮想ディスクの追加(2)

・容量で『ディスクサイズ』(⑦)を設定(図では、20GB)。
・ディスクプロビジョニングで『領域をオンデマンドで割り当ておよびコミット(シンプロビジョニング)』(⑧)を選択。
・場所で『データストアの指定』(⑨)を選択し、『参照』ボタン(⑩)をクリックし、データストアを選択。
・『次へ』ボタン(⑪)をクリック。

図4:仮想ディスクの追加(3)

図4:仮想ディスクの追加(3)

特に何もせず、『次へ』ボタン(⑫)をクリック。

図5:仮想ディスクの追加(4)

図5:仮想ディスクの追加(4)

オプションで設定内容を確認し、『終了』ボタン(⑬)をクリック。

図6:仮想ディスクの追加(5)

図6:仮想ディスクの追加(5)

ハードディスクが追加されたこと(⑭)を確認し、『OK』ボタン(⑮)をクリックする。

図7:仮想ディスクの追加(6)

図7:仮想ディスクの追加(6)

追加処理が終了すれば、ハードディスク2(⑯)が追加されていることがわかる。

図8:仮想ディスクの追加(7)

図8:仮想ディスクの追加(7)

ゲストOSのパーティションの作成

ディスク追加後のパーティションを確認する。

 

# fdisk -l

ディスク /dev/sda: 21.5 GB, 21474836480 バイト
ヘッド 64, セクタ 32, シリンダ 20480
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00068a85

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

ディスク /dev/mapper/VolGroup-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/VolGroup-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


ディスク /dev/sdb: 21.5 GB, 21474836480 バイト
ヘッド 64, セクタ 32, シリンダ 20480
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

新たに/dev/sdbが追加されていることがわかる。
この/dev/sdbに/dev/sdb1を作成する。
ポイントは、セクタ数 の表示をユニットに変更し、最初のセクタを 2048に設定することだ。

 

# fdisk /dev/sdb

デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルをディスク識別子 0xa9edf73d で作成します。
あなたが書き込みを決定するまで、変更はメモリ内だけに残します。
その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

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

コマンド (m でヘルプ): u
セクタ数 の表示/項目ユニットを変更します

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

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

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

ディスク /dev/sdb: 21.5 GB, 21474836480 バイト
ヘッド 64, セクタ 32, シリンダ 20480, 合計 41943040 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xa9edf73d

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1            2048    41943039    20970496   8e  Linux LVM

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

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

LVMで使用するためにパーティションを初期化

 

# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

LVMのボリュームグループにパーティションを追加

LVMのボリュームグループ(VG Name)を確認する。

 

# vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19.51 GiB
  PE Size               4.00 MiB
  Total PE              4994
  Alloc PE / Size       4994 / 19.51 GiB
  Free  PE / Size       0 / 0
  VG UUID               VBvIMW-wvWR-sBdz-siOm-YEZJ-Lwjj-kxqv7x

上記の例では、LVMのボリュームグループ(VG Name)はVolGroupなので、VolGroupにさっき作成した/dev/sdb1を追加する。

 

# vgextend VolGroup /dev/sdb1
  Volume group "VolGroup" successfully extended

LVMのサイズを拡張

パーティション追加後のLVMのボリュームグループの状態を確認する。

 

# vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  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               39.50 GiB
  PE Size               4.00 MiB
  Total PE              10113
  Alloc PE / Size       4994 / 19.51 GiB
  Free  PE / Size       5119 / 20.00 GiB
  VG UUID               VBvIMW-wvWR-sBdz-siOm-YEZJ-Lwjj-kxqv7x

Free PE の値が追加可能なサイズとなる。
今回は上記のボリュームをrootパーティションに全て追加する。

 

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root       ←rootパーティションのデバイスを確認
                       16G  754M   14G   6% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot

# lvextend -l +5119 /dev/mapper/VolGroup-lv_root   ←rootパーティションを拡張
  Extending logical volume lv_root to 35.57 GiB
  Logical volume lv_root successfully resized

ファイルシステムのリサイズ

最後にファイルシステムの拡張を行う。

 

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

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
                       36G  762M   33G   3% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot


Categories: CentOS ,VMWare


Leave a Reply