そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

ESXi仮想ディスクvmdk(シンプロビジョニング)を縮小する手順【Linux】

※[PR]当ブログの記事の中にはプロモーションが含まれています。

・ESXiの仮想マシンの仮想ディスクを「シンプロビジョニング」にしています。
仮想マシン上で不要ファイルを削除して空き容量を確保したのに、仮想ディスク(vmdk)のサイズが大きくなったまま変わらない。
・仮想ディスク(vmdk)のサイズを圧縮・縮小する方法を知りたい。
・具体的な手順を教えてほしい。

こういった疑問に答えます。

本記事の内容

  1. ESXi6.7の仮想ディスク(vmdk)(シンプロビジョニング)サイズを圧縮・縮小する手順

サトナカ (@souiunogaii)

この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。

こういった私が、解説していきます。

私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。

ESXi6.7の仮想ディスク(vmdk)(シンプロビジョニング)のサイズを圧縮・縮小する手順

ESXi6.7の仮想マシンの仮想ディスクを「シンプロビジョニング」にしていると、仮想ディスク(vmdk)のサイズを節約することができます。
しかし、一旦、サイズが大きくなったあとは、仮想マシン上で不要ファイルを削除しても、仮想ディスク(vmdk)自体のサイズは大きくなったままです。

縮小するには、手動で作業をする必要があります。

手順①:作業前の仮想マシンのストレージ容量の確認

縮小作業前は「47.47GB」でした

仮想ディスクのタイプは「シンプロビジョニング」を選択

今回は、1つの仮想マシンに2つの仮想ディスクを割り当てています。

手順②:仮想マシン(今回はCentOS7)上で、空き容量を確認

df -h
$ df -h
ファイルシス                                      サイズ  使用  残り 使用% マウント位置
devtmpfs                                            1.6G     0  1.6G    0% /dev
tmpfs                                               1.6G  960M  612M   62% /dev/shm
tmpfs                                               1.6G  8.8M  1.6G    1% /run
tmpfs                                               1.6G     0  1.6G    0% /sys/fs/cgroup
/dev/mapper/ol-root                                  36G   21G   15G   59% /
/dev/sda1                                          1014M  367M  648M   37% /boot
/dev/sdb1                                            20G  4.7G   16G   24% /bkup
//sv-jupiter.planet.space.com/backup1/sv-pluto_bk   3.7T  3.0T  659G   83% /win
tmpfs                                               315M     0  315M    0% /run/user/54322
tmpfs                                               315M     0  315M    0% /run/user/1000

今回は、「/dev/sdb1」の使用済サイズが4.7GBなのに、
実際の仮想ディスク2のファイルサイズが約20GBになっていたので、
これを圧縮したいと思います。

手順③:ディスクの空き容量の部分をZEROで埋める

空き部分をzeroファイルで埋め尽くす

