VirtualBoxのストレージサイズ拡張後、拡張した領域が認識されない問題の対応方法

# はじめに

VirtualBox のゲストマシンのストレージ容量不足でOSの動作が不安定になったので仮想マシンのストレージ（.vdi）のサイズを拡張しました。
VirtualBox 仮想マシンのストレージ（.vdi）のサイズを拡張するには、(1) VBoxManage の modifyhd オプションで拡張、(2) 仮想メディアマネージャーで拡張 の2種類の方法があります。しかし、VirtualBoxのストレージを拡張がされているのに、OSの未割り当て領域に追加したはずの領域が反映されないことがありました。対応方法を備忘録として残します。 
なお、失敗しても元の状況に復元できるように、作業を行う前に仮想マシンのバックアップをお願いします。 

以下、20GBにストレージサイズを拡張したのにも関わらず、拡張した領域が認識されない状況です。 
![VM_storage0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/1efe5fd7-ce73-622d-22ce-41c43c3d47f9.png)

# 環境

以下のような環境を使用しています。 

| 環境 | ソフトウェア |
|:-----------|:------------|
| ホストマシン | Windows10 |
| 仮想マシン | Virtual Box 6.1 |
| ゲストマシン | Ubuntu 20.04.2 LTS |

# はじめに確認すべきこと

スナップショットを取得している環境では、ストレージ拡張がOSの未割り当て領域に反映されないことが多くの記事で報告されています。まず、仮想マシンのスナップショットを確認して、存在していればスナップショットを削除して、再度OSを起動するとストレージ拡張がOSの未割り当て領域に反映されます。ほとんどの場合、スナップショットの削除で解決です。 

ただし、スナップショットを削除してもストレージ拡張がOSの未割り当て領域に反映されないことがありました。その場合の対応方法について、以下にまとめます。 

# 新規ストレージの作成

まず、ストレージサイズを増やした新規ストレージを作成します。 
Oracle VM VirtualBox マネージャーで仮想マシンの設定画面を開きます。 
ストレージツリーのコントローラー:SATAの右側にあるディスクの＋マーク(ハードディスクの追加)をクリックします。 
![VM_storage1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/6cec4101-721a-e456-81d6-1a016f5b0755.png)
ハードディスク選択で作成(C)アイコンをクリックします。 
![VM_storage2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/f8d1789d-e0f0-03c5-77ab-5f04897ae7df.png)
仮想ハードディスクの作成で、ハードディスクのファイルタイプ選択が求められますのでVDI(VirtualBox Disk Image)を選択します。 
![VM_storage3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/0577b87d-ecda-277d-b3eb-ad5515bb8c6a.png)
ディスクのサイズを可変サイズか固定サイズを選択します。どちらでも構いません。今回は固定サイズを選択します。 
![VM_storage4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/d1c21007-6966-f2ff-e17f-6f8149cb73dd.png)
ディスクの名前とサイズを決めたら「作成」ボタンをクリックします。この時、既存ディスクサイズよりも大きいサイズを設定して下さい。今回は20GBとします。 
![VM_storage4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/8dff512a-cfbe-f122-e3f3-096addb001de.png)
以下のように20GBのストレージが作成されます。作成されたストレージを選択します。 
![VM_storage6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/0a1b63a6-ea65-16a8-858a-cff0d043c5d3.png)
ストレージツリーのコントローラー:SATAに新規ストレージが追加されます。 
![VM_storage8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/214b65da-633f-cb7d-fc5c-77a654f45b0c.png)

# ストレージ内容をコピー
元ストレージ内容を新規ストレージにコピーします。
ストレージツリーの新規ストレージをクリックして、場所に記述されているディレクトリをコピーします。 
![VM_storage7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/38ae3a5a-6436-669f-9d28-6e14403833e7.png)


コマンドプロンプトから新規ストレージがあるディレクトリへ移動したら、下記のコマンドを実行してストレージのコピーを行います。 
パーセンテージの表示が 100% になればストレージのコピーは完了です。 

```dosbatch
C:\> cd "\work\VirtualBox VMs\Ubuntu"
C:\work\VirtualBox VMs\Ubuntu> "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonehd --existing Ubuntu.vdi Ubuntu_1.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'VDI'. UUID: 9f543f2f-40f8-45ce-840d-30012af0ee66
```

ストレージのコピー後、古いストレージの割り当てを除去します。古いストレージを選択して右クリックして「割り当てを除去」を選択します。 
![VM_storage8-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/ea69f243-f96d-c87a-e91f-5dafa4f616a9.png)
以下のように新しいストレージだけが割り当てられた状態になります。 
![VM_storage8-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/cf52eb13-469d-d029-dbf4-0c43b56905ed.png)


# VM上でパーティション設定

VMを起動パーティションエディタ「GParted」で新しいストレージのパーティションを設定します。 
GParted がインストールされていない場合、以下のコマンドでインストールします。 

```bash
$ sudo apt-get install gparted
```

GParted を起動すると以下のように未割り当て領域 10GB が認識されました。 
![VM_storageA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/e33b8974-faaa-6e5c-5074-a293f199d555.png)
/dev/sda2 と /dev//sda5 を拡張すると、以下のように拡張されます。 
![VM_storageB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308856/fbd14f0d-5ad2-5c41-c219-9a42b5240a71.png)

GParted ではなく、partedコマンドでパーティションを設定する場合、[こちらの記事](https://qiita.com/kalafinalice/items/77947e99bb21330065b4)を参考にして下さい。 

# まとめ

VirtualBox のストレージサイズ拡張後、スナップショットを削除しても拡張した領域が認識されなくて困っていましたが、新規ストレージを作成して、内容をコピーすることでOS上で未割り当て領域が認識できて、なんとか容量不足を解消しました。 

もし、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。 

# 参照

以下の情報を参考にさせて頂きました。 

[VirtualBoxのディスク容量を拡張する](https://kabatin.hateblo.jp/entry/2016/02/25/190846) 
[VirtualBox + Ubuntuでのパーテーション拡張方法（CUI）](https://qiita.com/kalafinalice/items/77947e99bb21330065b4)