仮想マシンとLinuxのディスクの拡張方法
1. はじめに
個人で使う分だとあまりディスクの拡張って意識しなくて、消して作り直すで十分だったりするんですが、時々環境消さずにディスク容量増やしたいなといったことがあるのでまとめておく
例によって忘れん坊なのでw
また、正直VMのGUIをうまく使えないんですよね…w
使えないというか、項目を見つけられなかったりするので…
よって、基本コマンドでやります
2. VirtualBox
2-1. 固定ディスクの場合
固定ディスクの場合は一旦可変ディスクに変更して領域を拡張したのち、再度固定ディスクに戻すといったことをしないといけない
可変ディスクを使っている場合はこの項目は飛ばして構いませんが、クローンを作成しておきたいなどの場合は作成するのもありかと
まず、元のディスクのクローンを作成
$ vboxmanage clonemedium --format {フォーマット} {対象ディスク} {変換後ディスク} [--variant Standard]
--variant Standard
は、デフォルトでStandard(可変ディスク)なので、指定しなくてもよい
以下、フォーマットがVDIで元の仮想ディスクをsource.vdi、クローンディスクをresizetarget.vdiとする場合の例
$ vboxmanage clonemedium --format VDI source.vdi resizetarget.vdi [--variant Standard]
2-2. 領域の拡張
以下のコマンドを実行(ディスク全体を32GBにしたい場合の例)
$ vboxmanage modifymedium resizetarget.vdi --resize 32768
2-3. 固定ディスクへ戻す
$ vboxmanage clonemedium --format VDI resizetarget.vdi update.vdi --variant Fixed
あとは、update.vdiを新しいディスクとして使用する
3. Proxmox
Proxmoxだと以下のコマンドでディスクを拡張
# qm resize {VMID} {ディスク} {ディスク容量}
+20G のように + を付けると現在のサイズに追加
40G のように + を付けない場合は、そのディスクの合計サイズを40Gにする指定
縮小は基本不可
例えば、VMIDが101、scsi0で20G拡張したいなら、
# qm resize 101 scsi0 +20G
4. ゲストOSへ反映
上記だけでは、仮想ディスクの容量が増えただけでゲストOSで使用できる領域が増えたわけではないため、ゲストOS側への反映を行う
但しディストリビューションやファイルシステム等によっても異なるため、以下に都度記述していくこととする
4-1. Arch Linux(ext4)
Arch Linuxで以下のような構成とする
$ sudo fdisk -l
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Device Start End Sectors Size Type
/dev/sda1 2048 2099199 2097152 1G EFI System
/dev/sda2 2099200 33556479 31457280 15G Linux filesystem
/dev/sda3 33556480 41940991 8384512 4G Linux swap
Disk /dev/sda 40GiB
となっているが、パーティションテーブル自体の合計は20GBしかない
この場合テーブルの最後(/dev/sda3)にswapがあるため、一旦この部分を削除して「/」の領域拡張を行い、再度swapを再作成する
まずは、swapをoffにする
$ sudo swapoff /dev/sda3
以下cfdiskの流れだと
swap領域を削除
↓
サイズ変更で、/dev/sda2の領域を増やす(swap分を引いた値に)
↓
swap領域を再度作成
↓
書き込み
↓
終了
となり、最終的に以下のようになっていればよいかと
Disk: /dev/sda
Size: 40 GiB, 42949672960 bytes, 83886080 sectors
Label: gpt, identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Device Start End Sectors Size Type
>> /dev/sda1 2048 2099199 2097152 1G EFI System
/dev/sda2 2099200 75499519 73400320 35G Linux filesystem
/dev/sda3 75499520 83884031 8384512 4G Linux swap
ここまでできたら、一旦再起動
(再起動前に/etc/fstabのswap行を一旦コメントアウトしておくと、旧UUIDを探して待たされるのを避けられます)
$ sudo reboot
して
$ sudo resize2fs /dev/sda2
$ df -BG
Filesystem 1G-blocks Used Available Use% Mounted on
/dev/sda2 35G 15G 18G 46% /
で、「/」が増えていることを確認
次にswapを再作成
$ sudo mkswap /dev/sda3
$ sudo swapon /dev/sda3
最後に、swap領域のUUIDを確認して、/etc/fstabにUUIDの値を書き換える
$ blkid /dev/sda3
$ sudo vim /etc/fstab
で、/dev/sda3の部分のUUIDをblkidでの値に書き換えて保存
再起動で問題がなければOK