Содержание статьи:
При создании виртуальных дисков Thin Provision (Тонкие), их заданный размер фактически не занимает место в файловой системе, а постепенно разрастается по мере записи файлов на диск. Если освободить место на таких дисках, путем удаления файлов на них, то размер виртуального диска останется прежним, он сам по себе не сожмется.
[dropshadowbox align=»none» effect=»vertical-curve-both» width=»auto» height=»» background_color=»#ffffff» border_width=»1″ border_color=»#dddddd» ]Например, если выделить виртуальному диску 20Gb, его размер в хранилище данных начнется с нуля и будет расти по мере записи файлов на диск до 20Gb. Если скопировать файл размером 5Gb на диск, то виртуальный диск вырастет на 5Gb в хранилище данных. Однако, если удалить файл размером 5Gb, то виртуальный диск не сжимается в хранилище данных, он остается на уровне 5Gb.[/dropshadowbox]
Стандартного средства сжатия 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
Таким образом мы привели фактический размер виртуального диска, к ему реальному значению на текущий момент.
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Оставить ответ