VirtualBoxのストレージサイズ縮小

ついに、Windowsの起動ドライブの空き容量が2GB位になってしまった。トータルで500GB位のM2 SSDなので、0.5%位?

さすがにどうにもならないので、なんとか領域を確保しなければと重い腰を上げることに。

今回、削り込みの処理をしたので、作業の骨子をメモとして記録。

150GB位のVirtualBoxの作業用イメージがあり、これが削れば40GB位は削れそうな感じ。後、領域としては150GBなんだが、スナップショットを含めると230GB位つかってる。

もうスナップショットは削ってもいいんだが、これが空き領域がなくて削除・統合処理が行えないという事態になっていて、先送りにしていた。

起動ドライブの他に、作業用SSDとして420GB位のドライブがあったが、こちらも大体一杯で余裕はない。

スナップショットを削るには、どうやら基本ストレージと同等位の空き容量が必要っぽい。

ということで、まずはネットワークドライブに、普段は使ってない250GB位の仮想環境のファイルを一旦退避して作業領域を作る。

VBoxManageコマンドの clonemedium で、最新スナップショットからVDIファイルをDドライブに作成。

ファイルシステムの縮小をするには、そのFSをマウントしてると実行できないが、該当の作業環境はルートに全部割り当ててあり、またVirtualBoxはUSBメディアからの起動は出来ない。

まず、USBを物理ドライブに指定した状態で createrawvmdk で仮想メディアを作成。こちらをIDEドライブに指定することで、USBメディアにいれてある Ubuntu のインストールディスクで起動する。

参考: VirtualBox で VM を USB ブートさせる手順 (Windows)

IDEに先程指定した、USBに入れたインストールディスクと、SATAにcloneした仮想メディアを指定して起動。起動時に Ubuntuを試すを選択すると試用するためのセッションが立ち上がり、普段使ってるストレージも /dev/sd* に割りあたってるので、ここで必要な作業を行う。

LVMで設定してあったので、大体以下の操作をする。

  1.  e2fsck -f /dev/<VOL_GROUP>/<LV NAME>
  2. resize2fs /dev/<VOL_GROUP>/<LV NAME> XXXG
  3. lvreduce -L XXXG /dev/<VOL_GROUP>/<LV NAME>
  4. lvremove <スワップ領域>
  5. lvcreate <0 FILL用のLV>
  6. dd if=/dev/zero of=<NEW CREATED WORK LV PATH>
  7. lvremove <0 FILL用のLV>
  8. lvcreate <スワップ領域>
  9. dd if=/dev/urand of=<スワップ領域>
  10. mkswap /dev/<VOL_GROUP>/<SWAP LV>
  11. VBoxManage modifyhd [UUID] –compact

ファイルシステムの縮小処理、LVの縮小処理、スワップ領域を除く。

VDIの縮小のために連続した0で領域を埋める必要があるので一時的に作業用のLVを 100%FREE で作成してddで埋める。

作業用LVを消した上でSWAP領域のLVを作成して、消されないようにランダム値で埋める。

VBoxManageコマンドで物理ファイルのcompact処理。

VDIなのでmodifyhdのリサイズはしなかったが、やっといたほうがいいかも。

色々と細かいバッドノウハウがあるようで、面倒だった…

追記:

ストレージを既存のVMに付け替えても、スナップショットなどの情報はそのまま残ってしまう&メディアとスナップショットが参照された状態なので消せない。

何か手続きはあると思うが、今回は面倒なので同等のVMを新規作成し、メディアを指定するところでcompactし直したメディアを指定することで同等のVMを作ることにした。

その上で、過去使っていたVMとメディアを削除。

電子の海の藻屑になってもらった。

追記2:

これまで、メモリの量、CPUの割当数など、一時的にリソースが必要になった場合、設定の変更をすると、ホストOSのWindowsの再起動が必要だった。

これは、控え目に言ってもクズ。

設定変更するだけで再起動が必要とか、アホすぎるだろう… と呆れるのを通り越して怒りがこみ上げる状態。他の人の環境はどうなんだかしらないが、暴動が起きても賛成出来るレベルだった。

検索すると既知の問題らしいが、セキュリティ絡みの話らしくて改善することは無さげ…

セキュリティソフトを切れって書いてあるのも見たが、うちはマイクロソフト謹製のデフォルトのだけなんだよなぁ。

で、今回気がついたんだが、変更をする時は管理者権限でVirtualBoxを立ち上げて変更すると、再起動は不要なようだ。

  • 設定変更する時は管理者権限でVirtualBoxを起動して変更する
  • 一度でも一般ユーザーのVirtualBoxで変更してしまうと、Windowsを再起動しないと二度とVM起動できない

呆れるのは変わらないが、改善策が見つかったのは僥倖でした…