获取已解除分配的虚拟机的文件

获取已解除分配的虚拟机的文件

我有一个来自 Azure (Ubuntu 20.04) 的虚拟机。我无法再付费并想要获取文件,但无法启动虚拟机。我下载了磁盘(DOS/MBR 引导扇区、扩展分区表(最后一个)),但不知道该怎么办。

答案1

如果磁盘映像采用(raw、VMDK、VDI、VHD (vpc)、VHDX、qcow1 和 QED)支持的格式之一qemu,则可以使用以下命令将磁盘用作 nbd 设备(作为 root):

modprobe nbd max_part=31
qemu-nbc -c /dev/nbd0 disk.img

qemu-nbd来自qemu-utils基于 Debian 的系统上的软件包)。

然后,如果文件系统直接位于分区上,请使用以下命令挂载它们:

mount -r /dev/nbd0p1 /some/mountpoint

(此处为第一个分区)。

如果VM上使用了LVM,您可能还需要lvm在本地安装并激活VM的卷组,然后vgchange安装逻辑卷。

基于 Debian 的系统上的软件包libguestfs-tools 至少有一些用于探索 VM 磁盘映像的实用程序,包括guestfish用于交互式探索它们的类似 shell 的实用程序:

$ sudo guestfish --ro -a slackware.qcow2

Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: ‘help’ for help on commands
      ‘man’ to read the manual
      ‘quit’ to quit the shell

><fs> launch
 100% ⟦▒▒▒▒▒▒⟧ 00:00
><fs> list-filesystems
/dev/sda1: ext2
/dev/sda2: ext2
/dev/sda3: ext2
/dev/sda4: vfat
><fs> mount /dev/sda1 /
><fs> ls /
.bash_history
.emacs
.kermrc
.less
.lessrc
.profile
.term
bin
conf
dev
dos
etc
home
inst
install
lastlog
lib
linux
lost+found
mnt
os2
proc
root
tmp
user
usr
var
zImage

答案2

您可以使用 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有时会给出“挂载:特殊设备/dev/nbd0p1不存在”

对于.ova

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

上面的命令将提取.vmdk磁盘,然后安装它。

相关内容