¿Cómo montar un disco duro virtual?

23

¿Es posible montar un disco duro virtual (VHD, HDD, VDI, VMDK) en Ubuntu? ¿Cómo se puede hacer esto?

Leopardo de nieve
fuente
1
¿Has buscado en Google? Abunda de guías sobre el montaje de VMDK, VDI, VHD y archivos de imagen de disco sin formato en Ubuntu.
SirCharlo
2
He buscado en google, pero no encontré como su resultado. Gracias :)
Snow Leopard
El enlace de Ubuntugeek para VHD anterior falló.
K7AAY

Respuestas:

16

De acuerdo con este artículo :

Linux y otros hosts similares a Unix pueden montar imágenes creadas con el tipo de formato sin formato utilizando un dispositivo de bucle invertido. Desde un inicio de sesión raíz (o usando sudo), monte un loopback con un desplazamiento de 32,256.

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

Para otros tipos de imágenes qemu, puede usar qemu-nbd

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

Además, por lo general, puede convertir imágenes de un formato a otro.

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.

Intente googlear, he encontrado una solución para (VirtualBox) .VDI en un segundo :

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

Lo mismo que los comandos "Qemu's way". ¡Sin Fronteras!

oso polar en la blanca nieve
fuente
6

Esto está en Ubuntu 16.04 .

Como root:

Instalar y montar usando affuse.

apt-get install afflib-tools

affuse /path/file.vmdk /mnt/vmdk

Verifique el tamaño del sector

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

Multiplica el sector y el sector de inicio. Por ejemplo, sería 2048 * 512

echo 2048*512 | bc
1048576

Montar usando ese desplazamiento

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

El disco ahora debe estar montado y legible en / mnt / vmdisk

MetalGodwin
fuente
1
¡¡¡Excelente!!! lo hizo por mí en Ubuntu 17.10
cljk
Esto no funciona para mí en 16.04.5 para mi .vmdk ... funciona a través del paso fdisk, y la partición principal de mi VM, la que quiero montar, también comienza en 2048, pero mount -o ro,loop,offset=1048576 ./foo.raw /mnt/foofalla only root can use "--options" option. Con sudo, falla con failed to setup loop device: Permission denied.
Theodore Murdock
3

También puedes usar qemu:

por .vdi

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

si no están instalados, puede instalarlos (en Ubuntu es este comando)

sudo apt install qemu-utils

y luego montarlo

mount /dev/nbd1p1 /mnt

por .vmdk

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

tenga en cuenta que uso la opción -rporque VMDK versión 3 debe ser de solo lectura para que qemu pueda montarlo

y luego lo monte

mount /dev/nbd1p1 /mnt

Lo uso nbd1porque a nbd0veces da 'mount: dispositivo especial / dev / nbd0p1 no existe'

Para .ova

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

Lo anterior extraerá el .vmdkdisco y luego lo montará.

Eduard Florinescu
fuente
2

Para vmdky vhdarchivos, solo tuve suerte con el kpartxsiguiente comando:

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

Verifique la salida para losetup, debe contener un dispositivo de bucle /dev/loop0; también verifique la sudo blkidpartición /dev/mapper/loop0p1, luego úsela en el comando de montaje:

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

Donde / mnt / vmdk es su punto de montaje, que se creará sudo mkdir /mnt/vmdksi no existe.

fuente en commandlinefu.com (comando kpartx y mount)

Desmontar con:

sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>
rosch
fuente
¡Acabo de probar este método con vhd, funciona!
No