Взято тут: https://habrahabr.ru/post/276377/
Когда я начал работать с ESXi, столкнулся с проблемой нехватки дискового пространства из-за сильно разросшихся тонких дисков. Вообще, лучше создавать диски меньшего размера, потому что увеличить диск в ESXi намного проще, чем уменьшить. Но что же делать, если все-таки возникла необходимость уменьшить диск? Причем, мое положение усугубляли LVM разделы на сервере, которые не распознавал Acronis, и, следовательно, не мог изменить размер раздела.
Опишу способ, которым воспользовался я:
Сперва нужно уменьшить диск внутри самой виртуальной машины, для этого существует множество универсальных программ: Acronis disc director, paragon partition manager, встроенная утилита управления дисками в windows и т.д. Мне ни одна из этих программ не помогла, поэтому пришлось использовать средства линукса и LiveCD.
vgchange -a y
lvscan
fsck -fy /dev/test/root fsck -fy /dev/test/home
resize2fs /dev/test/home 190G
lvreduce -L 190G /dev/test/home
Также мы можем добавить это место к другом тому. Для этого:
Увеличиваем том root:
lvextend -L +10G /dev/test/root
Увеличиваем размер файловой системы на томе root до размера тома:
</code>
resize2fs /dev/test/root
</code>
fsck -fy /dev/test/root fsck -fy /dev/test/home
df -h
/vmfs/volumes/53114b32-24d88d5a-2cbe-0025b500004f/MTS-SCPortal-TEST3 # ls -l total 19810320 -rw-r--r-- 1 root root 27 Dec 20 20:46 VM_name-0b1f4705.hlog -rw------- 1 root root 6442450944 Feb 2 08:24 VM_name-0b1f4705.vswp -rw------- 1 root root 147102629888 Feb 2 08:28 VM_name-flat.vmdk -rw------- 1 root root 8684 Feb 2 08:25 VM_name.nvram -rw------- 1 root root 507 Feb 2 08:25 VM_name.vmdk -rw-r--r-- 1 root root 0 Dec 20 20:14 VM_name.vmsd -rwxr-xr-x 1 root root 3584 Feb 2 08:25 VM_name.vmx -rw------- 1 root root 0 Feb 2 08:24 VM_name.vmx.lck -rw-r--r-- 1 root root 273 Dec 20 20:14 VM_name.vmxf -rwxr-xr-x 1 root root 3584 Feb 2 08:25 VM_name.vmx~ -rw------- 1 root root 3424256 Feb 2 08:24 vmmcores-1.gz -rw-r--r-- 1 root root 240722 Dec 20 20:46 vmware-1.log -rw-r--r-- 1 root root 1252287 Feb 2 08:24 vmware-2.log -rw-r--r-- 1 root root 43555 Feb 2 08:24 vmware-3.log -rw-r--r-- 1 root root 151873 Feb 2 08:25 vmware.log -rw------- 1 root root 122683392 Feb 2 08:24 vmx-VM_name-186599173-1.vswp /vmfs/volumes/53114b32-24d88d5a-2cbe-0025b500004f/VM_name #
cat VM_name.vmdk # Disk DescriptorFile version=1 encoding=«UTF-8» CID=829544ab parentCID=ffffffff isNativeSnapshot=«no» createType=«vmfs» # Extent description RW 44000000 VMFS «VM_name-flat.vmdk» # The Disk Data Base #DDB ddb.adapterType = «lsilogic» ddb.geometry.cylinders = «17884» ddb.geometry.heads = «255» ddb.geometry.sectors = «63» ddb.longContentID = «c78bccbfd4724f0ee20a1ef2829544ab» ddb.thinProvisioned = «0» ddb.uuid = «60 00 C2 98 20 ac 05 4a-e5 39 e4 40 e8 a2 d8 d0» ddb.virtualHWVersion = «8»
vi VM_name.vmdk
Я ставлю значение немного больше, чем размер, вычисленный по методике выше (41943040 (20 Гб*1024*1024*1024 / 512)), на всякий случай.
Также возможно только уменьшить размер файла виртуальной машины, путем удаления нулевых блоков.
Для этого:
cat /dev/zero > /file cd / rm file
vmkfstools -K VM_name.vmdk
Надо отметить, что утилита vmkfstools, запущенная с ключом -K, еще и может преобразовать обычный диск (zeroedthick или eagerzeroedthick) в thin disk с вычищением нулевых блоков и, соответственно, уменьшением размера vmdk.
P.S. Надеюсь данная статья будет кому-то полезной. Во всяком случае, я потратил много времени, прежде чем мне удалось корректно уменьшить размер тонкого диска.