如何使用vm-bhyve创建镜像?

如何使用vm-bhyve创建镜像?

根据文档它将根据您传递的命名虚拟机创建一个新映像。它应该看起来像这样:

vm image create -u VMNAME

执行该命令后,root我收到此错误:

vm: ERROR: failed to create snapshot of source dataset root/vm/VMNAME@gdee65d

我没有找到任何信息或类似的问题。

更新:这里的目标是创建正在运行的虚拟机的映像/iso 文件并将其迁移到云,云仅接受自定义 iso 文件。

答案1

首先,您需要有 ZFS 才能使用vm image命令。 虚拟机(8)

请注意,这些命令依赖于使用 ZFS 功能来打包/解包图像,因此仅在使用 ZFS 数据集作为存储位置时才可用。

您的错误是由于vm-bhyve脚本中的这一行而发生的:

https://github.com/churchers/vm-bhyve/blob/master/lib/vm-zfs#L365

# try to snapshot
zfs snapshot -r "${VM_DS_ZFS_DATASET}/${_name}@${_snap}" >/dev/null 2>&1
[ $? -eq 0 ] || util::err "failed to create snapshot of source dataset ${VM_DS_ZFS_DATASET}/${_name}@${_snap}"

它将尝试从您的图像创建 ZFS 快照,并且似乎您没有任何具有root/vm/名称的数据集。

定义您的 ZFS 数据集/etc/rc.conf

sysrc vm_dir="YOUR_ZFS_DATASET/vm"

如何创建正在运行的虚拟机的映像/iso 文件?

您可以使用以下命令将 zfs 转换为原始文件:

dd if=/dev/zvol/zvol_name of=/mnt/tank/path/file.img

然后使用 qemu-utils 将其转换为您想要的任何类型的虚拟机磁盘文件!例如对于vmdk

qemu-img convert -O vmdk <vmname>.raw <vmname>.vmdk

相关内容