Можно ли смонтировать виртуальный жесткий диск (VHD, HDD, VDI, VMDK) в Ubuntu? Как это может быть сделано?
Можно ли смонтировать виртуальный жесткий диск (VHD, HDD, VDI, VMDK) в Ubuntu? Как это может быть сделано?
Ответы:
Согласно этой статье :
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". Нет границ!
Это на Ubuntu 16.04 .
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
echo 2048*512 | bc
1048576
mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk
mount -o ro,loop,offset=1048576 ./foo.raw /mnt/foo
не работает с only root can use "--options" option
. С sudo
этим не получается failed to setup loop device: Permission denied
.
Вы также можете использовать 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 не существует»
tar -tf image.ova
tar -xvf image.ova
Вышеизложенное извлечет .vmdk
диск, а затем смонтирует его.
Для 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>
vhd
, он работает!