Come montare un disco rigido virtuale?


23

È possibile montare un disco rigido virtuale (VHD, HDD, VDI, VMDK) su Ubuntu? Come si può fare?


1
Hai cercato su Google? Abbonda di guide su come montare VMDK, VDI, VHD e file di immagini di dischi grezzi su Ubuntu.
SirCharlo,

2
Ho cercato su Google, ma non ho trovato il tuo risultato simile. Grazie :)
Snow Leopard,

Collegamento Ubuntugeek per VHD sopra fallito.
K7AY

Risposte:


16

Secondo questo articolo :

Linux e altri host simili a Unix possono montare immagini create con il tipo di formato non elaborato utilizzando un dispositivo di loopback. Da un login root (o usando sudo), montare un loopback con un offset di 32.256.

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

Per altri tipi di immagini qemu, è possibile utilizzare qemu-nbd

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

Inoltre, in genere, puoi convertire l'immagine da un formato all'altro.

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.

Prova a google, ho trovato la soluzione per (VirtualBox) .VDI in un secondo :

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 stesso dei comandi "Qemu's way". Senza confini!


6

Questo è su Ubuntu 16.04 .

Come root:

Installa e monta usando affuse.

apt-get install afflib-tools

affuse /path/file.vmdk /mnt/vmdk

Controlla le dimensioni del settore

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

Moltiplicare settori e startector. Nell'esempio sarebbe 2048 * 512

echo 2048*512 | bc
1048576

Montare usando quell'offset

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

Il disco ora dovrebbe essere montato e leggibile su / mnt / vmdisk


1
grande!!! l'ha fatto per me su Ubuntu 17.10
cljk il

Questo non funziona per me su 16.04.5 per il mio .vmdk ... funziona attraverso il passaggio fdisk e anche la partizione principale della mia VM, quella che voglio montare, inizia a 2048, ma mount -o ro,loop,offset=1048576 ./foo.raw /mnt/foofallisce only root can use "--options" option. Con sudo, fallisce con failed to setup loop device: Permission denied.
Theodore Murdock,

3

Puoi anche usare qemu:

Per .vdi

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

se non sono installate puoi installarle (su Ubuntu è questo comando)

sudo apt install qemu-utils

e poi montalo

mount /dev/nbd1p1 /mnt

Per .vmdk

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

notare che uso l'opzione -rperché VMDK versione 3 deve essere letta solo per poter essere montata da qemu

e poi lo monto

mount /dev/nbd1p1 /mnt

Io uso nbd1perché a nbd0volte dà 'mount: dispositivo speciale / dev / nbd0p1 non esiste'

Per .ova

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

Quanto sopra estrae il .vmdkdisco e quindi lo monta.


2

Per vmdke vhdfile, sono stato fortunato solo con il kpartxcomando seguente:

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

Controllare l'output per il losetup, dovrebbe contenere il dispositivo loop /dev/loop0; controlla anche la sudo blkidpartizione /dev/mapper/loop0p1, quindi usala nel comando mount:

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

Dove / mnt / vmdk è il punto di montaggio, da creare sudo mkdir /mnt/vmdkse inesistente.

fonte su commandlinefu.com (kpartx e comando mount)

Smonta con:

sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>

Ho appena testato questo metodo con vhd, funziona!
N.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.