【Oracle VirtualBox】マウントした VM ストレージを拡張する
- Authors
- Name
- ごとれん
- X
- @ren510dev
目次
はじめに
開発の中で Linux 環境での検証が必要になったので、macOS に VirtualBox をインストールし、Ubuntu を仮想マシンとして立てて利用していました。 ところが Docker を多用していたところ、Docker イメージが思いの他ストレージを占領するため、あっという間にオーバーフローしました。 ちょっと酷使し過ぎたかな 🤔 ということでそれまで 20 GB の仮想 HDD をアタッチしていましたが、これを機に一気に 64 GB までストレージを拡張していきたいと思います。
今回は調べた内容を元に、Ubuntu 仮想マシンのストレージ拡張方法について書き残しておきたいと思います。
環境
以下のような環境で仮想マシンを利用しています。 20 GB という少ない容量の中で作業をしていると一瞬で、オーバーフローします。(初めから余裕をもって確保しておけばよかったと後悔 😔)
ということで 64 GB にストレージを拡張していきます。
- 【HostOS】
- OS:macOS Catalina Version 10.15.6
- CPU:4 コア 2.30GHz Intel(R) Core i7-1068NG7 64bit
- RAM:32 GB
- ディスク容量:Macintosh HD 500 GB
- 【GuestOS (VM)】
- OS:Ubuntu 20.04.4 LTS (Focal Fossa)
- CPU:4 コア 2.30GHz Intel(R) Core i7-1068NG7 64bit
- RAM:8 GB
- ディスク容量:Ubuntu 20.04.vdi 『20 GB』⬅︎ こいつを 64 GB に拡張したい
手順の確認
記憶域やパーティションを触る場合、一つ手順をミスるとすべてのデータが吹っ飛ぶ可能性があるので、手順を確認しながら慎重に作業を進めます。 また、作業を始める前に必ずスナップショットを作成しておき、万が一ミスってもロールバックできるようにしておきます。
【手順】
- スナップショットの作成
- 仮想 HDD の作成
- データの移行
- ストレージの確認
- パーティションの拡張
- 後処理:物理ストレージの解放
1. スナップショットの作成
自分の場合はいつ作成したバックアップかを一眼で判断できるように -年-月-日-時:分
のような命名規則に従ってスナップショット名を設定しました。
2. 仮想 HDD の作成
今回は新たに 64 GB の仮想 HDD を作成し、既存の 20 GB 仮想 HDD データを移行するやり方で作業を進めます。
【それぞれの特徴 (今回は『固定サイズ』を使用)】
- 可変サイズ
- 読み書き速度は固定サイズに比べて遅い
- 物理 HDD サイズを上限として、データの使用量に応じて HDD サイズを拡張可能
- 固定サイズ
- データの読み書きが高速
- ストレージサイズは固定長
- 仮想 HDD のサイズを指定
- 注意:既存のディスクサイズよりも大きい容量を確保すること!
- 今回は 64 GB の仮想 HDD を作成しましたが、ここで設定する記憶域はリアルに PC(Macintosh HD)の物理ストレージを食うので、ストレージ使用量を見ながら設定する必要があります。
- 作成された仮想 HDD を確認
3. データの移行
作成した 64 GB 仮想 HDD を Ubuntu にアタッチ これで 1 つの仮想マシンに 2 つの仮想 HDD がアタッチされたことになりますが、このままでは起動できないので、ローカル PC 上で、データのクローン作業を行い、不要になった既存の仮想 HDD をデタッチします。
仮想 HDD データをクローン
クローン作業はホスト PC のターミナル上で行います。
先ほど作成した VDI のあるディレクトリへ移動して作業を進める
デフォルトでは
$ /User/[ユーザ名]/VirtualBox\ VMs/[仮想マシン]/***.vdi
に作成されます。
### 移動
$ cd /Users/ren/VirtualBox\ VMs/Ubuntu\ 20.04
### 2つの仮想HDDが存在していることを確認
$ ls -a
.
..
Logs
Snapshots
Ubuntu 20.04.vbox
Ubuntu 20.04.vbox-prev
Ubuntu 20.04.vdi
Ubuntu 20.04_1.vdi
### 既存の20 GB 仮想HDD(Ubuntu 20.04.vdi)を64 GB 仮想HDD(Ubuntu 20.04_1.vdi)にクローン
$ VBoxManage clonehd --existing "Ubuntu 20.04.vdi" "Ubuntu 20.04_1.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'VDI'. UUID: 4cc3e925-****-4d78-****-5abfe3e36cf8
これで既存の仮想 HDD に格納されたデータは、新たに作成した 64 GB 仮想 HDD にコピーされました。
4. ストレージの確認
- 仮想マシンを立ち上げて、現在の状況を確認
### ディスク使用量を表示
$ df -h
### パーティション情報を表示
$ sudo fdisk -l
現段階では 64 GB 仮想 HDD をマウントできているものの、前半 20 GB のみしか使用できていません。 このままでは 64 GB の仮想 HDD をマウントした意味がないので、続いての作業でパーティション領域を広げる必要があります。
5. パーティションの拡張
/dev/sda1
を再作成
$ sudo fdisk /dev/sda
fdisk (util-linux 2.34) へようこそ.
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます.
書き込みコマンドを使用する際は、注意して実行してください.
####################################
### ここで操作するパーティション状態を確認 ###
####################################
コマンド (m でヘルプ): p
ディスク /dev/sda: 64 GiB、68719476736 バイト、134217728 セクタ
Disk model: VBOX HARDDISK
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512バイト / 512バイト
I/Oサイズ (最小 / 推奨): 512バイト / 512バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xae83c32c
デバイス 起動 開始位置 最後から サイズ Id タイプ
/dev/sda1 * 2048 41940991 20G 83 Linux
##############################
### ここでパーティションを一旦削除 ###
##############################
コマンド (m でヘルプ): d
パーティション 1 を選択
パーティション 1 を削除しました.
#############################
### ここでパーティションを再作成 ###
#############################
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 プライマリ、0 拡張、4 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (規定値 p): p ⬅︎ 基本パーティションを選択
パーティション番号 (1-4、既定値 1): 1
最初のセクタ (2048-134217727、既定値 2048): 2048 ⬅︎ 既定値を入力
Last sector、+/-sector or +/-size{K,M,G,T,P} (2048-134217727、既定値 134217727): 『Enter』キー
新しいパーティション 1 をタイプ Linux、サイズ 64 GiB で作成しました.
パーティション #1 には ext4 著名が書き込まれています.
署名を削除しますか? [Y]es/[N]o: Y ⬅︎ 署名を削除する
署名は write (書き込み)コマンドを実行すると消えてしまいます.
#####################################
### ここで操作後のパーティション状態を確認 ###
#####################################
コマンド (m でヘルプ): p
ディスク /dev/sda: 64 GiB、68719476736 バイト、134217728 セクタ
Disk model: VBOX HARDDISK
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512バイト / 512バイト
I/Oサイズ (最小 / 推奨): 512バイト / 512バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xae83c32c
デバイス 起動 開始位置 最後から サイズ Id タイプ
/dev/sda1 * 2048 134217727 64G 83 Linux
パーティション 1 にファイルシステム/RAIDの署名が完全に消去されます.
###################################################
### パーティション情報が問題なれば、情報を書き込んで終了する ###
###################################################
コマンド (m でヘルプ): w
パーティション情報が変更されました.
ディスクを同期しています.
- 再起動
$ sudo reboot
resize2fs
コマンドでパーティションを拡張
$ sudo resize2fs /dev/sda1
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/sda1 is mounted on /; on-lione resizing required
old_desc_blocks = 3、new_desc_blocks = 8
The filesystem on /dev/sda1 is now 16776960 (4k) blocks long.
- ディスク使用量を確認
$ df -h
20 GB 仮想 HDD から 64 GB 仮想 HDD に変更完了し、利用可能なストレージが 3% から 70% に増加しました。
- 再起動して、問題なく OS が立ち上がることを確認
$ sudo reboot
ストレージが拡張できていれば作業はおしまい。
6. 後処理:物理ストレージの解放
今回、ストレージを拡張するにあたり、仮想 HDD を新たに作成したことで、不要になった 20 GB の仮想 HDD はデタッチしました。 これだけではローカル PC 上の 20 GB は解放されないため、削除しておきます。
また、作業にあたり作成しておいたスナップショットも、問題なく動作することが確認できれば削除して大丈夫です。
まとめ
今回は、一度マウントした仮想 HDD 及び仮想マシンのストレージを拡張する方法について書きました。 ストレージの操作する際は、万が一に備えてデータのバックアップを取ってから作業することを推奨します。