・ESXiの仮想マシンの仮想ディスクを「シンプロビジョニング」にしています。
・仮想マシン上で不要ファイルを削除して空き容量を確保したのに、仮想ディスク(vmdk)のサイズが大きくなったまま変わらない。
・仮想ディスク(vmdk)のサイズを圧縮・縮小する方法を知りたい。
・具体的な手順を教えてほしい。
こういった疑問に答えます。
本記事の内容
- ESXi6.7の仮想ディスク(vmdk)(シンプロビジョニング)サイズを圧縮・縮小する手順
この記事を書いている私は、某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)のサイズを圧縮・縮小することができました。