仮想ハードディスクをマウントする方法は?


23

Ubuntuに仮想ハードディスク(VHD、HDD、VDI、VMDK)をマウントすることは可能ですか?これをどのように行うことができますか?


1
Googleを検索しましたか?VMDK、VDI、VHD、およびrawディスクイメージファイルをUbuntu にマウントするためのガイドが豊富にあります。
サーチャーロ

2
私はグーグルを検索しましたが、あなたの結果のように見つかりませんでした。ありがとう:)
Snow Leopard

上記のVHDのUbuntugeekリンクが失敗しました。
K7AAY

回答:


16

この記事によると:

Linuxおよびその他のUnixライクホストは、ループバックデバイスを使用して、raw形式タイプで作成されたイメージをマウントできます。ルートログインから(または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.

グーグルで試してください、私は1 で(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

「Qemuの方法」コマンドと同じです。国境はありません!


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

VMDKバージョン3は qemuでマウントできるように読み取り専用である必要がある-rため、このオプションを使用しています。

そして、私はそれをマウントします

mount /dev/nbd1p1 /mnt

時々「マウント:特別なデバイス/ dev / nbd0p1は存在しません」nbd1という理由で使用しますnbd0

.ovaの場合

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

上記は.vmdkディスクを抽出し、それをマウントします。


2

vmdkvhdファイルについては、kpartx以下のコマンドでのみ幸運になりました:

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

出力を確認してください。losetupループデバイスが含まれている必要があります/dev/loop0。またsudo blkid、partitionを確認し/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.