経緯
今回新規でSSDを購入したため、HDDにある.vdiをSSDに移動することにしました。
しかし、SSDの容量は256GBに対し、vdiの容量Capacityの設定が500GBになっていたため、
大容量のファイル書き込みを行った際に問題が生じると考えてvdiを縮小する作業を行いました。
通常はvirtualboxのVBoxManager.exeを用いて以下の方法で縮小可能です。
しかし、VBoxManage clonehdを実施しても縮小可能な形式にはならず…
代替案として、下記を参照して強制的に縮小してみたのでその備忘録になります。
参照:How to decrease virtual size/capacity of a Virtualbox vdi file
※注意:強制的にリサイズするため、データが欠損する可能性があります。
必ずvdiファイルをコピーをした後に実施してください。
環境
- HostOS : Windows10 Home
- VMHost : VirtualBox 5.2.26
- VM OS : Ubuntu 18.04
- 備考 : LVM未使用
実施手順
1. gpartedで既存パーティションの容量を削減
LiveCDでUbuntuを起動しgpartedを用いてパーティションを変更します。
$ gparted
GUIで操作できるため、パーティションを削減後のディスク容量以下になるように修正
2. 容量の小さなvdiを作成する
先に新規の仮想マシンを作成し、容量の小さなvdiファイルを新規に作成。
その後、VBoxMaangerで複製する。clonehdの--existオプションでcapacityそのままに内容のみコピーが可能となる
(標準のvboxmanagerの位置:C:\Program Files\Oracle\VirtualBox)
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd <既存のvdi> <上記で作成した新規vdi> --existing
完了した後に、list hddsによりcapacity確認
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe list hdds
3. fsckで微修正
この状態で仮想マシンを起動してもエラーが表示されるため、LiveCDのfsckで調整
## 対象となるパーティションを確認
$ fdisk -l
## 強制的に修正
$ sudo e2fsck -fy /dev/sda1
以上で仮想マシンを立ち上げると動作する・・・はず
おわりに
強制的にリサイズしているので、データ欠損がある可能性が高いです…
あまりいい方法ではないですね。まぁ最終手段ということでよろしくおねがいします。