Монтирование образа диска VMDK

У меня есть один файл образа диска vmware с расширением vmdk

Я пытаюсь смонтировать это и исследовать все разделы (включая скрытые).

Я пытался следовать нескольким руководствам, таким как: http://forums.opensuse.org/showthread.php/469942-mounting-virtual-box-machine-images-host

Я могу смонтировать образ с помощью vdfuse

vdfuse -w -f windows.vmdk /mnt/

После этого я вижу один раздел и весь диск выставлен

# ll /mnt/
total 41942016
-r-------- 1 te users 21474836480 Feb 28 14:16 EntireDisk
-r-------- 1 te users  1569718272 Feb 28 14:16 Partition1

Продолжая руководство, я пытаюсь смонтировать либо FullDisk, либо Partition1, используя

mount -o loop,ro /mnt/Partition1 mnt2/

Но это дает мне ошибку "mount: вы должны указать тип файловой системы"

Пытаясь найти правильный тип, я пытался

dd if=/mnt/EntireDisk | file -
which outputs a ton of information but of note is:
/dev/stdin: x86 boot sector; partition 1: ....... FATs ....

Так что я устал монтировать как Vfat, но это дало мне

mount: wrong fs type, bad option, bad superblock ...etc

Что я делаю неправильно?

6 ответов

Для более новых систем Linux есть команда 'guestmount'. После установки вы можете запустить следующую команду для монтирования третьего раздела в образе VMDK:

guestmount -a xyz.vmdk -m /dev/sda3 --ro /mnt/vmdk

Кроме того, для автоматического определения и монтирования образа (менее надежного) вы можете попробовать:

guestmount -a xyz.vmdk -i --ro /mnt/vmdk

Обратите внимание, что флаг --ro просто монтирует изображение только для чтения; чтобы смонтировать образ как для чтения-записи, просто замените его на флаг --rw,


guestmount содержится в следующих пакетах для каждого дистрибутива:

  • Ubuntu: libguestfs-tools
  • OpenSuse: гостевые инструменты
  • CentOS: libguestfs-tools-c

Вы также можете использовать qemu:

За .vdi

sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd1 ./linux_box/VM/image.vdi

если они не установлены, вы можете установить их (в Ubuntu эта команда)

sudo apt install qemu-utils

а затем смонтировать его

mount /dev/nbd1p1 /mnt

За .vmdk

sudo modprobe nbd
sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk

обратите внимание, что я использую опцию -r это потому, что VMDK версии 3 должен быть доступен только для чтения, чтобы его можно было смонтировать с помощью qemu

а потом я монтирую его

mount /dev/nbd1p1 /mnt

я использую nbd1 так как nbd0 иногда выдает 'mount: специального устройства /dev/nbd0p1 не существует'

Для.ova

tar -tf image.ova
tar -xvf image.ova

Выше будет извлекать .vmdk диск, а затем смонтировать это.

Установите affuse, затем подключите его.

affuse /path/file.vmdk /mnt/vmdk

Необработанный образ диска теперь находится в /mnt/vmdk. Проверьте размер сектора

fdisk -l /mnt/vmdk/file.vmdk.raw

# example

Disk file.vmdk.raw: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000da525

Device       Boot Start      End  Sectors Size Id Type
/mnt/vmdk/file.vmdk.raw1 *     2048 41943039 41940992  20G 83 Linux

Умножьте сектор и начальный сектор. В примере это будет 2048*512

echo 2048*512 | bc
1048576

Смонтировать, используя это смещение

mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk

Теперь диск должен быть смонтирован и доступен для чтения в /mnt/vmdisk

Я нашел и ответ от commandlinefu.com довольно приятно:

kpartx -av <image-flat.vmdk>; mount -o /dev/mapper/loop0p1 /mnt/vmdk

Вы также можете активировать тома LVM в образе, запустив

vgchange -a y

а затем вы можете установить LV внутри изображения.

Чтобы размонтировать образ, отключите раздел /LV, деактивируйте VG для образа.

vgchange -a n <volume_group>

затем беги

kpartx -dv <image-flad.vmdk>

удалить сопоставления разделов.

В этой статье вы можете найти ссылку для загрузки VMware Virtual Disk Development Kit (VDDK). После загрузки и установки:

vmware-mount -p path_to_vmdkпокажет разделы внутри файла VMDK. Например:

Nr      Start       Size Type Id Sytem                   
-- ---------- ---------- ---- -- ------------------------
 1       2048  461371392 BIOS 83 Linux

Тогда просто сделайте:

sudo vmware-mount path_to_vmdk 1 /mnt/mount_point

Я попытался guestmount, но это очень и очень медленно. Внизу он создает виртуальную машину, использует KVM и так далее. Сумасшедшие вещи, чертовски медленные.

Не разрешено комментировать пост @Thomas (ответ 38 upvotes). Я хотел бы сообщить следующему человеку, который может столкнуться со следующим кодом ошибки, сгенерированным из guestmount, когда использует qemu-img, как решить проблему.

ERROR:  qemu-img: '' uses a vmdk feature which is not supported by this qemu version: VMDK version 

Попробуйте сгенерировать сырую версию.vmdk, используя vmdkmount

# vmdkmount {file}.vmdk  /ur/mount/path

Внутри смонтированного каталога находится файл vmdk1 (ваш необработанный файл)

Теперь попробуйте загрузить vmdk, используя guestmount

# guestmount -a vmdk1 -i --ro /ur/mount/path

У вас есть пакет программного обеспечения для NTFS?

Пытаться

apt-get install ntfs-3g

в системах на основе Debian.

Другие вопросы по тегам