- 仮想ディスクの容量変更
- パーティションサイズの変更
試した環境
- VirtualBox 4.1.8
- ゲストOS:CentOS 6.2
- ホストOS:Windows 7, Vista
仮想ディスクの容量変更
容量増やしたい場合
作業前に念のためバックアップ(クローン)を作成しておくことを推奨します。コマンドプロンプトを起動し、VirtualBoxのインストールフォルダに移動し、以下のコマンドを実行。
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd VDIファイルパス --resize 希望サイズ(MB) 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
容量減らしたい場合(需要あるのか?)
注:これまでもそしてこれからも未検証
仮想ディスクのサイズ変更だけなら、以下の方法でいけるかもしれませんが…- 希望のサイズの空仮想ディスクを新規作成
- 既存の仮想ディスクの内容を空仮想ディスクにコピー
仮想ディスクのコピーは以下コマンドを実行。
ああでもコピー先の方が容量少ないとこの段階でエラー発生しそうだな。
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonevdi コピー元VDIファイル コピー先VDIファイル --existing※参考
パーティションサイズの変更
仮想ディスクの容量変更しても、残念ながらパーティションサイズは元のままですので、ここも変更する必要があります。普通にCentOSをインストールした場合、ルートディレクトリはLVMパーティションとして作成されるので、ここではLVMパーティションのサイズ変更手順を解説します。尚、LVMパーティションかどうかを確認するには以下コマンド。
# fdisk -l /dev/sda1 … /dev/sda2 … Linux LVM
そもそもLVMって何なのかってのは割愛。
ちなみに僕がとった流れは以下の通り。多分もっとスマートなやり方があると思うけど…
- 未割り当て領域に新規パーティション作成
- LVMパーティションに1.で割り当てたパーティションがっちゃんこしてサイズ拡大
未割り当て領域に新規パーティション作成
僕はGparted使いました。以下ページからISOファイルをダウンロード。ダウンロードしたISOファイルをIDEコントローラにマウントした状態(「設定」→「ストレージ」で「IDEコントローラ」にISOファイルを割り当て)で仮想マシン起動。
その後は以下の流れを辿って、GpartedをGUIモードで起動。
- Gparted Live (Default settings)
- 言語:「Japan」
- モード:GUI(「0」)
その後は
- ツールバーの「Apply」をクリックし、変更を適用。
- 左上の「Exit」アイコンをダブルクリックし、一旦シャットダウン。
- シャットダウンしたらGpartedのISOファイルの割り当て解除し、仮想マシンを再度起動。
# fdisk -l /dev/sda1 … /dev/sda2 … Linux LVM /dev/sda3 … Linux
LVMパーティションに新規作成したパーティションがっちゃんこしてサイズ拡大
まずは新規パーティションをPVとして作成。# pvcreate /dev/sda3 … Physical volume "/dev/sda3" successfully created # pvdisplay ←PVの情報を表示
次に新規PVをVGへ登録。vgdisplayでVGの名前を確認し、vgextendでその名前を指定する。vgextendが成功したら、vgdisplayでVGサイズを確認してみてください。増えてればOKです。
またこの時、「Free PE / Size」の右側をメモしておいてください。
# vgdisplay --- Volume group --- VG Name vg_virtualbox … # vgextend vg_virtualbox /dev/sda3 Volume group "vg_virtualbox" successfully extended # vgdisplay --- Volume group --- … VG Size 9.50 GiB … Free PE / Size 511 / 2.00 GiB
最後に、LVのサイズを拡大。
「lvextend -L [拡大サイズ] [LV名]」と打ち込みます。サイズには前述の「Free PE / Size」の右側の数字の値を、LV名はlvdisplayで表示される「LV Name」を指定。
# lvextend -L +2G /dev/vg_virtualbox/lv_root Logical volume lv_root successfully resized # resize2fs /dev/vg_virtualbox/lv_root
すべてが完了したら、lvdisplayやdfでサイズを確認してみてください。
※参考
VirtualBoxのディスク容量で困っているところでした。
返信削除非常に助かりました。
ありがとうございました。
Re: Hiroyuki Kobayashi さん
返信削除どうもです。
Chefとか使ってInfrastructure as codeしてて、かつデータストア乗ってなければ、
Immutable Infrastructure だーっつって新規VMさくっと作って古いの廃棄って方が手っ取り早い&すっきり綺麗でしょうけど、
そもそもディスクサイズが足りなくなるのは得てしてデータの増大ってな訳で…