Montarea imaginii discului VMDK (Programare, Mount, Criminalistică Informatică, Disc Virtual, Vmdk)

Fără mine este doar Aweso a intrebat.

Am un singur fișier imagine de disc vmware cu extensia vmdk

Încerc să o montez și să explorez toate partițiile (inclusiv cele ascunse).

Am încercat să urmez mai multe ghiduri, cum ar fi : http://forums.opensuse.org/showthread.php/469942-mounting-virtual-box-machine-images-host

Sunt capabil să montez imaginea folosind vdfuse

vdfuse -w -f windows.vmdk /mnt/

După aceasta, pot vedea o partiție și un întreg disc expus

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

Continuând cu ghidul, încerc să montez fie EntireDisk, fie Partition1 folosind

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

Dar asta îmi dă eroarea „mount: you must specify a filesystem type” (montare: trebuie să specificați un tip de sistem de fișiere)

În încercarea de a găsi tipul corect am încercat

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

Așa că am încercat să montez ca vfat, dar asta mi-a dat

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

Ce fac greșit?

Comentarii

  • Ați încercat ntfs? Ați încercat fdisk /mnt/EntireDisk sau gparted /mnt/EntireDisk și te-ai uitat la partițiile de acolo? Apar corect? –  > Por voidlogic.
  • fdisk a returnat: ‘WARNING: GPT detected on ‘…’. The util fdisk doesnt support GPT’. gparted îmi arată că există 4 partiții, dar toate nu se initalizează. Acesta listează mai multe pachete necesare pentru ntfs și fat32 de care aș putea avea nevoie, așa că le voi instala și voi vedea dacă voi obține ceva…  > Por Fără mine este doar Aweso.
  • Încercați să instalați ntfs-3g –  > Por voidlogic.
  • De asemenea, ați putea dori să mutați această întrebare pe serverfault.com, pun pariu că ați primi mai mult ajutor acolo, deoarece aceasta nu este cu adevărat o întrebare de dezvoltare de software sau de informatică. –  > Por voidlogic.
7 răspunsuri
Thomas

Pentru sistemele Linux mai noi, puteți utiliza guestmount pentru a monta a treia partiție în cadrul unei imagini VMDK:

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

Alternativ, pentru a autodetecta și monta o imagine (mai puțin fiabilă), puteți încerca:

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

Rețineți că indicatorul --ro montează pur și simplu imaginea ca fiind doar de citire; pentru a monta imaginea ca fiind de citire-scriere, trebuie doar să îl înlocuiți cu flag-ul --rw.

Instalare

guestmount este conținută în următoarele pachete pentru fiecare distribuție:

  • Ubuntu: libguestfs-tools
  • OpenSuse: guestfs-tools
  • CentOS / Fedora: libguestfs-tools-c

Depanare

error: could not create appliance through libvirt

$ guestmount -a file.vmdk -i --ro /mnt/guest
libguestfs: error: could not create appliance through libvirt.

Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct

Original error from libvirt: Cannot access backing file '/path/to/file.vmdk' of storage file '/tmp/libguestfssF6WKX/overlay1.qcow2' (as uid:107, gid:107): Permission denied [code=38 int1=13]

Soluție: utilizați LIBGUESTFS_BACKEND=direct, , așa cum este sugerat:

LIBGUESTFS_BACKEND=direct guestmount -a file.vmdk -i --ro /mnt/guest

fusermount: user has no write access to mountpoint

LIBGUESTFS_BACKEND=direct guestmount -a file.vmdk -i --ro /mnt/guest/
fusermount: user has no write access to mountpoint /mnt/guest
libguestfs: error: fuse_mount failed: /mnt/guest/, see error messages above

Soluție: utilizați sudo, , sau modificați permisiunile fișierelor pe punctul de montare

Comentarii

  • Este foarte util. Oricum, a trebuit să folosesc sudo și să ajung la director ca root pentru a face ca acest lucru să funcționeze. –  > Por Evan.
  • Acest lucru a funcționat pentru mine, cu toate că -m argumentul are nevoie de mai multe explicații. De la guestmount pagina de manual: Mount the named partition or logical volume on the given mountpoint in the guest (this has nothing to do with mountpoints in the host).. Am constatat că montarea primei partiții cu /dev/sda1 a funcționat, chiar dacă gazda avea propriul său sistem /dev/sda1 –  > Por Kryten.
  • Pentru sistemele debian și proxmox este, de asemenea, pachetul libguestfs-tools -.  > Por sneaky.
  • Nu înțeleg ce înseamnă -m opțiune, dar -i a funcționat bine. De ce este -m /dev/xxx necesară? –  > Por guettli.
Eduard Florinescu

Puteți folosi și qemu:

Pentru .vdi discuri

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

dacă nu sunt instalate, le puteți instala (emițând această comandă în Ubuntu)

