Oracle VM VirtualBoxにCentOS(64bit)を入れて弄ってたりするが、何となくディスク容量を増やしたくなった。適当にインストールしたときに64GBだったので、500GBくらいに変更する。
現在の環境は
Oracle VM VirtualBoxのバージョン:4.1.22
ゲストOS:CentOS6.2(64bit) - kernel:2.6.32-220.el6.x86_64
ホストOS:Windows7Ultimate(64bit)
仮想メディア名:centos6.2
VirtualDiskは可変サイズ(dynamically allocated)にしてある。
■1.VirtualDiskのサイズ変更
最初に仮想メディア(ここではcentos6.2のこと。以下記述略)の入っているVirtualDiskの最大容量を増やす。増やすにはVirtualBoxのVBoxManage.exeを使用。念の為、実行前にVirtualDiskのバックアップ(またはコピー)しておく。
(1) ホストOSでコマンドプロンプトを開く(管理者として実行で開かなくても良い)。
(2) VBoxManage.exeのあるフォルダまで移動。
>cd C:\Program Files\Oracle\VirtualBox
(3) VBoxManage.exeでVirtualDiskのサイズ変更を2回行う。
>VBoxManage.exe modifyhd "C:\Users\(VirtualBoxインストール時のユーザ名)\VirtualBox VMs\centos6.2\centos6.2.vdi" --resize 102400
>VBoxManage.exe modifyhd "C:\Users\(VirtualBoxインストール時のユーザ名)\VirtualBox VMs\centos6.2\centos6.2.vdi" --resize 512000
ダブルクォーテーションで括っている箇所は、サイズ変更したいVirtualDiskファイル名を絶対パスで記述。数値はMB単位。最初は102400(100GB)でresizeする。いきなり512000(500G)でresizeを行うと何故か/bootの入ってるファイルシステムが壊れるという現象が起きる為(この罠に悩む。自分の環境だけだろうか?)。
■2.GPartedのダウンロード
ホストOS側でGPartedというパーティション作成ソフトをダウンロードする。
場所:http://gparted.sourceforge.net/download.php
メディア:gparted-live-0.14.1-1.iso (2012/12/20現在)
■3.GPartedで新規パーティション作成
(1) Oracle VM VirtualBoxを起動。
(2) centos6.2の設定ダイアログを開き、ストレージを選択。
(3) 2.でダウンロードしたGPartedをIDEコントローラにセットする。
(4) centos6.2を起動する。
(5) GPartedが起動する。メニュー画面で「GParted Live (Default settings) 」を選択。
(6) 「Configuring console-data」では「Dont't touch keymap」を選択。
(7) 「Which language do you prefer?」では「15」(Japan)を選択。
(8) 「Which mode do you prefer?」では「0」(Continue to Start X)を選択。
(9) GUIで表示される。
(10) 「未割り当て」になっている箇所にカーソルを当てて右クリックし、「New」を選択。
(11) 「新規パーティションの作成画面」ダイアログが開くので、「File System」で「ext4」を選択し、「Add」を押す。
(12) ダイアログが閉じたら、ツールバーの「Apply」ボタンを押し、確認ダイアログが出たら「Apply」を押す。
(13) 操作が完了したら「Close」ボタンを押し、「未割り当て」のパーティション名を確認しておく(/dev/sda3のはず)。
(14) centos6.2の画面を閉じる(ログオフする)。
(15) VirtualBoxの設定ダイアログを開き、IDEコントローラからGPartedを抜き出す(空にする)。
ちなみにGPartedを使わなくてもCentOSのfdiskコマンドでもパーティション作成は行える。
■4.CentOSへの認識
新規パーティションをCentOSで認識させる。3.からの続き。
(1) centos6.2を起動する。
(2) rootでログインしておく。
(3) 端末を開き、pvcreateコマンドで新規パーティションを物理ボリュームとして認識させる。
#pvcreate /dev/sda3
(注意:/dev/sda3は3.の(13)で確認した名称)
(4) vgdisplayコマンドで、現在使用されてるボリュームグループを確認。
#vgdisplay
--- Volume group ---
VG Name vg_centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
(以下略)
VG Name:vg_centos であることを確認。
(5) 新規パーティションを(4)で確認したボリュームグループに追加
#vgextend vg_centos /dev/sda3
(6) lvdisplay、dfコマンドで論理ボリュームとそのマウント先を確認する。
#lvdisplay
--- Logical volume ---
LV Name /dev/vg_centos/lv_root
VG Name vg_centos
(以下略)
--- Logical volume ---
LV Name /dev/vg_centos/lv_home
VG Name vg_centos
(以下略)
--- Logical volume ---
LV Name /dev/vg_centos/lv_swap
VG Name vg_centos
(以下略)
#df -H
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_centos-lv_root
32G 6.8G 24G 23% /
tmpfs 2.1G 642M 1.4G 32% /dev/shm
/dev/sda1 508M 39M 444M 8% /boot
/dev/mapper/vg_centos-lv_home
29G 1.3G 27G 5% /home
論理ボリューム: /dev/vg_centos/lv_home は、/homeをマウント先としているので、この論理ボリュームの容量をひとまず増やしてみる。
(7) lvextendコマンドで論理ボリュームの容量を増やす。 。
#lvextend -L +435Gb /dev/vg_centos/lv_home
500GB-64GB(元のサイズ)=436(GB)だが、容量が大きいとエラーが出るので、1GB減らして追加
#lvextend -l +100%FREE /dev/vg_centos/lv_home
-l +100%FREEオプションでFreePEが0%になるまですべて割り当ててくれる。
(8) resize2fsコマンドでファイルシステムサイズを拡張させる。
#resize2fs /dev/vg_centos/lv_home
(9) 再度dfコマンドを実行して、容量が増えたか確認
#df -H
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/vg_centos-lv_root
32G 6.8G 24G 23% /
tmpfs 2.1G 641M 1.4G 32% /dev/shm
/dev/sda1 508M 39M 444M 8% /boot
/dev/mapper/vg_centos-lv_home
489G 1.3G 463G 1% /home
1.の(3)に気をつければ問題無さそう。ちなみに1.の(3)で壊れた/bootの復元方法が未だ良くわからず…。
Ubuntu Server 12.04(ゲスト)を使っていますが、こちらの方法で可変VDIを拡張できました。たいへん助かりました。
1.の(3)がポイントでした。
VBoxManage.exeのmodifyhdを使う前と後でGPartedを起動して、どうもmodifyhdでファイルシステムが壊れるようだ、ということで「vdi modifyhd 壊れる」で検索してきました。
元の可変VDIが32GBで、いきなり500GBにリサイズしていました。
100GBへのリサイズを挟んで、500GBにリサイズすればいいようですが、(うっかり)100GBにリサイズしただけで最後まで進んでみて、df -hでsizeが100GBになったのを確認できました。
これから500GBにリサイズしてみますが、きっとうまくいくでしょう。
こんばんは。
あまり深くは調べていないので、100GBを経由したらうまく認識したという感じです。
幾ばかりかお役に立ててよかったです。