VM のディスク容量を拡張(LVMあり)
◆ VM の HDD のサイズを増やします
◆ LVM の pv と lv のサイズも増やします
◆ VDI (仮想HDD) リサイズ・パーテーションリサイズ・(pv リサイズ)・lv リサイズ・ファイルシステムリサイズ
◆ LVM の pv と lv のサイズも増やします
◆ VDI (仮想HDD) リサイズ・パーテーションリサイズ・(pv リサイズ)・lv リサイズ・ファイルシステムリサイズ
VM のHDD容量を増やそうと思います
環境は VirtualBox で VM の OS は Linux です
割り当てた分は別の HDD としてマウントするのじゃなく LVM ですでにマウントされてると領域を大きくします
この 2 つ以外を使っていたらまず VDI 形式に変換(コピー)しないとダメです
○ VDI: VirtualBox 用の形式。これだから特別に早いってほどでもないらしい
○ VMDK: VMware で使われてる形式。VBox でも完全サポートらしい
○ VHD: Microsoft が使ってる形式。 VBox でも完全サポートらしい
○ HDD: 古いバージョン(2)はサポートしてるけど新しい 3 や 4 は未対応らしい
でも 新しいバージョンを 2 に変換すれば使えるとか。macで使われてるらしい
○ QED: ↓より早いものらしい
○ QCOW: コピーオンライトを使ってるらしい
変換は VirtualBox で ファイル>仮想メディアマネージャー から ハードディスクを選択して「コピー」からできます
とりあえず VDI のハードディスクだとします
仮想ハードディスクのリサイズは GUI じゃできないようなので
vboxmanage と vm.vdi のパスは適切なのに置き換えないとダメです
普通にインストールしてると vboxmanage は "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" にいるはず
resize の後の 65536 が変更後のサイズですが 単位は MiB なのでこの例では 64GiB です
これでハードディスクのサイズが増えたわけです
ハード的な部分が終わって 次はソフト的なところなので VM での操作になります
確認できたらそのまま 未割り当ての分を LVM のパーテーションへ拡張します
単純に 別のパーテーション作ってマウントしたいならそれでOKですし その場合は あとはフォーマットしてマウントだけなので これ以降はしなくて済みます
↑のイメージです
複数の HDD のパーテーションをまとめて その中で複数に分割したものを パーテーションのように扱える仕組みです
1 つの HDD の最大サイズを超えたサイズでも仮想的にパーテーションとして扱えるところがいいところですね
普通は HDD が 1 つで使うことが多いのであまりメリットはないし pv と vg で違いがよくわからない 同じようなの 2 つもいるの? と思うかもしれませんが 上の図だと分かりやすいと思います
pv は物理ボリュームというもので HDD のパーテーションです
/dev/sda2 とかそういうのです
vg はボリュームグループのというもので pv を vg に所属させます
デフォルトの設定でインストールすると pv が 1 つで vg も 1 つで同じだと思いがちですが vg は複数の pv をまとめることができます
lv は論理ボリュームというもので vg を切り出したものです
vg を 1 つの HDD と考えて パーテーション を区切ると考えるとわかりやすいです
というコマンドでそれぞれのステータスを確認できます
parted か gparted でパーテーションを広げたので pv のサイズはすでに大きくなっています
vg は pv をまとめただけなので vg のサイズも大きくなっています
なので lv だけを広げればおっけいです
LVM のサイズを変更する gparted みたいな GUI ソフトに system-config-lvm というのがあるようですが 古い OS でしか使えないみたいで 最近の fedora などでは使えないです
ということでコマンドで変更します
リサイズした後はファイルシステムの方もリサイズしないと使えるサイズは増えません
サイトによっては resize2fs じゃなくて ext2online と書かれてるところもありましたがこれは古いやつらしいので resize2fs にします
たぶん最近のだと こっちしかインストールされてないと思います
df コマンドでみてみると空き容量が増えてると思います
ところで VM の手順は LiveCD 使う必要なくて 起動中に / をマウントしたパーテーションの拡張をしても問題なかったです
縮小じゃなくて拡張なので途中でどこにデータが書き込まれても困らないからだと思います
ファイルシステムのサイズを縮小するときはマウント解除した状態でやらないといけないと思います
/ などマウント解除できないなら LiveCD 使ったりデュアルブートで別OSからやります
e2fsck (ファイルシステム縮小のための準備)
↓
resize2fs (ファイルシステム縮小)
↓
lvreduce (lv 縮小)
↓
pvresize (pv 縮小)
↓
vboxmanage (VDI 縮小)
という流れになります
環境は VirtualBox で VM の OS は Linux です
割り当てた分は別の HDD としてマウントするのじゃなく LVM ですでにマウントされてると領域を大きくします
VM の HDD サイズを増やす
VirtualBoxでは使える HDD の種類がいっぱいありますが 最初に決めたサイズから変更できるのは VDI とVHD の 2 つだけみたいですこの 2 つ以外を使っていたらまず VDI 形式に変換(コピー)しないとダメです
○ VDI: VirtualBox 用の形式。これだから特別に早いってほどでもないらしい
○ VMDK: VMware で使われてる形式。VBox でも完全サポートらしい
○ VHD: Microsoft が使ってる形式。 VBox でも完全サポートらしい
○ HDD: 古いバージョン(2)はサポートしてるけど新しい 3 や 4 は未対応らしい
でも 新しいバージョンを 2 に変換すれば使えるとか。macで使われてるらしい
○ QED: ↓より早いものらしい
○ QCOW: コピーオンライトを使ってるらしい
変換は VirtualBox で ファイル>仮想メディアマネージャー から ハードディスクを選択して「コピー」からできます
とりあえず VDI のハードディスクだとします
仮想ハードディスクのリサイズは GUI じゃできないようなので
vboxmanage modifyhd --resize 65536 vm.vdi
とコマンドをコマンドプロンプトで入力しますvboxmanage と vm.vdi のパスは適切なのに置き換えないとダメです
普通にインストールしてると vboxmanage は "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" にいるはず
resize の後の 65536 が変更後のサイズですが 単位は MiB なのでこの例では 64GiB です
これでハードディスクのサイズが増えたわけです
ハード的な部分が終わって 次はソフト的なところなので VM での操作になります
パーテーションサイズを変更する
VMを立ち上げたら parted や gparted を使って HDD に未割り当て領域が増えてることを確認します確認できたらそのまま 未割り当ての分を LVM のパーテーションへ拡張します
単純に 別のパーテーション作ってマウントしたいならそれでOKですし その場合は あとはフォーマットしてマウントだけなので これ以降はしなくて済みます
LVM のリサイズ
HDD のパーテーションとしては 全部割り当て済みですが df コマンドで見てもわかるようにサイズは増えてませんLVM
LVM が何するものでどうなっているのかは最初に使い始めた頃はよくわからなかったのですが もう一度調べてみると 意外とわかりやすいものだったので簡単に説明しておきます↑のイメージです
複数の HDD のパーテーションをまとめて その中で複数に分割したものを パーテーションのように扱える仕組みです
1 つの HDD の最大サイズを超えたサイズでも仮想的にパーテーションとして扱えるところがいいところですね
普通は HDD が 1 つで使うことが多いのであまりメリットはないし pv と vg で違いがよくわからない 同じようなの 2 つもいるの? と思うかもしれませんが 上の図だと分かりやすいと思います
pv は物理ボリュームというもので HDD のパーテーションです
/dev/sda2 とかそういうのです
vg はボリュームグループのというもので pv を vg に所属させます
デフォルトの設定でインストールすると pv が 1 つで vg も 1 つで同じだと思いがちですが vg は複数の pv をまとめることができます
lv は論理ボリュームというもので vg を切り出したものです
vg を 1 つの HDD と考えて パーテーション を区切ると考えるとわかりやすいです
pvscan
vgscan
lvscan
pvdisplay
vgdisplay
lvdisplay
vgscan
lvscan
pvdisplay
vgdisplay
lvdisplay
というコマンドでそれぞれのステータスを確認できます
サイズ変更
LVM の仕組みがわかったところでサイズの変更に入りますparted か gparted でパーテーションを広げたので pv のサイズはすでに大きくなっています
vg は pv をまとめただけなので vg のサイズも大きくなっています
なので lv だけを広げればおっけいです
LVM のサイズを変更する gparted みたいな GUI ソフトに system-config-lvm というのがあるようですが 古い OS でしか使えないみたいで 最近の fedora などでは使えないです
ということでコマンドで変更します
lvresize --size +25G /dev/mapper/fedora-root
--size のオプションに + や - があると相対値で指定できますリサイズした後はファイルシステムの方もリサイズしないと使えるサイズは増えません
resize2fs /dev/mapper/fedora-root
ファイルシステムをリサイズしたいパーテーションを指定すれば自動で最大まで広げてくれますサイトによっては resize2fs じゃなくて ext2online と書かれてるところもありましたがこれは古いやつらしいので resize2fs にします
たぶん最近のだと こっちしかインストールされてないと思います
最近の fedora だと ファイルシステムが XFS になっていることもあります
XFS だと resize2fs がエラーになるので 代わりに xfs_growfs コマンドを使います
XFS だと resize2fs がエラーになるので 代わりに xfs_growfs コマンドを使います
完了
これで完成ですdf コマンドでみてみると空き容量が増えてると思います
ところで VM の手順は LiveCD 使う必要なくて 起動中に / をマウントしたパーテーションの拡張をしても問題なかったです
縮小じゃなくて拡張なので途中でどこにデータが書き込まれても困らないからだと思います
縮小したいとき
逆にサイズを小さくしたいときは 逆の順番ですればいいですファイルシステムのサイズを縮小するときはマウント解除した状態でやらないといけないと思います
/ などマウント解除できないなら LiveCD 使ったりデュアルブートで別OSからやります
e2fsck (ファイルシステム縮小のための準備)
↓
resize2fs (ファイルシステム縮小)
↓
lvreduce (lv 縮小)
↓
pvresize (pv 縮小)
↓
vboxmanage (VDI 縮小)
という流れになります