Jak zamontować wirtualny dysk twardy?

23

Czy na Ubuntu można zamontować wirtualny dysk twardy (VHD, HDD, VDI, VMDK)? Jak można to zrobić?

Pantera śnieżna
źródło
1
Czy przeszukiwałeś Google? Obfituje w przewodniki na temat montowania plików VMDK, VDI, VHD i surowych obrazów dysków na Ubuntu.
SirCharlo
2
Szukałem w Google, ale nie znalazłem podobnego do twojego wyniku. Dzięki :)
Snow Leopard
Link Ubuntugeek dla VHD powyżej nie powiódł się.
K7AAY

Odpowiedzi:

16

Zgodnie z tym artykułem :

Linux i inne hosty uniksopodobne mogą montować obrazy utworzone w formacie typu raw przy użyciu urządzenia loopback. Z loginu root (lub używając sudo) zamontuj sprzężenie zwrotne z przesunięciem 32 256.

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

W przypadku innych typów obrazów qemu możesz użyć qemu-nbd

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

Ponadto zwykle można konwertować obraz z jednego formatu na inny.

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.

Spróbuj google, znalazłem rozwiązanie dla (VirtualBox) .VDI w ciągu jednej sekundy :

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

To samo, co polecenia „Sposób Qemu”. Brak granic!

niedźwiedź polarny na białym śniegu
źródło
6

To jest na Ubuntu 16.04 .

Jako root:

Zainstaluj i zainstaluj za pomocą affuse.

apt-get install afflib-tools

affuse /path/file.vmdk /mnt/vmdk

Sprawdź rozmiar sektora

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

Pomnóż sektor i uruchomsektor. Na przykład będzie to 2048 * 512

echo 2048*512 | bc
1048576

Zamontuj używając tego przesunięcia

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

Dysk powinien być teraz zamontowany i czytelny na / mnt / vmdisk

MetalGodwin
źródło
1
świetny!!! zrobił to dla mnie na Ubuntu 17.10
cljk
To nie działa dla mnie 16.04.5 dla mojego .vmdk ... działa przez krok fdisk, a główna partycja mojej maszyny wirtualnej, ta, którą chcę zamontować, również zaczyna się od 2048, ale mount -o ro,loop,offset=1048576 ./foo.raw /mnt/fookończy się niepowodzeniem only root can use "--options" option. Z sudonie udaje się failed to setup loop device: Permission denied.
Theodore Murdock
3

Możesz także użyć qemu:

Dla .vdi

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

jeśli nie są zainstalowane, możesz je zainstalować (na Ubuntu jest to polecenie)

sudo apt install qemu-utils

a następnie zamontuj

mount /dev/nbd1p1 /mnt

Dla .vmdk

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

zauważ, że korzystam z opcji -r, ponieważ VMDK w wersji 3 musi być tylko do odczytu, aby móc ją zamontować przez qemu

a następnie montuję

mount /dev/nbd1p1 /mnt

Używam, nbd1ponieważ nbd0czasami daje „mount: specjalne urządzenie / dev / nbd0p1 nie istnieje”

Dla .ova

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

Powyższe spowoduje wyodrębnienie .vmdkdysku, a następnie jego zamontowanie.

Eduard Florinescu
źródło
2

Dla vmdki vhdplików, mam tylko szczęście z kpartxkomendy poniżej:

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

Sprawdź, czy dane wyjściowe losetuppowinny zawierać urządzenie pętli /dev/loop0; sprawdź także sudo blkidpartycję /dev/mapper/loop0p1, a następnie użyj jej w poleceniu mount:

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

Gdzie / mnt / vmdk jest punktem montowania, z którego należy utworzyć, sudo mkdir /mnt/vmdkjeśli nie istnieje.

źródło w commandlinefu.com (kpartx i polecenie mount)

Odmontuj za pomocą:

sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>
róż
źródło
Właśnie przetestowałem tę metodę vhd, działa!
N0rbert