Como montar um disco rígido virtual?

23

É possível montar um disco rígido virtual (VHD, HDD, VDI, VMDK) no Ubuntu? Como isso pode ser feito?

Leopardo da neve
fonte
1
Você pesquisou no Google? Ele é repleto de guias sobre a montagem de arquivos de imagem VMDK, VDI, VHD e disco bruto no Ubuntu.
SirCharlo
2
Pesquisei no google, mas não encontrei o seu resultado. Obrigado :)
Snow Leopard
O link Ubuntugeek para VHD acima falhou.
K7AAY

Respostas:

16

De acordo com este artigo :

O Linux e outros hosts semelhantes ao Unix podem montar imagens criadas com o tipo de formato bruto usando um dispositivo de loopback. Em um login raiz (ou usando o sudo), monte um loopback com um deslocamento de 32.256.

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

Para outros tipos de imagens qemu, você pode usar qemu-nbd

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

Além disso, geralmente você pode converter imagens de um formato para outro.

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.

Tente google, eu encontrei solução para (VirtualBox) .VDI em um segundo :

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

O mesmo que os comandos "caminho do Qemu". Sem Fronteiras!

urso polar na neve branca
fonte
6

Isso está no Ubuntu 16.04 .

Como raiz:

Instale e monte usando affuse.

apt-get install afflib-tools

affuse /path/file.vmdk /mnt/vmdk

Verifique o tamanho do setor

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

Multiplique setoresize e setor de inicialização. Por exemplo, seria 2048 * 512

echo 2048*512 | bc
1048576

Monte usando esse deslocamento

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

O disco agora deve estar montado e legível em / mnt / vmdisk

MetalGodwin
fonte
1
ótimo!!! fiz isso por mim no Ubuntu 17.10
cljk 15/11
Isso não está funcionando para mim no 16.04.5 para o meu .vmdk ... funciona na etapa fdisk, e a partição principal da minha VM, a que eu quero montar, também começa em 2048, mas mount -o ro,loop,offset=1048576 ./foo.raw /mnt/foofalha only root can use "--options" option. Com sudo, falha com failed to setup loop device: Permission denied.
Theodore Murdock
3

Você também pode usar o qemu:

Para .vdi

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

se eles não estiverem instalados, você pode instalá-los (no Ubuntu é este comando)

sudo apt install qemu-utils

e depois monte

mount /dev/nbd1p1 /mnt

Para .vmdk

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

note que eu uso a opção -rporque o VMDK versão 3 deve ser somente leitura para poder ser montado pelo qemu

e depois eu montei

mount /dev/nbd1p1 /mnt

Eu uso nbd1porque nbd0às vezes dá 'mount: dispositivo especial / dev / nbd0p1 não existe'

Para .ova

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

O acima irá extrair o .vmdkdisco e depois montá-lo.

Eduard Florinescu
fonte
2

Para arquivos vmdke vhd, tive sorte apenas com o kpartxcomando abaixo:

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

Verifique a saída para losetup, ela deve conter um dispositivo de loop /dev/loop0; verifique também sudo blkida partição /dev/mapper/loop0p1e use-a no comando mount:

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

Onde / mnt / vmdk é o seu ponto de montagem, a ser criado com sudo mkdir /mnt/vmdk se não existir.

fonte em commandlinefu.com (comando kpartx and mount)

Desmonte com:

sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>
rosch
fonte
Acabei de testar esse método com vhd, ele funciona!
N0rbert