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の復元方法が未だ良くわからず…。
今頃Windows7のPCを購入し、Windows7の売りの1つあるXPモードをOracle VM VirtualBoxで使用しているが、何となくバックアップを取ってみたくなった。
ちなみにVirtualBoxでXPモードを使用する方法についてはhttp://yakushima-tonbo.com/windows/VMLite_XP_Mode/を参考。現在のOracle VM VirtualBoxのバージョンは4.1.22、バックアップ元の仮想メディア名称は「VMLite XP Mode」にしている。
■1.仮想メディアのバックアップ
(1) Oracle VM VirtualBoxを起動。
(2) メニューバー「ファイル」→「仮想メディアマネージャ」を開き、VMLite XP Mode.vhdを選択し(自分のとこは仮想メディア名がVMLite XP Modeという名なので。以後記述略)、「Copy」をクリック。
(3) 「Welcome to the virtual disk copying wizard」で、VirtualDiskをバックアップ元のVMLite XP Mode.vhdにする。
(4) 「Virtual disk file type」で、バックアップ時のVirtualDiskのタイプを選択(折角なのでVirtualBox用のVDIを選択)。
(5) 「Virtual dist storage details」で、バックアップ時のVirtualDiskのストレージタイプを選択(自分はサイズ可変のdynamically allocatedを選択)。
(6) 「Virtual disk file location」で、バックアップ時のVirtualDiskの仮想メディア名(ファイル名)を指定。
(7) 「概要」でCopyボタンを押す。
無事終了すると、C:\Users\(VMLiteをインストールしたユーザ名)\.VirtualBox\VMLite XP Mode 直下に(6)で指定した名称のバックアップが生成される。
次にバックアップを使用する方法。2-1.または2-2.の方法がある。
■2-1.新規仮想メディアを作成してバックアップを起動
(1) Oracle VM VitualBoxを閉じる。
(2) C:\Users\(VMLiteをインストールしたユーザ名)\.VirtualBox 直下にある「VirtualBox.xml」と「VirtualBox.xml-prev」をテキストエディターで開く。
(3) 双方のファイルの<ExtraData>~</ExtraData>タブ間の最終行に、以下を追加する。
<ExtraDataItem name="VBoxInternal/Devices/pcbios/0/Config/BiosRom" value="C:\Program Files\VMLite\VMLite Workstation\pcbios.bin"/>
注意:value値はVMLiteをインストールした箇所のpcbios.binを指す。
(4) Oracle VM VirtualBoxを再起動(変更したVirtualBox.xmlを有効にするため)。
(5) 新規ボタンを押す。
(6) 「仮想マシンとOSタイプ」で、適切な名前を入力し、OS:Microsoft Windows バージョン:Windows XPにする。
(7) 「メモリ」で自分の好きなメモリ容量を設定。
(8) 「仮想ハードディスク」で、「既存のハードディスクを使用」を選び、フォルダのアイコンボタンをクリックしてバックアップしたVirtualDiskファイルを選択する。
(9) 「概要」で、Createボタンを押す。
(10) 作成した仮想メディアを起動。
大事なのは、バックアップを起動したときに新しくXPのアクティベート申請が発生してしまうので、その申請を回避する為に(3)の作業が必要になる。
■2-2.ストレージを差し替えしてバックアップを起動
(1) Oracle VM VirtualBoxを起動。
(2) VMLite XP Modeを選択し、「設定」ボタンを押す。
(3) 「ストレージ」を選択し、IDE ControllerのIDEプライマリーマスターをVMLite XP Mode.vhdからバックアップしたVirutalDiskファイルに差し替える。(属性のところにあるハードディスクアイコンを押すと「仮想ハードディスクファイルの選択」が出るので、そこで切り替えが可能)
(4) OKボタンを押したら、メニューバー「ファイル」→「仮想メディアマネージャ」を開く。
(5) VMLite XP Mode.vhdを選択し、「除去」ボタンを押す。
(6) 最初の質問には「除去」、次の質問には「保持」を選択しClose。
(7) VMLite XP Mode仮想メディアを選択し、起動。
2-2.の場合アクティベートを考慮する必要はない(バックアップ元にあるxmlにアクティベートの記述があり、差し替えの場合はそのxmlを使いまわしているので)。ただし、(5)のバックアップ元のディスクの除去を必ず行う。行わないとVirtualBox.xmlの
個人的にはバックアップがVDIに変換出来るのが良いかも。ちなみにライセンスが必要なソフトについてはバックアップ環境でも普通に使えている(ライセンス系は某ウィルス対策ソフトしかインストールしてないけど…)。
補足:2014/05/17
VirtualBox 4.3.10に更新すると、2-1.の<Extra…>の記述がある場合、SATAコントロールが認識されなくなるっぽい…。XPMode未使用時はコメントしてかないとダメみたい。今更なネタですが。
補足2:2017/05/24
VirtualBox 4.3.10でSATAコントロールが認識される状態で、さらに2-1.の方法で起動する方法。
まずSATAコントロールが認識されるように、2-1.(2)(3)で<Extra…>の記述を消去してから以下を行います。
(1) コマンドプロンプトを「管理者権限で実行」で開く。
(2) 以下を実行する。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "※1" VBoxInternal/Devices/pcbios/0/Config/BiosRom "C:\Program Files\VMLite\VMLite Workstation\pcbios.bin"
※1:2-1.の(6)で入力した適切な名前(Oracle VM VirtualBoxマネージャーの左側に表示される自分で入力したOSの文言のこと)
※2:空白が入るのでダブルクオート付きでそのまま実行します。
(3) VirtualBoxを起動して2-1.で(6)で入力したOSの文言をダブルクリックして起動。
ちなみにVirtualBox最新バージョン5.1.22で上記のコマンドを実行すると、何故かVirtualBoxが起動しなくなるのでご注意ください。