가상 하드 디스크를 마운트하는 방법?


23

Ubuntu에 가상 하드 디스크 (VHD, HDD, VDI, VMDK)를 마운트 할 수 있습니까? 이것을 어떻게 할 수 있습니까?


1
Google을 검색 했습니까? Ubuntu에 VMDK, VDI, VHD 및 원시 디스크 이미지 파일을 마운트하는 데 필요한 가이드가 많이 있습니다.
SirCharlo

2
Google을 검색했지만 결과가 마음에 들지 않았습니다. 감사합니다 :)
Snow Leopard

위의 VHD에 대한 Ubuntugeek 링크가 실패했습니다.
K7AAY

답변:


16

기사 에 따르면 :

Linux 및 기타 유닉스 계열 호스트는 루프백 장치를 사용하여 원시 형식 유형으로 작성된 이미지를 마운트 할 수 있습니다. 루트 로그인 (또는 sudo 사용)에서 오프셋이 32,256 인 루프백을 마운트하십시오.

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

다른 유형의 qemu 이미지의 경우 qemu-nbd를 사용할 수 있습니다.

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

또한 일반적으로 이미지를 한 형식에서 다른 형식으로 변환 할 수 있습니다.

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.

구글 시도, 나는 (VirtualBox) .VDI에 대한 해결책을 1 안에 발견했습니다 .

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

"Qemu 's way"명령과 동일합니다. 국경이 없습니다!


6

이에 우분투 16.04 .

루트로 :

affuse를 사용하여 설치 및 마운트하십시오.

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

섹터 크기와 스타터 섹터를 곱하십시오. 예를 들어 2048 * 512입니다.

echo 2048*512 | bc
1048576

해당 오프셋을 사용하여 마운트

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

디스크는 이제 / mnt / vmdisk에 마운트되고 읽을 수 있어야합니다


1
큰!!! 우분투 17.10에 나를 위해 그것을 했어
cljk

이것은 .vmdk의 16.04.5에서 작동하지 않습니다 ... fdisk 단계를 통해 작동하며 마운트하려는 VM의 기본 파티션도 2048에서 시작되지만 mount -o ro,loop,offset=1048576 ./foo.raw /mnt/foo실패합니다 only root can use "--options" option. 으로 sudo, 그것은 실패합니다 failed to setup loop device: Permission denied.
Theodore Murdock

3

qemu를 사용할 수도 있습니다.

에 대한 .vdi

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

그들이 설치되어 있지 않으면 설치할 수 있습니다 (Ubuntu 에서이 comand입니다)

sudo apt install qemu-utils

그리고 그것을 마운트

mount /dev/nbd1p1 /mnt

에 대한 .vmdk

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

VMDK 버전 3은 qemu에 의해 마운트 될 수 있도록 읽기 전용이어야-r 하기 때문에 옵션 을 사용합니다.

그런 다음 마운트합니다

mount /dev/nbd1p1 /mnt

내가 사용 nbd1하기 때문에 nbd0때로는 '특별한 장치 / dev / nbd0p1 존재하지 않는 마운트'제공

.ova의 경우

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

위의 .vmdk디스크 를 추출하고 마운트합니다.


2

파일 vmdkvhd파일에 대해서는 kpartx아래 명령으로 운이 좋았습니다 .

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

출력을 확인 losetup은 루프 장치를 포함한다 /dev/loop0; 또한 sudo blkidpartition 을 확인한 /dev/mapper/loop0p1다음 mount 명령에서 사용하십시오.

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

여기서 / mnt / vmdk는 마운트 포인트이며 sudo mkdir /mnt/vmdk존재하지 않는 경우 작성됩니다 .

commandlinefu.com의 소스 (kpartx 및 mount 명령)

마운트 해제 :

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

방금이 방법을 테스트 vhd했지만 작동합니다!
N0rbert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.