Howto Shrink a Thin Provisioned Virtual Disk (VMDK)

Virtual Machine Preparation (Windows)

Windows does not automatically zero deleted blocks. Microsoft provides a tool that can zero blocks after while deleting a file or zero out the entire free space. This is required to reclaim space back from the virtual disk.

  1. Download SDelete (
  2. run sdelete.exe -z [Drive]

Virtual Machine Preparation (Linux)

Linux does not zero deleted blocks too. There are various tools available to create zeroed blocks. The best known tool is dd which should be available on all systems.

  1. Identify free space with df
  2. Fill the free space with dd
vma:/mnt/data # df -h
vma:/mnt/data # dd bs=1M count=8192 if=/dev/zero of=zero

This will zero 8GB of the available 8.2GB (1MB Blocksize * 8192 = 8GB). Please note that you virtual disk file (VMDK) will grow to the full size during the process.

Shrink VMDK File

  1. Power off the Virtual Machine, or disconnect the virtual Disk you want to shrink
  2. Connect to the ESXi Host with SSH
  3. Navigate to the Virtual Machine Folder
  4. Verify disk usage with du
  5. Run vmkfstools -K [disk]
  6. Verify disk usage with du
root@esx3:/vmfs/volumes/ds1/vma $ du -h vma_1-flat.vmdk
7.9G vma_1-flat.vmdk

root@esx3:/vmfs/volumes/ds1/vma $ vmkfstools -K vma_1.vmdk
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 25% done.

root@esx3:/vmfs/volumes/ds1/vma $ du -h vma_1-flat.vmdk
1.9G vma_1-flat.vmdk

VMware vCenter 6.x, добавление хоста, ошибка "Signed certificate could not be retrieved due to a start time error"

When you replace the VMware Certificate Authority root certificate with an enterprise subordinate certificate, you experience these symptoms:

  • The certificate has been valid for less than 24 hours
  • You are unable to join a VMware vSphere ESXi host to VMware vCenter Server
  • You see the error:

    A general system error occurred: Unable to get signed certificate for host: esxi_hostname. Error: Start Time Error (70034)
This behavior is changed in VMware vCenter 6.0 Update 2 and later with the advanced setting vpxd.certmgmt.certs.minutesBefore, available at VMware Downloads. For more information, see the VMware vCenter Server 6.0 Update 2 release notes.
To change the vpxd.certmgmt.certs.minutesBefore to 10:
  1. Connect to the vCenter Server using the vSphere Client and administrator credentials.
  2. Select Administration > vCenter Server Settings to display the vCenter Server Settings dialog box.
  3. In the settings list, select Advanced Settings.
  4. In the Key field, type a key.
  5. In the Key field, enter this key:
  6. In the Value field, enter:
  7. Click Add.
  8. Click OK.

Перенос конфигурации ESXi между разными экземплярами

Сервер A - исходная установка ESXi, Сервер B - новая установка ESXi. Оба экземпляра должны быть одинаковой версии и ревизии.

1. На серверах включить доступ по протоколу SSH

2. Сохранить конфигурацию на Сервере A

vim-cmd hostsvc/firmware/sync_config
при неисправности носителя (USB flash drive) будет возвращена ошибка
vim-cmd hostsvc/firmware/backup_config
будет возвращена ссылка на скачивание сохраненной конфигурации вида

3. Сохранить текущую конфигурацию на Сервере B.

4. Перевести Сервер B в режим обслуживания

vim-cmd hostsvc/maintenance_mode_enter

5. Скопировать исходную конфигурацию на Сервер B, файл разместить по адресу /tmp/cofigBundle.tgz. Для копирования можно воспользоваться WinSCP.

6. Распаковать содержимое архиваcd /tmp/

tar zxvf configBundle.tgz

7.В файле Manifest.txt заменить значение UUID на идентификатор из файла Manifest.txt в конфигурации Сервера A. Для редактирования файла можно воспользоваться WinSCP, либо редактором vi.

8. Удалить файл /tmp/configBundle.tgz

rm ./configBundle.tgz

9. Собрать новый файл конфигурации

tar zcvf configBundle.tgz Manifest.txt state.tgz

10. Восстановить конфигурацию

vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz 

После применения конфигурации сервер автоматически перезагрузится.