LoginSignup
8
7

More than 5 years have passed since last update.

【VirtualBox】VMDK形式の容量拡張(contos7)

Last updated at Posted at 2018-10-24

はじめに

VMDK形式のストレージが容量いっぱいで困ったので拡張しました。
いろいろググったのですが、情報がちりばめられていたため、まとめることに。
正直、このあたりはそんなに知識もなかったので、検索ワードとかも悩んで迷いました。

バージョン

  • Windows 10 の VirtualBoxのバージョンは 5.2.12 r122591 (Qt5.6.2)
  • 仮想マシンのOSは CentOS Linux release 7.3.1611 (Core)

状態

/ が狭くて何かするのが辛い。
/dev/mapper/cl-rootを増やしたい。

[root@localhost ~]# df -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
/dev/mapper/cl-root   6.2G  6.0G  225M   97% /
devtmpfs              1.9G     0  1.9G    0% /dev
tmpfs                 1.9G     0  1.9G    0% /dev/shm
tmpfs                 1.9G  8.4M  1.9G    1% /run
tmpfs                 1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1            1014M  182M  833M   18% /boot
tmpfs                 380M     0  380M    0% /run/user/0

容量拡張

大きく分けて3つの手順を行うことで容量拡張ができました。各所のポイントでそれぞれ悩みました。

1. VBoxManage コマンドを使って拡張

最初、対象の仮想マシンをシャットダウンします。
対象の仮想マシンに割り当てられているストレージを確認し、vmdk形式のファイルの保存場所を確認します。
次にコマンドプロンプトを開いてVBoxManageコマンドがある場所に移動します。

> cd C:\Program Files\Oracle\VirtualBox

現状のvmdk形式ファイルをvdi形式にしてクローンします。(--format vdiオプションを使います)

> VBoxManage clonehd "D:\VirtualBox VMs\xxxx\xxxx-disk001.vmdk" "D:\VirtualBox VMs\xxxx\xxxx-disk001_resize.vdi" --format vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'vdi'. UUID: xxxxxxxxxxxxxxxxxxxxxxxxxxxx

クローンしたvdi形式ファイルのリサイズを行います。(8Gを20Gに拡張)

> VBoxManage modifyhd "D:\VirtualBox VMs\scp_dev\scp_dev-disk001_resize.vdi" --resize 20480
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

リサイズしたvdi形式をvmdk形式に戻します。

> VBoxManage clonehd "D:\VirtualBox VMs\xxxx\xxxx-disk001_resize.vdi" "D:\VirtualBox VMs\xxxx\xxxx-disk001_resize.vmdk" --format vmdk
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'vmdk'. UUID: xxxxxxxxxxxxxxxxxxxxxxxxxxxx

それから、仮想メディアマネージャーを起動してハードディスクのタブを見てみると、クローンしたvdi形式とvmdk形式のファイルが追加され、仮想サイズが20Gに増えたものが確認できます。その後、対象の仮想マシンの設定にある「ストレージ」を選択し、容量を拡張したxxxx-disk001_resize.vmdkに変更します。容量の小さいほうは「-」を押して、マウントを外すだけでいいです。(なぜなら、ミスったとき元に戻れなくなるので)

ちなみに仮想メディアマネージャーで容量変更を試みると。。

VBOX_E_NOT_SUPPORTEDというようなエラーが出力されます。

Resizing to new size 17179869184 is not yet supported for medium 'D:\VirtualBox VMs\xxxxxx\xxxxxx-disk001.vmdk'.

容量変更ができません。ここで出来ればすぐ終わる話なのに....

2. 「GNOME Partition Editor」を使って容量再割り当て

さて、入れ物の大きさは20Gに調整しました。しかし、これでは既存のパーティション/dev/mapper/cl-rootは6.2Gのままです。これを器いっぱいにしたいので、「GNOME Partition Editor」というもので広げます。

GNOME Partition Editorのダウンロードはこちらで行います。
「GNOME Partition Editor」
Stable Releasesにある「Download gparted-live-0.32.0-1-i686.iso」をダウンロードします。

落として来たら仮想マシンの設定にある「ストレージ」を選択し、光学ドライブの「空」にgparted-live-0.32.0-1-i686.isoをセットします。セットしたら、仮想マシンの電源を入れて、通常起動を行います。通常起動したらCD扱いのisoを読み込むために急いでF12キーをおしてcd-romを選択すると次のような画面が表示されるので、「GParted Live」を選択。
gparted-live.png

  • don't touch keymap を選択
  • Loading language settings を 15に
  • Continue to start X to use GParted automatically を選択(そのままEnterで)

