Як встановити віртуальний жорсткий диск?


23

Чи можливо встановити віртуальний жорсткий диск (VHD, HDD, VDI, VMDK) на Ubuntu? Як це можна зробити?


1
Ви шукали Google? Він рясніє путівниками по монтажу VMDK, VDI, VHD та файлів зображень із сирої дискової системи на Ubuntu.
SirCharlo

2
Я шукав google, але не знайшов, як ваш результат. Дякую :)
Snow Leopard

Помилка Ubuntugeek для VHD вище не вдалася.
K7AAY

Відповіді:


16

Відповідно до цієї статті :

Linux та інші хости, схожі на Unix, можуть монтувати зображення, створені у форматі необробленого формату, використовуючи пристрій із зворотним зв'язком. З кореневим логіном (або за допомогою 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.

Спробуйте google, я знайшов рішення для (VirtualBox) .VDI за одну секунду :

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

Те саме, що команди "Шлях Кему". Ніяких кордонів!


6

Це на Ubuntu 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
чудово !!! зробив це для мене на Ubuntu 17.10
cljk

Це не працює 16.04.5 для мого .vmdk ... працює через крок 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.
Теодор Мердок

3

Ви також можете використовувати qemu:

Для .vdi

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

якщо вони не встановлені, ви можете встановити їх (на Ubuntu це команда)

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

зауважте, що я використовую варіант -r, тому що VMDK версії 3 потрібно читати лише для того, щоб можна було монтувати qemu

а потім я монтую його

mount /dev/nbd1p1 /mnt

Я використовую, nbd1тому що nbd0іноді дає "mount: спеціальний пристрій / dev / nbd0p1 не існує"

Для .ova

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

Вище буде витягнутий .vmdkдиск і потім встановити його.


2

Для vmdkі vhdфайлів, я тільки пощастило з kpartxкомандою нижче:

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

Перевірте вихід на наявність losetup, він повинен містити циклічний пристрій /dev/loop0; також перевірте sudo blkidнаявність розділу /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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.