sudo apt install qemu-utils

și apoi să le montați cu:

mount /dev/nbd1p1 /mnt

Pentru .vmdk discuri

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

observați că folosesc opțiunea -r, , asta pentru că VMDK versiunea 3 trebuie să fie numai pentru citire pentru a putea fi montate de qemu

și apoi îl montez cu

mount /dev/nbd1p1 /mnt

Eu folosesc nbd1, , deoarece nbd0 uneori dă: ‘mount: special device /dev/nbd0p1 does not exist’

Pentru .ova discuri

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

Cele de mai sus vor extrage .vmdk discul și apoi îl va monta.

Comentarii

  • Informații suplimentare despre montarea arhivelor și a unităților virtuale: unix.stackexchange.com/questions/31669/… –  > Por user1742529.
MetalGodwin

Instalați affuse, apoi montați folosind-o.

affuse /path/file.vmdk /mnt/vmdk

Imaginea de disc brută se găsește acum sub /mnt/vmdk. verificați dimensiunea sectorului său

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

Înmulțiți sectorsize și startsector. În exemplu, ar fi 2048*512

echo 2048*512 | bc
1048576

Montați folosind acest offset

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

Discul ar trebui să fie acum montat și să poată fi citit pe /mnt/vmdisk.

Comentarii

  • Nu este nevoie de calcul manual: utilizați doar offset=$((2048*512)) –  > Por Ruslan.
  • Dacă aveți eroarea: mount: /mnt/vmdisk: nu se poate monta /dev/loop0 read-only. folosiți opțiunea norecovery: mount -o ro,norecovery,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk –  > Por Ponytech.
  • mount: /mnt/vmdkraw: failed to setup loop device for /mnt/vmdk/MSEdge - Win10-disk001.vmdk.raw Este HPFS/NTFS/exFAT, dar nu cred că asta face vreo diferență. –  > Por caduceus.
Ilya Bobyr

Am găsit un răspuns de la commandlinefu.com destul de frumos:

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

De asemenea, puteți activa volumele LVM în imagine prin rularea

vgchange -a y

și apoi puteți monta LV-ul în interiorul imaginii.

Pentru a demonta imaginea, umount partiția/LV, dezactivați VG pentru imagine

vgchange -a n <volume_group>

apoi executați

kpartx -dv <image-flad.vmdk>

pentru a elimina mapările partițiilor.

Comentarii

  • @AntonioPetricca Dacă spuneți că ceva nu funcționează, puteți oferi și detalii despre ce anume nu a funcționat. Cum ar fi să postezi un mesaj de eroare sau să explici ce anume este greșit. Asta ar crește mult valoarea comentariului. –  > Por Ilya Bobyr.
  • Îmi pare rău! KPARTX spune că formatul de fișier VMDK nu este recunoscut. –  > Por Antonio Petricca.
  • Aceasta este pentru formatul „someimage-flat.vmdk” din ESX, unde funcționează așa cum este descris. –  > Por Adrian Zaugg.
georgiptr

Puteți arunca o privire în acest articol pentru un link de descărcare pentru VMware Virtual Disk Development Kit (VDDK). Odată descărcat și instalat:

vmware-mount -p path_to_vmdk va afișa partițiile din interiorul fișierului VMDK. De exemplu:

Nr      Start       Size Type Id Sytem                   
-- ---------- ---------- ---- -- ------------------------
 1       2048  461371392 BIOS 83 Linux

Apoi, trebuie doar să faceți:

sudo vmware-mount path_to_vmdk 1 /mnt/mount_point

Am încercat guestmount, , dar este foarte, foarte lent. Sub el se creează o mașină virtuală, folosește KVM și așa mai departe. Lucruri nebunești, foarte lente.

Jiang

Aveți pachetul software pentru ntfs?

Încercați

apt-get install ntfs-3g

pe sistemele bazate pe debian.

Comentarii

  • Ce legătură are problema lui OP cu NFS? Te-ai referit la ntfs? Un pachet NTFS ar fi ceva de genul ntfs-3g. –  > Por voidlogic.
  • @voidlogic Îmi pare rău că am înțeles greșit întrebarea ta și SO îmi tot dă un prompt de read-only mode. Ați încercat să montați fișierul vmdk prin vmware-mount, , care poate fi extras din VMware-Workstation. –  > Por Jiang.
ItsYou

Not allowed to comment on @Thomas post (38 upvotes answer) Aș dori să informez următoarea persoană care ar putea da peste următorul cod de eroare generat de guestmount atunci când utilizează qemu-img cum să rezolve problema.

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

Încercați să generați o versiune brută a .vmdk folosind vmdkmount

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

În interiorul directorului montat există un fișier vmdk1 (fișierul brut)

Acum încercați să încărcați vmdk-ul folosind guestmount.

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