webdevqa.jp.net

VMDKディスクイメージのマウント

Vmdk拡張子を持つ単一のvmwareディスクイメージファイルがあります

これをマウントして、すべてのパーティション(非表示のパーティションを含む)を探索しようとしています。

http://forums.opensuse.org/showthread.php/469942-mounting-virtual-box-machine-images-Host など、いくつかのガイドに従うことを試みました。

Vdfuseを使用してイメージをマウントできます

vdfuse -w -f windows.vmdk /mnt/

この後、1つのパーティションとディスク全体が表示されます

# ll /mnt/
total 41942016
-r-------- 1 te users 21474836480 Feb 28 14:16 EntireDisk
-r-------- 1 te users  1569718272 Feb 28 14:16 Partition1

引き続きガイドを使用して、EntireDiskまたはPartition1をマウントしようとします

mount -o loop,ro /mnt/Partition1 mnt2/

しかし、それは私にエラーを与えます 'マウント:ファイルシステムタイプを指定する必要があります'

正しいタイプを見つけようとして、私は試しました

dd if=/mnt/EntireDisk | file -
which outputs a ton of information but of note is:
/dev/stdin: x86 boot sector; partition 1: ....... FATs ....

だから私はvfatとしてマウントするのに疲れたが、それは私に与えた

mount: wrong fs type, bad option, bad superblock ...etc

何が間違っていますか?

新しいLinuxシステムには、コマンド「guestmount」があります。これをインストールした後、次のコマンドを実行してVMDKイメージ内の3番目のパーティションをマウントできます。

guestmount -a xyz.vmdk -m /dev/sda3 --ro /mnt/vmdk

または、イメージを自動検出してマウントする(信頼性が低い)には、次を試してください:

guestmount -a xyz.vmdk -i --ro /mnt/vmdk

フラグ--roは単にイメージを読み取り専用としてマウントすることに注意してください。イメージを読み書き可能としてマウントするには、フラグを--rwに置き換えます。


guestmountは、ディストリビューションごとに次のパッケージに含まれています。

  • Ubuntu:libguestfs-tools
  • OpenSuse:guestfs-tools
  • CentOS:libguestfs-tools-c
44
Thomas

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:special device/dev/nbd0p1 does not exist'

.ovaディスクの場合

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

上記は.vmdkディスクを抽出してからマウントします。

4

Affuseをインストールし、それを使用してマウントします。

affuse /path/file.vmdk /mnt/vmdk

Rawディスクイメージは/ 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にマウントされ、読み取り可能になります。

2
MetalGodwin

私は commandlinefu.com とてもいいから見つけて答えました:

kpartx -av <image-flat.vmdk>; mount -o /dev/mapper/loop0p1 /mnt/vmdk

次を実行して、イメージ内のLVMボリュームをアクティブ化することもできます。

vgchange -a y

そして、LVをイメージ内にマウントできます。

イメージをアンマウントするには、パーティション/ LVをアンマウントし、イメージのVGを非アクティブ化します

vgchange -a n <volume_group>

その後、実行します

kpartx -dv <image-flad.vmdk>

パーティションマッピングを削除します。

1
Ilya Bobyr

@Thomasの投稿にコメントすることはできません(38回の回答).

ERROR:  qemu-img: '' uses a vmdk feature which is not supported by this qemu version: VMDK version 

Vmdkmountを使用して.vmdkの未加工バージョンを生成してみてください

# vmdkmount {file}.vmdk  /ur/mount/path

マウントされたディレクトリ内にvmdk1ファイル(rawファイル)があります

ここで、guestmountを使用してvmdkをロードしてみてください

# guestmount -a vmdk1 -i --ro /ur/mount/path
0
ItsYou

Ntfsのソフトウェアパッケージはありますか?

試してみる

apt-get install ntfs-3g

debianベースのシステムで。

0
Jiang