I moved a VM folder containing the vmdk's from a Windows 10 Host to a Linux machine.
When opened the VM, I click con "play/start" button, the VM closes.
Looking at the VM settings I see vmplayer don't take the VM harddrive as valid:
"Unable to retrieve disk information: The file specified is not a virtual disk"
Trying to mount it using vmware-mount I get the same results:
vmware-mount -p Ubuntu\ 64-bit.vmdk
Failed to open disk: The specified file is not a virtual disk (16063)
Failed to get the list of partitions: The virtual disk specified is invalid.
I checked the md5 hashes to make sure there wasn't an error in the transfer. They are ok.
Since the error is instantaneous, I guess there is an error in the vmdk descriptor and not in the 4GB -s001.vmdk s002.vmdk etc..
I'm not sure If I need to change anything...
# file Ubuntu\ 64-bit.vmdk
Ubuntu 64-bit.vmdk: ASCII text
# cat Ubuntu\ 64-bit.vmdk
# Disk DescriptorFile
version=1
encoding="windows-1252"
CID=d8585e18
parentCID=ffffffff
createType="twoGbMaxExtentSparse"
# Extent description
RW 8323072 SPARSE "Ubuntu 64-bit-s001.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s002.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s003.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s004.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s005.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s006.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s007.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s008.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s009.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s010.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s011.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s012.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s013.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s014.vmdk"
RW 8323072 SPARSE "Ubuntu 64-bit-s015.vmdk"
RW 983040 SPARSE "Ubuntu 64-bit-s016.vmdk"
# The Disk Data Base
#DDB
ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "7832"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "d808a801bc288676fca9e7d1d8585e18"
ddb.toolsInstallType = "4"
ddb.toolsVersion = "10304"
ddb.uuid = "60 00 C2 92 4e c7 4b 7b-bd 7c 9b 65 e6 89 64 d1"
ddb.virtualHWVersion = "16"
Here are the files:
drwxr-xr-x 2 root root 4096 Mar 10 20:59 other-folder
-rwxrwxrwx 1 neo neo 4168613888 Mar 10 18:55 'Ubuntu 64-bit-s001.vmdk'
-rwxrwxrwx 1 neo neo 4224385024 Mar 10 19:02 'Ubuntu 64-bit-s002.vmdk'
-rwxrwxrwx 1 neo neo 4203937792 Mar 10 19:02 'Ubuntu 64-bit-s003.vmdk'
-rwxrwxrwx 1 neo neo 4205117440 Mar 10 19:09 'Ubuntu 64-bit-s004.vmdk'
-rwxrwxrwx 1 neo neo 4207411200 Mar 10 19:09 'Ubuntu 64-bit-s005.vmdk'
-rwxrwxrwx 1 neo neo 4212457472 Mar 10 19:15 'Ubuntu 64-bit-s006.vmdk'
-rwxrwxrwx 1 neo neo 4210688000 Mar 10 19:15 'Ubuntu 64-bit-s007.vmdk'
-rwxrwxrwx 1 neo neo 4209115136 Mar 10 19:22 'Ubuntu 64-bit-s008.vmdk'
-rwxrwxrwx 1 neo neo 4256497664 Mar 10 19:21 'Ubuntu 64-bit-s009.vmdk'
-rwxrwxrwx 1 neo neo 4218224640 Mar 10 19:28 'Ubuntu 64-bit-s010.vmdk'
-rwxrwxrwx 1 neo neo 4212785152 Mar 10 19:28 'Ubuntu 64-bit-s011.vmdk'
-rwxrwxrwx 1 neo neo 4223467520 Mar 10 19:35 'Ubuntu 64-bit-s012.vmdk'
-rwxrwxrwx 1 neo neo 4220911616 Mar 10 19:35 'Ubuntu 64-bit-s013.vmdk'
-rwxrwxrwx 1 neo neo 4208394240 Mar 10 19:41 'Ubuntu 64-bit-s014.vmdk'
-rwxrwxrwx 1 neo neo 4237950976 Mar 10 19:41 'Ubuntu 64-bit-s015.vmdk'
-rwxrwxrwx 1 neo neo 502333440 Mar 10 19:42 'Ubuntu 64-bit-s016.vmdk'
-rwxrwxrwx 1 neo neo 1190 Mar 10 19:41 'Ubuntu 64-bit.vmdk'
-rw-rw-rw- 1 root root 0 Mar 10 21:00 'Ubuntu 64-bit.vmsd'
-rwxrwxrwx 1 neo neo 3133 Mar 10 22:24 'Ubuntu 64-bit.vmx'
-rw-rw-rw- 1 root root 268 Mar 10 21:00 'Ubuntu 64-bit.vmxf'
drwxrwxrwx 2 root root 4096 Mar 10 22:37 'Ubuntu 64-bit.vmx.lck'
I tried moving some files to other folder, no change:
ls other-folder/
-rwxrwxrwx 1 neo neo 4294967296 Mar 10 18:56 'Ubuntu 64-bit-1886e651.vmem'
-rwxrwxrwx 1 neo neo 8684 Mar 10 19:41 'Ubuntu 64-bit.nvram'
-rw-rw-rw- 1 neo neo 0 Mar 10 19:41 'Ubuntu 64-bit.vmsd'
-rwxrwxrwx 1 neo neo 375 Mar 10 19:41 'Ubuntu 64-bit.vmxf'
-rwxrwxrwx 1 neo neo 10650974 Mar 10 19:41 vmmcores-1.gz
-rwxrwxrwx 1 neo neo 249543 Mar 10 19:41 vmware-0.log
-rwxrwxrwx 1 neo neo 273451 Mar 10 19:41 vmware-1.log
-rwxrwxrwx 1 neo neo 0 Mar 10 19:41 vmware-2.log
-rwxrwxrwx 1 neo neo 354837 Mar 10 19:43 vmware.log
-rwxrwxrwx 1 neo neo 5401166 Mar 10 19:44 vmware-vmx.dmp
Attempting to start the VM does not produce any logs. The "loading" window does not even appear. (all the vmware.log are old, from when the machine was on the windows host)
Versions:
VMware® Workstation 15 Player 15.5.1 build-15018445
Debian 10.3 (Linux 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64 GNU/Linux)
Any ideas?
How do the first 1536 bytes of "64-bit-s014.vmdk" look like?
Please run the hexdump command with the mentioned size, and if it contains binary data other than all zeroes, extract the file's metadata to a file using the dd command, and attach that file to your next reply. The size of the metadata equals the size of your newly creates test .vmdk files (e.g. "test4-s014.vmdk").
If the hexdump result shows only zeroes, you may - after backing up all of the VM's current files - replace "64-bit-s014.vmdk" with "test4-s014.vmdk". This should at least allow you to mount the virtual disk, to extract/backup important data.
André
Remove this lines:
# file Ubuntu\ 64-bit.vmdk
Ubuntu 64-bit.vmdk: ASCII text
# cat Ubuntu\ 64-bit.vmdk
in the descriptor vmdk and try again
sorry. Those lines are not in the file. but a copy/paste from the comand line.
I edited the post to make it more clear.
Are you sure the current host understands virtualHardware #16 ?
Hi. Thanks for the reply.
I really don't know what ddb.virtualHWVersion is, but if I create a new VM, the .vmdk generated contains that value in 16. So I guess its ok. Here is an example of the vmdk of a new VM:
# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=fffffffe
parentCID=ffffffff
createType="twoGbMaxExtentSparse"
# Extent description
RW 8323072 SPARSE "test4-s001.vmdk"
RW 8323072 SPARSE "test4-s002.vmdk"
RW 8323072 SPARSE "test4-s003.vmdk"
RW 8323072 SPARSE "test4-s004.vmdk"
RW 8323072 SPARSE "test4-s005.vmdk"
RW 8323072 SPARSE "test4-s006.vmdk"
RW 8323072 SPARSE "test4-s007.vmdk"
RW 8323072 SPARSE "test4-s008.vmdk"
RW 8323072 SPARSE "test4-s009.vmdk"
RW 8323072 SPARSE "test4-s010.vmdk"
RW 8323072 SPARSE "test4-s011.vmdk"
RW 8323072 SPARSE "test4-s012.vmdk"
RW 8323072 SPARSE "test4-s013.vmdk"
RW 8323072 SPARSE "test4-s014.vmdk"
RW 8323072 SPARSE "test4-s015.vmdk"
RW 8323072 SPARSE "test4-s016.vmdk"
RW 8323072 SPARSE "test4-s017.vmdk"
RW 8323072 SPARSE "test4-s018.vmdk"
RW 8323072 SPARSE "test4-s019.vmdk"
RW 8323072 SPARSE "test4-s020.vmdk"
RW 1310720 SPARSE "test4-s021.vmdk"
# The Disk Data Base
#DDB
ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "10443"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "c869008e330c006fd8b11c00fffffffe"
ddb.uuid = "60 00 C2 98 ef 11 14 a0-c8 48 3d f3 d1 a9 05 2e"
ddb.virtualHWVersion = "16"
Using vmware-mount does not return the error it returned with the VM from the original post.
# vmware-mount -p test4.vmdk
Failed to get partition list: Cannot read or parse the partition table on the virtual disk.
(It fails to get the partition list because its empty, there are no partitions. But it recognizes as a virtual disk correctly)
Please check the magic number of each test4-s00*.vmdk
To do that you run
hexdump -C -n 4 test4-s001.vmdk
All slices should start with KDMV
Thanks. Somehow one file got corrupted.
# hexdump -C -n 4 Ubuntu\ 64-bit-s001.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s002.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s003.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s004.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s005.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s006.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s007.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s008.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s009.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s010.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s011.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s012.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s013.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s014.vmdk
00000000 00 00 00 00 |....|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s015.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
# hexdump -C -n 4 Ubuntu\ 64-bit-s016.vmdk
00000000 4b 44 4d 56 |KDMV|
00000004
How do the first 1536 bytes of "64-bit-s014.vmdk" look like?
Please run the hexdump command with the mentioned size, and if it contains binary data other than all zeroes, extract the file's metadata to a file using the dd command, and attach that file to your next reply. The size of the metadata equals the size of your newly creates test .vmdk files (e.g. "test4-s014.vmdk").
If the hexdump result shows only zeroes, you may - after backing up all of the VM's current files - replace "64-bit-s014.vmdk" with "test4-s014.vmdk". This should at least allow you to mount the virtual disk, to extract/backup important data.
André
Thanks. Indeed it seems the file in question if completely empty.
$ <Ubuntu\ 64-bit-s014.vmdk-corrupted tr -d '\0' | read -n 1 || echo "All zeroes."
All zeroes.
I replaced that file with the test-s014.vmdk and the machine started to boot. The boot failed and went into fsck.
The fsck failed and I was asked to execute fsck manually.
I did, and selected "yes" to all the "fix?" questions the fsck prompts.
After finishing I rebooted.
Again I wasn't able to reach ubuntu login, but the good news is that I now I'm able to mount the vmdk with vmware-mount utility and access the files.
So I'll mark this issue as solved.
Thank you and also thanks continuum for the help.