Для одной виртуалки в VMWare Workstation использовался для виртуального диска не файл, а том lvm. Сейчас захотел его как-то преобразовать в файл, и в голову стали лезть какие-то бредовые мысли про пересоздание виртуалки. Причина тому - в workstation никаких функций работы с виртуальным диском на физическом носителе нет.
Но оказалось, что есть тулза vmware-vdiskmanager
, которая позволяет, в том числе, конвертировать виртуальные диски. Она ставится вместе с vmware ws.
vmware-vdiskmanager -r testP.vmdk -t 2 converted.vmdk
Собственно, это просто информационная заметка
Ниже diff двух vmdk файлов. Это по сути конфиги для образа диска
$ diff -y testP.vmdk converted.vmdk
# Disk DescriptorFile # Disk DescriptorFile
version=1 version=1
encoding="UTF-8" encoding="UTF-8"
CID=ef0c00b2 CID=ef0c00b2
parentCID=ffffffff parentCID=ffffffff
isNativeSnapshot="no" isNativeSnapshot="no"
createType="fullDevice" | createType="monolithicFlat"
# Extent description # Extent description
RW 3072000 FLAT "/dev/vgeee/testlv" 0 | RW 3072000 FLAT "converted-flat.vmdk" 0
# The Disk Data Base # The Disk Data Base
#DDB #DDB
ddb.adapterType = "lsilogic" ddb.adapterType = "lsilogic"
> ddb.deletable = "true"
ddb.geometry.biosCylinders = "750" ddb.geometry.biosCylinders = "750"
ddb.geometry.biosHeads = "128" ddb.geometry.biosHeads = "128"
ddb.geometry.biosSectors = "32" ddb.geometry.biosSectors = "32"
ddb.geometry.cylinders = "750" ddb.geometry.cylinders = "750"
ddb.geometry.heads = "128" ddb.geometry.heads = "128"
ddb.geometry.sectors = "32" ddb.geometry.sectors = "32"
ddb.longContentID = "f6c82c29dbaf16927cbc135cef0c00b2" ddb.longContentID = "f6c82c29dbaf16927cbc135cef0c00b2"
ddb.uuid = "60 00 C2 9b 4a 0c 72 9a-d6 74 9d 4e 37 66 c0 e8" | ddb.uuid = "60 00 C2 94 3f e4 57 10-67 d8 69 56 86 11 1e 58"
ddb.virtualHWVersion = "12" ddb.virtualHWVersion = "12"
Как видно, отличие только в 'createType', и 'ddb.uuid'. Что и требуется.
Для интересущихся pdf-ка c форматом vmdk https://www.vmware.com/support/developer/vddk/vmdk_50_technote.pdf