Est-il possible de monter un disque dur virtuel (VHD, HDD, VDI, VMDK) sur Ubuntu? Comment cela peut-il être fait?
Est-il possible de monter un disque dur virtuel (VHD, HDD, VDI, VMDK) sur Ubuntu? Comment cela peut-il être fait?
Réponses:
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!
C'est sur 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
échoue avec only root can use "--options" option
. Avec sudo
, ça échoue avec failed to setup loop device: Permission denied
.
Vous pouvez également utiliser qemu:
.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
.vmdk
sudo modprobe nbd
sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk
notez que j'utilise l'option -r
car 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 nbd1
parce que nbd0
donne parfois 'mount: le périphérique spécial / dev / nbd0p1 n'existe pas'
tar -tf image.ova
tar -xvf image.ova
Ce qui précède va extraire le .vmdk
disque puis le monter.
Pour les fichiers vmdk
et vhd
, je n'ai eu de chance qu'avec la kpartx
commande 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 blkid
partition /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/vmdk
s'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>
vhd
, ça marche!