次のように12Gが未割当領域として表示されています。
gparted-live2.png

増やしたいボリュームをクリックして「リサイズ/移動」を選択し新しいサイズを表示されている最大サイズに変更し、後方の空き領域を0にします。

gparted-live3.png

「リサイズ」ボタンを押して、サイズを変更します。しかしまだ確定されていません。
上のほうにある「Apply」ボタンを押して本当の確定になります。

gparted-live4.png

容量がでっかくなりました。もう、ここに用は無いので、この後いったんこの仮想マシンを閉じます。(仮想マシンの電源オフ)

3. lvextend コマンドで論理ボリュームを拡張する

まずは、仮想マシンを通常起動します。
さて、これでもまだ容量は広くありません。

[root@localhost ~]# df -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
/dev/mapper/cl-root   6.2G  6.0G  224M   97% /
devtmpfs              1.9G     0  1.9G    0% /dev
tmpfs                 1.9G     0  1.9G    0% /dev/shm
tmpfs                 1.9G  8.4M  1.9G    1% /run
tmpfs                 1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1            1014M  182M  833M   18% /boot
tmpfs                 380M     0  380M    0% /run/user/0
[root@localhost ~]#

lvdisplayでみると/dev/mapper/cl-rootは次のように6.20Gです。(/dev/cl/rootとう場所みたい。)

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/cl/swap
  LV Name                swap
  VG Name                cl
  LV UUID                xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-07-03 13:12:20 +0900
  LV Status              available
  # open                 2
  LV Size                820.00 MiB
  Current LE             205
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/cl/root
  LV Name                root
  VG Name                cl
  LV UUID                xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-07-03 13:12:20 +0900
  LV Status              available
  # open                 1
  LV Size                6.20 GiB
  Current LE             1586
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

vgdisplayというコマンドで見てみると19Gあるけど7G使ってます。。的な雰囲気を感じ取れます。

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               cl
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       1791 / 7.00 GiB
  Free  PE / Size       3072 / 12.00 GiB
  VG UUID               xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1

今回は確保した12Gすべてを(トータル約20G)割り当てたいのでパーセンテージ指定で実行します。
ずばりの容量指定や、+〇G追加とかもできます。
では、100%指定でlvextendコマンドを実行します。
```

lvextend -l +100%FREE /dev/cl/root
Size of logical volume cl/root changed from 6.20 GiB (1586 extents) to 18.20 GiB (4658 extents).
Logical volume cl/root successfully resized.
```

これでサイズ変更は完了しました!そこでdfコマンドで見てみると

[root@localhost ~]# df -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
/dev/mapper/cl-root   6.2G  6.0G  224M   97% /
devtmpfs              1.9G     0  1.9G    0% /dev
tmpfs                 1.9G     0  1.9G    0% /dev/shm
tmpfs                 1.9G  8.4M  1.9G    1% /run
tmpfs                 1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1            1014M  182M  833M   18% /boot
tmpfs                 380M     0  380M    0% /run/user/0

まだでっかくなっていません。。正しく適用するためにxfs_growfsコマンドを実行します。(centos7以降のコマンドみたいです。)
data blockが変更され容量確保が行われます。

[root@localhost ~]# xfs_growfs /dev/cl/root
meta-data=/dev/mapper/cl-root    isize=512    agcount=4, agsize=406016 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1624064, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 1624064 to 4769792

拡張結果

再度dfコマンドで容量確認します。

[root@localhost ~]# df -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
/dev/mapper/cl-root    19G  6.0G   13G   33% /
devtmpfs              1.9G     0  1.9G    0% /dev
tmpfs                 1.9G     0  1.9G    0% /dev/shm
tmpfs                 1.9G  8.4M  1.9G    1% /run
tmpfs                 1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1            1014M  182M  833M   18% /boot
tmpfs                 380M     0  380M    0% /run/user/0

無事容量確保できました。とても長い道のりでした。

まとめ

そんなに難しいことではないにしても、知らない事ばかりで不安でしたがなんとか容量確保できました。
この手の情報は時間の経過とともにやり方が変わっていくので、せめて1年おきに再確認が必要かもしれませんね。

8
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7