Comment monter un disque dur virtuel?


23

Est-il possible de monter un disque dur virtuel (VHD, HDD, VDI, VMDK) sur Ubuntu? Comment cela peut-il être fait?


1
Avez-vous recherché Google? Il regorge de guides sur le montage de fichiers d'image de disque VMDK, VDI, VHD et brut sur Ubuntu.
SirCharlo

2
J'ai recherché google, mais je n'ai pas trouvé comme votre résultat. Merci :)
Snow Leopard

Le lien Ubuntugeek pour le disque dur virtuel ci-dessus a échoué.
K7AAY

Réponses:


16

Selon cet article :

Linux et d'autres hôtes de type Unix peuvent monter des images créées avec le type de format brut à l'aide d'un périphérique de bouclage. À partir d'une connexion root (ou en utilisant sudo), montez un bouclage avec un décalage de 32 256.

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

Pour d'autres types d'images qemu, vous pouvez utiliser qemu-nbd

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

De plus, généralement, vous pouvez convertir l'image d'un format à un autre.

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.

Essayez de google, je suis trouvé une solution pour (VirtualBox) .VDI en une seconde :

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

Identique aux commandes "à la manière de Qemu". Pas de frontières!


6

C'est sur Ubuntu 16.04 .

En tant que root:

Installez et montez en utilisant l'affuse.

apt-get install afflib-tools

affuse /path/file.vmdk /mnt/vmdk

Vérifier la taille du secteur

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

Multipliez la taille du secteur et le secteur de démarrage. Par exemple, ce serait 2048 * 512

echo 2048*512 | bc
1048576

Monter en utilisant ce décalage

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

Le disque doit maintenant être monté et lisible sur / mnt / vmdisk


1
génial!!! l'a fait pour moi sur Ubuntu 17.10
cljk

Cela ne fonctionne pas pour moi le 16.04.5 pour mon .vmdk ... fonctionne à travers l'étape fdisk, et la partition principale de ma VM, celle que je veux monter, commence également à 2048, mais mount -o ro,loop,offset=1048576 ./foo.raw /mnt/fooéchoue avec only root can use "--options" option. Avec sudo, ça échoue avec failed to setup loop device: Permission denied.
Theodore Murdock,

3

Vous pouvez également utiliser qemu:

Pour .vdi

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

s'ils ne sont pas installe vous pouvez les installer (sur Ubuntu est cette commande)

sudo apt install qemu-utils

puis montez-le

mount /dev/nbd1p1 /mnt

Pour .vmdk

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

notez que j'utilise l'option -rcar la version 3 de VMDK doit être en lecture seule pour pouvoir être montée par qemu

puis je le monte

mount /dev/nbd1p1 /mnt

J'utilise nbd1parce que nbd0donne parfois 'mount: le périphérique spécial / dev / nbd0p1 n'existe pas'

Pour .ova

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

Ce qui précède va extraire le .vmdkdisque puis le monter.


2

Pour les fichiers vmdket vhd, je n'ai eu de chance qu'avec la kpartxcommande ci-dessous:

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

Vérifiez la sortie pour le losetup, il doit contenir un périphérique de boucle /dev/loop0; vérifiez également la sudo blkidpartition /dev/mapper/loop0p1, puis utilisez-la dans la commande de montage:

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

Où / mnt / vmdk est votre point de montage, à créer avec sudo mkdir /mnt/vmdks'il n'existe pas.

source sur commandlinefu.com (commande kpartx et mount)

Démonter avec:

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

Je viens de tester cette méthode avec vhd, ça marche!
N0rbert
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.