Оптимизация виртуальных дисков Linux/Windows для виртуальных машин VMware подразумевает под собой снижение размера виртуального диска, а значит и некоторое повышение производительности.
Сначала нам нужно зачистить свободное место нулями в самой виртуальной машине, а потом уже выполнять оптимизацию виртуального диска vmware-vdiskmanager -k F:\my-virtual-disk.vmdk
Иногда это даст снижение в размере диска с 3.900 МБ до 2.700 МБ, а также повысит производительность виртуальной машины
В самой виртуальной машине Windows выполняем заполнение свободного пространства нулями - это можно сделать консольной программой sdelete, которая входит в состав пакета "СисьИнтэрналс" от Марка РабРусиновича:)
C:\>sdelete -h SDelete - Secure Delete v1.61 Copyright (C) 1999-2012 Mark Russinovich Sysinternals - www.sysinternals.com usage: sdelete [-p passes] [-s] [-q] ... sdelete [-p passes] [-z|-c] [drive letter] ... -a Remove Read-Only attribute -c Clean free space -p passes Specifies number of overwrite passes (default is 1) -q Don't print errors (Quiet) -s or -r Recurse subdirectories -z Zero free space (good for virtual disk optimization)
После того как забили нулями свободное место на диске, выполняем:
C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager \
-k F:\my-virtual-disk.vmdkПеред выполнением vmware-vdiskmanager, виртуальную машину нужно выключить, а иначе vmware-vdiskmanager не сможет получить доступа к файлу виртуального диска:
C:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager \
-k F:\my-virtual-disk.vmdk
FILE: FileIO_Lock on 'F:\my-virtual-disk.vmdk' failed: Lock timed out
FILE: FileIO_Lock on 'F:\my-virtual-disk.vmdk' failed: Lock timed outВНИМАНИЕ!!! Важно сохранять порядок действий:
- Забиваем свободное место виртуального диска нулями;
- Оптимизируем (уменьшаем размер) виртуальный диск.
Linux
В ОС Linux для заполнения нулями свободного пространства на диске есть некая утилита zerofree, например "Debian -- Details of package zerofree in squeeze", но для её использования требуется отмонтировать диск или чтобы он был смонтирован в режиме read-only (только чтение).
Второй способ, менее геморройный, использование стандартной программы "dd", с помощью которой можно создать файл забитый нулями на все свободное место на диске, а потом удалить его:
dd if=/dev/zero of=null.file dd: writing to 'null.file': No space left on device 4978617+0 records in 4978616+0 records out 2549051392 bytes (2.5 GB) copied, 128.901 seconds, 19.8 MB/s rm -Rf null.file
После этого выключаем виртуальную машину и выполняем:
vmware-vdiskmanager -d /path/to/my-virtual-disk.vmdk
Для Debian-а и Ubunt-ы есть некая прога Ubuntu Manpage: sfill - secure free disk and inode space wiper (secure_deletion toolkit).
Итоги
Подобную процедуру я выполняю для всех своих виртуальных машин с интервалом в 3-6 мес., когда вижу что .vmdk начал неоправданно занимать в два размера больше всех файлов реально хранящихся на самом виртуальном диске, после чего виртуальные .vmdk диски местами худеют почти в два раза!
Что касается "Zero free space (good for virtual disk optimization)" от sdelete, то я думаю, что это относится только к виртуальным дискам, которые крутятся на виртуальных машинах и не имеет никакого отношения к остальным виртуальным дискам, например шифрованным виртуальным дискам и иже с ними, а значит следовало бы перефразировать так "Zero free space (good for virtual disk optimization in virtual machine)"..
Если у кого есть дополнения по оптимизации виртуальных дисков, тогда пишем в комментарии...
Ссылки по теме
Олег Головский

