Как сжать размер виртуальных дисков Thin Provision (Тонкие диски) в VMware ESXi 5.5

При создании виртуальных дисков Thin Provision (Тонкие), их заданный размер фактически не занимает место в файловой системе, а постепенно разрастается по мере записи файлов на диск. Если освободить место на таких дисках, путем удаления файлов на них, то размер виртуального диска останется прежним, он сам по себе не сожмется.

 

Например, если выделить виртуальному диску 20Gb, его размер в хранилище данных начнется с нуля и будет расти по мере записи файлов на диск до 20Gb. Если скопировать файл размером 5Gb на диск, то виртуальный диск вырастет на 5Gb в хранилище данных. Однако, если удалить файл размером 5Gb, то виртуальный диск не сжимается в хранилище данных, он остается на уровне 5Gb.

 

Стандартного средства сжатия Thin Provision дисков в ESXi нет, поэтому разберем как можно сжать виртуальный диск в ручном режиме.

 

В качестве примера, подключаемся к ESXi серверу по SSH и переходим в каталог c файлами виртуальной машины:

 cd vmfs/volumes/datastore3/test/

Смотрим зарезервированный размер виртуального диска (прим. test.vmdk):

ls -lh test*.vmdk

-rw------- 1 root root 20.0G Aug 3 11:09 test-flat.vmdk
-rw------- 1 root root 493 Aug 3 11:02 test.vmdk

Копируем два файла на виртуальный диск test.vmdk, размерами 4Gb и 500Mb. Затем удаляем файл размером 4Gb. После удаления смотрим сколько фактически места занимает виртуальный диск test.vmdk в файловой системе:

du -h test*.vmdk

4.5G test-flat.vmdk
0 test.vmdk

Размер занимаемый test.vmdk диском в файловой системе, равен 4.5Gb. Несмотря на то что файл размером 4Gb,был удален. Выполним сжатие виртуального диска.

 

Подготовка виртуального диска

На виртуальном диске, необходимо заполнить все свободное место нулями.

 

Windows

Скачиваем утилиту SDelete, с помощью которой можно обнулить свободные блоки. В командной строке (с правами администратора) выполняем команду:

C:\>sdelete.exe -z e:

SDelete v2.0 - Secure file delete
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

SDelete is set for 1 pass.
Cleaning free space on E:\: 100%

 

Linux

Обнуляем свободные блоки с помощью утилиты dd. В консоли выполняем команду:

dd if=/dev/zero bs=64k of=zero.temp ; rm zero.temp

Выключаем гостевую ОС.

 

Сжатие виртуального диска

Сжимаем виртуальный диск командой:

vmkfstools --punchzero vmfs/volumes/datastore3/test/test.vmdk

vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 100% done.

После окончания процедуры сжатия, проверяем сколько фактически стал занимать место виртуальный диск в файловой системе:

du -h vmfs/volumes/datastore3/test/test.vmdk

100.0M test-flat.vmdk
0 test.vmdk

Таким образом мы привели фактический размер виртуального диска, к ему реальному значению на текущий момент.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Оставить ответ

четыре × 4 =