Wie mounte ich eine virtuelle Festplatte?

23

Ist es möglich, eine virtuelle Festplatte (VHD, HDD, VDI, VMDK) auf Ubuntu zu mounten? Wie geht das?

Schneeleopard
quelle
1
Haben Sie schon bei Google gesucht? Es gibt eine Fülle von Anleitungen zum Mounten von VMDK-, VDI-, VHD- und Raw- Disk-Image-Dateien unter Ubuntu.
SirCharlo
2
Ich habe nach Google gesucht, aber ich habe Ihr Ergebnis nicht gefunden. Danke :)
Snow Leopard
Ubuntugeek-Link für VHD oben fehlgeschlagen.
K7AAY

Antworten:

16

Nach diesem Artikel :

Linux und andere Unix-ähnliche Hosts können Images, die mit dem Raw-Formattyp erstellt wurden, mit einem Loopback-Gerät mounten. Hängen Sie von einem Root-Login (oder mit sudo) einen Loopback mit einem Offset von 32.256 ein.

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

Für andere Arten von qemu-Bildern können Sie qemu-nbd verwenden

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

Außerdem können Sie normalerweise Bilder von einem Format in ein anderes konvertieren.

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.

Versuchen Sie zu googeln, ich habe die Lösung für (VirtualBox) .VDI in einer Sekunde gefunden :

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

Das Gleiche wie "Qemus Weg". Keine Grenzen!

Eisbär auf dem weißen Schnee
quelle
6

Dies ist auf Ubuntu 16.04 .

Als root:

Installieren und mit affuse montieren.

apt-get install afflib-tools

affuse /path/file.vmdk /mnt/vmdk

Überprüfen Sie die Sektorgröße

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

Sektorgröße und Startsektor multiplizieren. Im Beispiel wäre es 2048 * 512

echo 2048*512 | bc
1048576

Mit diesem Versatz montieren

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

Die Festplatte sollte nun in / mnt / vmdisk eingebunden und lesbar sein

MetalGodwin
quelle
1
toll!!! habe es für mich auf Ubuntu 17.10
Cljk 15.11.17
Dies funktioniert nicht für mich am 16.04.5 für meine .vmdk ... funktioniert über den fdisk-Schritt, und die Hauptpartition meiner VM, die ich mounten möchte, startet ebenfalls um 2048, mount -o ro,loop,offset=1048576 ./foo.raw /mnt/fooschlägt jedoch mit fehl only root can use "--options" option. Mit sudoscheitert es mit failed to setup loop device: Permission denied.
Theodore Murdock
3

Sie können auch qemu verwenden:

Zum .vdi

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

Wenn sie nicht installiert sind, können Sie sie installieren (unter Ubuntu ist dies der Befehl).

sudo apt install qemu-utils

und dann montieren

mount /dev/nbd1p1 /mnt

Zum .vmdk

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

Beachten Sie, dass ich die Option verwende -r, da VMDK Version 3 nur lesbar sein muss, um von qemu gemountet werden zu können

und dann montiere ich es

mount /dev/nbd1p1 /mnt

Ich benutze, nbd1weil nbd0manchmal gibt 'mount: special device / dev / nbd0p1 existiert nicht'

Für .ova

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

Mit dem obigen Befehl wird die .vmdkFestplatte extrahiert und dann gemountet.

Eduard Florinescu
quelle
2

Für vmdkund vhdDateien hatte ich nur mit dem folgenden kpartxBefehl Glück :

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

Überprüfen Sie die Ausgabe für losetup, es sollte Loop-Gerät enthalten /dev/loop0; Überprüfen Sie auch, ob sudo blkideine Partition vorhanden ist /dev/mapper/loop0p1, und verwenden Sie sie dann im Befehl mount:

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

Wobei / mnt / vmdk Ihr Einhängepunkt ist, der erstellt werden soll, sudo mkdir /mnt/vmdkwenn er nicht vorhanden ist.

source at commandlinefu.com (Befehl kpartx und mount)

Aushängen mit:

sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>
rosch
quelle
Habe gerade diese Methode mit getestet vhd, es funktioniert!
23.