要旨
VirtualBoxで仮想HDDの容量を増やしても、スナップショットが存在すると、実際の変更がゲストOSに反映されないことがある。
この記事では、スナップショットが原因でディスク拡張が反映されなかった事例と、その回避・修正方法を記録している。
私の環境
- ホスト:Windows 11
- ゲスト:Ubuntu 5.15.0-141-generic
- VM:VirtualBox 7.0
やりたかったこと
もともとUbuntuは25GBで使用していたのだけれど、Android Studioを入れようとしたらディスクがぱつぱつになってしまったので、Ubuntuのディスク容量を64GBにしようとした。
はまりポイント
ディスク容量を増やす前に、スナップショットを取ったのが、失敗だった。
スナップショットがあると、Ubuntuに新しいディスク容量が認識されなかった。
VirtualBox側の各マシンの設定のストレージの説明で「割当:<マシン名>.vdi(スナップショット)と書いてあることに違和感をもって、
スナップショットを削除したら解決した。
はまりからの脱出手順
VirtualBoxの管理画面で
当該マシンを選択すると、右側にスナップショットが表示されるから、右クリックで「削除」する。
正しい手順
(0) (参考)最初の状態
最初はシステム全体で25GBでVMを作ったので、/(ルートディレクトリ)も分けていなかった(df -h参照)。
2022年にubuntu-mateのデフォルト設定作ったVMで、LVMではなかった(lsblkの出力でsda5がいきなりext4と書いてある)。
# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 197M 1.4M 196M 1% /run
/dev/sda5 24G 23G 99G 38% /
tmpfs 982M 0 982M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sda1 511M 4.0K 511M 1% /boot/efi
<machinename>_share 462G 262G 201G 57% /media/sf_<machinename>_share
tmpfs 197M 172K 197M 1% /run/user/1000
/dev/sr0 51M 51M 0 100% /media/<username>/VBox_GAs_7.0.41
# lsblk -f
/snap/ubuntu-mate-welcome/726
sda
├─sda1
│ vfat FAT32 D5B4-ADBC 511M 0% /boot/efi
├─sda2
│
└─sda5
ext4 1.0 1f0c5fbd-9def-4972-aeaf-a25d70d565d4 427.4M 93% /var/snap/firefox/common/host-hunspell
/
sr0 iso966 Jolie VBox_GAs_7.0.4
2022-11-16-17-05-17-10 0 100% /media/<username>/VBox_GAs_7.0.41
(1) VirtualBox側で仮想HDDの容量を増やす
ファイル→ツール→仮想メディアマネージャ
該当する<マシン名>.vdiを選択
下の方にサイズの項目があるので、現在の容量(25GB)の欄に増量後の容量(64GB)に書き換えて「適用」をクリック
(2) ゲストOS内で、パーティションの容量を増やす
growpartってコマンドで一発。コマンドがなかった場合には、エラーメッセージにしたがってapt installでインストールすればよい。/(ルートディレクトリ)が論理パーティションになっているので(デフォルトでインストールしただけなので理由は不明)、sda2を広げて、sda5を広げるという2段階が必要だった。
# growpart /dev/sda 2
# growpart /dev/sda 5
(3) ゲストOS内で、ファイルシステムに認識させる
resize2fs /dev/sda5
(4) (参考)作業後の状態
df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 197M 1.4M 196M 1% /run
/dev/sda5 63G 23G 38G 38% /
tmpfs 982M 0 982M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sda1 511M 4.0K 511M 1% /boot/efi
<machinename>_share 462G 262G 201G 57% /media/sf_<machinename>_share
tmpfs 197M 172K 197M 1% /run/user/1000
/dev/sr0 51M 51M 0 100% /media/<username>/VBox_GAs_7.0.41
蛇足
- このVMは、プライベートで使っている、ちょっとLinuxが必要なときに使うために作成したVMなので、HDD容量も25GBと小さめで、/(ルートディレクトリ)もわけなかった。
- マシンがHDDをどのサイズで認識しているかを確認する方法は色々ある。例えばdmesgも使える。
$ dmesg |grep GB
[ 0.147483] Last level dTLB entries: 4KB 2048, 2MB 2048, 4MB 1024, 1GB 0
[ 4.185405] sd 2:0:0:0: [sda] 134217728 512-byte logical blocks: (68.7 GB/64.0 GiB)
まとめ
- VirtualBoxでディスクサイズ変更しても、ゲストOSで認識されないときは、スナップショットの存在を疑ってみましょう
- スナップショットを削除してから、ゲストOS側で
growpart
→resize2fs
の手順でディスク拡張ができる - LVMでない環境でも比較的簡単に拡張可能(むしろ簡単)
仮想環境のトラブルは調べても断片的な情報が多いので、この記事が同じ問題で困っている方の助けになれば嬉しいです。
参考にしたサイト
- ChatGPT 全般的に助けてもらいました。はまりポイントから抜けて振り返ってみると、最初に教えてくれたやり方を結果的になぞっていました。
- VirtualBox で CentOS7 の ディスクを拡張した時の手順 | kiyoblog VirtualBox側の設定は、この方と同じやり方をしました。ゲストOS側は、この方はLVMだったので同じにはできませんでした。
- 【Linux】growpartでLVMのシステム領域を拡張する | 技術のないエンジニアのIT備忘録 growpartの説明です。fdiskやpartedでも同じことができますが、growpartのほうが圧倒的にかんたんです。
- 6.3. Ext4 ファイルシステムのサイズ変更 | ストレージ管理ガイド | Red Hat Enterprise Linux | 6 | Red Hat Documentation resize2fsの説明です。