作業ノート

様々なまとめ、雑感など

VirtualBoxのゲストOSのディスク容量を増やす

VirtualBoxの環境下でゲストOSのハードディスク容量を増やす必要があり、その方法をまとめた。 容量を8GBから16GBに増やす。

環境

ホストOSはMac OS X Yosemite 10.10.3で、VirtualBoxのバージョンは4.3.26。ゲストOSの仮想ディスクはVDIで可変ディスク。

ゲストOSはCentOS6.6 の64bit版。

# cat /etc/redhat-release
CentOS release 6.6 (Final)

# uname -ar
Linux localhost.localdomain 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      6.5G  608M  5.6G  10% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             477M   25M  427M   6% /boot

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

まずは、VirtualBoxの仮想ディスクの容量を増やす。ゲストOSをシャットダウンした状態ですすめる。

ゲストOSのあるディレクトリに移動する。

cd ~/misc/VirtualBoxVMs/centos66

このときの状態は以下。

$ VBoxManage showhdinfo centos66.vdi
UUID:           ec7752fe-6876-4fe6-a5e1-b0985ce53338
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /Users/te2u/misc/VirtualBoxVMs/centos66/centos66.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       8192 MBytes
Size on disk:   1755 MBytes
In use by VMs:  centos66 (UUID: 7b498c14-7c69-4e31-bc65-bde3f1b31da0)

VBoxManageコマンドを使い容量を増やす。

$ VBoxManage modifyhd centos66.vdi --resize 16384
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

ディスク全体の容量をMBで指定する。(16 GB * 1024 MB = 16384 MB)

変更後の容量は以下になる。

$ VBoxManage showhdinfo centos66.vdi
UUID:           ec7752fe-6876-4fe6-a5e1-b0985ce53338
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /Users/te2u/misc/VirtualBoxVMs/centos66/centos66.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       16384 MBytes
Size on disk:   1755 MBytes
In use by VMs:  centos66 (UUID: 7b498c14-7c69-4e31-bc65-bde3f1b31da0)

容量が増えていることを確認したら、ゲストOSを起動する。

ゲストOSのディスク容量を増やす

仮想ディスクの容量を増やしたことで、ゲストOSの/dev/sdaの容量が増える。

# fdisk -l

ディスク /dev/sda: 17.2 GB, 17179869184 バイト
ヘッド 255, セクタ 63, シリンダ 2088
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00010ab2

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

ディスク /dev/mapper/VolGroup-lv_root: 7205 MB, 7205814272 バイト
ヘッド 255, セクタ 63, シリンダ 876
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000


ディスク /dev/mapper/VolGroup-lv_swap: 855 MB, 855638016 バイト
ヘッド 255, セクタ 63, シリンダ 104
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

この増えた分で新たなパーティションを作り、論理ボリュームに割り当てることで容量を増やす。

パーティションの追加

基本パーティションを追加する。

# fdisk /dev/sda

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

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

シリンダの指定は初期設定のままにし、全てを割り当てる。割り当て後のパーティションは以下になる。

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

ディスク /dev/sda: 17.2 GB, 17179869184 バイト
ヘッド 255, セクタ 63, シリンダ 2088
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00010ab2

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

次に、システムタイプを Linux LVM に変更する。

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

変更後は以下になる。

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

ディスク /dev/sda: 17.2 GB, 17179869184 バイト
ヘッド 255, セクタ 63, シリンダ 2088
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00010ab2

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

最後にこれまでの設定を反映して終了する。

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

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

警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。

fdiskコマンド終了後、再起動する。

$ shutdown -r now

Physical Volumeを作成する

作成したパーティションのPhysical Volumeを作成する。

作成前のPhysical Volumeは一つのみ。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               7.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1922
  Free PE               0
  Allocated PE          1922
  PV UUID               LFLXxR-2OME-gshx-KcVm-Z3pR-ltUG-rMsms8

pvcreateコマンドでPhysical Volumeを作成する。

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

追加されたPhysical Volumeは、Volume Groupが未指定の状態で作成される。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               7.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1922
  Free PE               0
  Allocated PE          1922
  PV UUID               LFLXxR-2OME-gshx-KcVm-Z3pR-ltUG-rMsms8

  "/dev/sda3" is a new physical volume of "7.99 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name
  PV Size               7.99 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               3wQR2H-Kqt8-NqIJ-xKm2-45wP-toJy-ISwiT1

Volume GroupにPhysical Volumeを追加する

先ほど作成したPhysical Volumeを、Volume Groupに追加する。

vgdisplayコマンドでGroupを確認する。

# 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               7.51 GiB
  PE Size               4.00 MiB
  Total PE              1922
  Alloc PE / Size       1922 / 7.51 GiB
  Free  PE / Size       0 / 0
  VG UUID               8Ahbmm-Z3FT-nl1k-6lnR-lV1T-KYD4-zA24lQ

vgextendコマンドでVolGroupにPhysical Volumeを追加する。

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

Physical Volumeを追加することで、Volume Groupで使用できる容量が増える。(Free PE / Sizeの部分)

# 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               15.50 GiB
  PE Size               4.00 MiB
  Total PE              3968
  Alloc PE / Size       1922 / 7.51 GiB
  Free  PE / Size       2046 / 7.99 GiB
  VG UUID               8Ahbmm-Z3FT-nl1k-6lnR-lV1T-KYD4-zA24lQ

Logical Volumeの容量を増やす

増やしたいマウントポイントのLogical Volumeをdfコマンドで確認する。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      6.5G  759M  5.5G  13% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             477M   48M  405M  11% /boot

lvdisplayコマンドでLogical Volumeの詳細を確認する。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                BTzWJS-s3At-lrdL-Mwuj-eKZl-EQEa-IkBWNj
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-04-19 23:48:23 +0900
  LV Status              available
  # open                 1
  LV Size                6.71 GiB
  Current LE             1718
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_swap
  LV Name                lv_swap
  VG Name                VolGroup
  LV UUID                wQxJ4j-dp0n-HOyu-Uc2M-RCzn-h71g-7k0vUJ
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-04-19 23:48:24 +0900
  LV Status              available
  # open                 1
  LV Size                816.00 MiB
  Current LE             204
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

lvextendコマンドでLogical Volumeのサイズを拡張する。

# lvextend -L +8184 /dev/VolGroup/lv_root
  Size of logical volume VolGroup/lv_root changed from 6.71 GiB (1718 extents) to 14.70 GiB (3764 extents).
  Logical volume lv_root successfully resized

Lオプションで指定する追加サイズ(+8184)は、vgdisplayで表示されたFree PE / SizePE Sizeをかけた値になる(2046 * 4.00 = 8184)。

これでLogical Volumeのサイズが変更される。

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                BTzWJS-s3At-lrdL-Mwuj-eKZl-EQEa-IkBWNj
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-04-19 23:48:23 +0900
  LV Status              available
  # open                 1
  LV Size                14.70 GiB
  Current LE             3764
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_swap
  LV Name                lv_swap
  VG Name                VolGroup
  LV UUID                wQxJ4j-dp0n-HOyu-Uc2M-RCzn-h71g-7k0vUJ
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2015-04-19 23:48:24 +0900
  LV Status              available
  # open                 1
  LV Size                816.00 MiB
  Current LE             204
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

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

最後にresize2fsコマンドを使って、増やしたサイズをファイルシステムに反映する。

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

これで、ゲストOSで使用できるディスク容量が増える。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       15G  761M   13G   6% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             477M   48M  405M  11% /boot

参考