sudo dd if=/dev/zero of=/bkup/zero bs=4k
$ sudo dd if=/dev/zero of=/bkup/zero bs=4k
dd: `/bkup/zero' の書き込みエラー: デバイスに空き領域がありません
4021926+0 レコード入力
4021925+0 レコード出力
16473804800 バイト (16 GB) コピーされました、 83.3517 秒、 198 MB/秒

空き容量を確認

df -h

「/dev/sdb1」の使用率が100%になりました。

$ df -h
ファイルシス                                      サイズ  使用  残り 使用% マウント位置
devtmpfs                                            1.6G     0  1.6G    0% /dev
tmpfs                                               1.6G  960M  612M   62% /dev/shm
tmpfs                                               1.6G  8.8M  1.6G    1% /run
tmpfs                                               1.6G     0  1.6G    0% /sys/fs/cgroup
/dev/mapper/ol-root                                  36G   21G   15G   59% /
/dev/sda1                                          1014M  367M  648M   37% /boot
/dev/sdb1                                            20G   20G   20K  100% /bkup
//sv-jupiter.planet.space.com/backup1/sv-pluto_bk   3.7T  3.0T  659G   83% /win
tmpfs                                               315M     0  315M    0% /run/user/54322
tmpfs                                               315M     0  315M    0% /run/user/1000

zeroファイルを削除する

sudo rm -f /bkup/zero

再度、空き容量を確認

df -h

「/dev/sdb1」の使用率が24%に戻りました。

$ df -h
ファイルシス                                      サイズ  使用  残り 使用% マウント位置
devtmpfs                                            1.6G     0  1.6G    0% /dev
tmpfs                                               1.6G  960M  612M   62% /dev/shm
tmpfs                                               1.6G  8.8M  1.6G    1% /run
tmpfs                                               1.6G     0  1.6G    0% /sys/fs/cgroup
/dev/mapper/ol-root                                  36G   21G   15G   59% /
/dev/sda1                                          1014M  367M  648M   37% /boot
/dev/sdb1                                            20G  4.7G   16G   24% /bkup
//sv-jupiter.planet.space.com/backup1/sv-pluto_bk   3.7T  3.0T  659G   83% /win
tmpfs                                               315M     0  315M    0% /run/user/54322
tmpfs                                               315M     0  315M    0% /run/user/1000

手順④:一度、仮想マシンをシャットダウン

一度、仮想マシンをシャットダウンします。

この段階では、仮想ディスク(vmdk)のサイズは、設定した範囲の最大値の約20GBになっていました。

手順⑤:ESXi6.7のホストにSSH接続してコマンドを実行

データストアの仮想マシンのファイルがあるディレクトリに移動

cd /vmfs/volumes/datastore1/SV-PLUTO/
[root@SV-URANUS:~] cd /vmfs/volumes/datastore1/SV-PLUTO/

縮小前の仮想マシンのファイルを確認

totalのサイズが「43713664 byte」(約42GB)でした。

[root@SV-URANUS:/vmfs/volumes/5dff9189-9f5ce4c1-0e04-a85e45e2493f/SV-PLUTO] ls -l
total 43713664
-rw-------    1 root     root     42949672960 Jan 13 12:33 SV-PLUTO-flat.vmdk
-rw-------    1 root     root          8684 Dec 29 13:13 SV-PLUTO.nvram
-rw-------    1 root     root           528 Jan 13 11:51 SV-PLUTO.vmdk
-rw-r--r--    1 root     root             0 Jan  9  2020 SV-PLUTO.vmsd
-rwxr-xr-x    1 root     root          3600 Jan 13 12:33 SV-PLUTO.vmx
-rw-------    1 root     root     21474836480 Jan 13 12:33 SV-PLUTO_1-flat.vmdk
-rw-------    1 root     root           530 Jan 13 11:51 SV-PLUTO_1.vmdk
-rw-r--r--    1 root     root        228758 Nov 26 12:24 vmware-13.log
-rw-r--r--    1 root     root        280781 Dec 27 23:49 vmware-14.log
-rw-r--r--    1 root     root        227655 Dec 28 00:42 vmware-15.log
-rw-r--r--    1 root     root        232450 Dec 29 13:13 vmware-16.log
-rw-r--r--    1 root     root        353464 Jan  6 12:01 vmware-17.log
-rw-r--r--    1 root     root        246539 Jan 13 11:39 vmware-18.log
-rw-r--r--    1 root     root        234885 Jan 13 12:33 vmware.log

vmkfstoolsコマンドで仮想ディスク(vmdk)を縮小

vmkfstools -K ./SV-PLUTO_1.vmdk
[root@SV-URANUS:/vmfs/volumes/5dff9189-9f5ce4c1-0e04-a85e45e2493f/SV-PLUTO] vmkfstools -K ./SV-PLUTO_1.vmdk
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 3% done.

しばらく待つと、100%になります。

Hole Punching: 100% done.

縮小後の仮想マシンのファイルを確認

totalのサイズが「27635968 byte」(約26GB)に縮小できました。 約16GBぐらい小さくなりました。

[root@SV-URANUS:/vmfs/volumes/5dff9189-9f5ce4c1-0e04-a85e45e2493f/SV-PLUTO] ls -la
total 27635968
drwxr-xr-x    1 root     root         77824 Jan 13 12:33 .
drwxr-xr-t    1 root     root         77824 Jan 13 11:36 ..
-rw-------    1 root     root     42949672960 Jan 13 12:33 SV-PLUTO-flat.vmdk
-rw-------    1 root     root          8684 Dec 29 13:13 SV-PLUTO.nvram
-rw-------    1 root     root           528 Jan 13 11:51 SV-PLUTO.vmdk
-rw-r--r--    1 root     root             0 Jan  9  2020 SV-PLUTO.vmsd
-rwxr-xr-x    1 root     root          3600 Jan 13 12:33 SV-PLUTO.vmx
-rw-------    1 root     root     21474836480 Jan 13 12:33 SV-PLUTO_1-flat.vmdk
-rw-------    1 root     root           530 Jan 13 11:51 SV-PLUTO_1.vmdk
-rw-r--r--    1 root     root        228758 Nov 26 12:24 vmware-13.log
-rw-r--r--    1 root     root        280781 Dec 27 23:49 vmware-14.log
-rw-r--r--    1 root     root        227655 Dec 28 00:42 vmware-15.log
-rw-r--r--    1 root     root        232450 Dec 29 13:13 vmware-16.log
-rw-r--r--    1 root     root        353464 Jan  6 12:01 vmware-17.log
-rw-r--r--    1 root     root        246539 Jan 13 11:39 vmware-18.log
-rw-r--r--    1 root     root        234885 Jan 13 12:33 vmware.log

この段階で、データストアブラウザで見ても、
仮想ディスク(vmdk)のサイズは、約4.6GBに縮小されていました。

手順⑥:ESXi6.7のホスト自体を再起動

ESXi6.7のホスト自体を再起動した後に確認すると、仮想マシンのストレージ使用量が約30GBに縮小されていました。

以上で、ESXi6.7上の仮想マシン(CentOS7)の仮想ディスク(vmdk)のサイズを圧縮・縮小することができました。

OSがmacOSの場合の手順

souiunogaii.hatenablog.com

ESXiにデータストアを追加する手順

souiunogaii.hatenablog.com

おすすめのHDDの選び方

souiunogaii.hatenablog.com