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 / Size
とPE 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