Как смонтировать виртуальный жесткий диск?

23

Можно ли смонтировать виртуальный жесткий диск (VHD, HDD, VDI, VMDK) в Ubuntu? Как это может быть сделано?

Снежный барс
источник
1
Вы искали Google? Он изобилует руководствами по монтированию VMDK, VDI, VHD и файлов необработанных образов дисков в Ubuntu.
SirCharlo
2
Я искал в Google, но я не нашел, как ваш результат. Спасибо :)
Снежный барс
Ссылка Ubuntugeek для VHD выше не удалась.
K7AAY

Ответы:

16

Согласно этой статье :

Linux и другие Unix-подобные хосты могут монтировать образы, созданные в необработанном формате, с помощью устройства обратной связи. Из имени пользователя root (или с помощью sudo) смонтируйте петлю со смещением 32 256.

mount -o loop,offset=32256 /path/to/image.img /mnt/mountpoint

Для других типов изображений qemu вы можете использовать qemu-nbd

modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 image.qcow2
partprobe /dev/nbd0
mount /dev/nbd0p1 /mnt/image

Плюс, как правило, вы можете конвертировать изображения из одного формата в другой.

raw - (default) the raw format is a plain binary image of the disc 
       image, and is very portable. 
       On filesystems that support sparse files, 
       images in this format only use the 
       space actually used by the data recorded in them.
cloop -     Compressed Loop format, mainly used for reading Knoppix 
       and similar live CD image formats
cow - copy-on-write format, supported for historical reasons only and
       not available to QEMU on Windows
qcow - the old QEMU copy-on-write format, supported for 
       historical reasons and superseded by qcow2
qcow2 - QEMU copy-on-write format with a range of special features, 
       including the ability to take multiple snapshots, smaller 
       images on filesystems that don't support sparse files, 
       optional AES encryption, and optional zlib compression
vmdk - VMware 3 & 4, or 6 image format, for exchanging images 
       with that product
vdi - VirtualBox 1.1 compatible image format, for exchanging 
       images with VirtualBox.

Попробуйте Google, я нашел решение для (VirtualBox) .VDI в одну секунду :

modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 /path/to/some.vdi
mount -o loop /dev/nbd0p1 /mnt
# do stuff
umount /mnt
qemu-nbd -d /dev/nbd0
rmmod nbd

Так же, как команды "Qemu's way". Нет границ!

белый медведь на белом снегу
источник
6

Это на Ubuntu 16.04 .

Как корень:

Установите и смонтируйте используя affuse.

apt-get install afflib-tools

affuse /path/file.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

MetalGodwin
источник
1
отличный!!! сделал это для меня на Ubuntu 17.10
cljk
Это не работает для меня 16.04.5 для моего .vmdk ... работает через шаг fdisk, и основной раздел моей виртуальной машины, тот, который я хочу смонтировать, также начинается в 2048, но mount -o ro,loop,offset=1048576 ./foo.raw /mnt/fooне работает с only root can use "--options" option. С sudoэтим не получается failed to setup loop device: Permission denied.
Теодор Мердок
3

Вы также можете использовать 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диск, а затем смонтирует его.

Эдуард Флоринеску
источник
2

Для vmdkи vhdфайлов, я только повезло с kpartxкомандой ниже:

sudo kpartx -a -v <image-flat.vmdk>

Проверьте вывод на наличие в losetupнем петлевого устройства /dev/loop0; также проверьте sudo blkidраздел /dev/mapper/loop0p1, затем используйте его в команде mount:

sudo mount -o rw /dev/mapper/loop0p1 /mnt/vmdk

Где / mnt / vmdk - это ваша точка монтирования, которую нужно создать, sudo mkdir /mnt/vmdkесли она не существует.

Исходный код на commandlinefu.com (команда kpartx и mount)

Размонтировать с помощью:

sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>
Rosch
источник
Только что проверил этот метод vhd, он работает!
Ноберт