小编Chr*_*sti的帖子

热交换物理磁盘传递到 qemu VM

我有一个在 proxmox 上的 qemu 中运行的虚拟服务器。它有两个物理磁盘连接到主机,使用 virtio: 指令在 101.cfg 中,如下所示

virtio2: /dev/disk/by-id/ata-vol1,backup=0 
virtio3: /dev/disk/by-id/ata-vol2,backup=0
Run Code Online (Sandbox Code Playgroud)

这些包含一个镜像的 ZFS 卷,我的文件使用 nextcloud 提供。这一切正常,因为这些磁盘永远不会从来宾中删除。

我还有其他三个物理磁盘的轮换备份(物理控制器是 JBOD 配置中的 LSI raid 控制器,物理硬件是 HP Proiliant DL380e Gen8)。我通过 zfs 将更新的快照从存储阵列发送到系统上存在的任何备份磁盘来做到这一点。我已将这些添加到 VM 中,如下所示:

virtio4: /dev/disk/by-id/ata-backup1-volname,backup=0
virtio5: /dev/disk/by-id/ata-backup2-volname,backup=0
virtio6: /dev/disk/by-id/ata-backup3-volname,backup=0
Run Code Online (Sandbox Code Playgroud)

这种工作,但问题是这些磁盘都不是可热插拔的,所以如果我轮流移除和插入磁盘,来宾将无法看到它们。我的 qemu 配置中启用了磁盘热插拔。

我的问题是,在插入和移除这些磁盘时,将这些磁盘动态附加和分离到我的 VM 的正确方法是什么?

我已经能够使用“qm monitor”找到一个部分解决方案,通过附加和分离virtio-scsi“pci卡”来附加和分离我正在取出的磁盘,如下所示:

附上

qm> drive_add 0 file=/dev/disk/by-id/ata-<disk-id>,if=none,id=backup_vol,cache=none,detect-zeroes=on
qm> device_add virtio-blk-pci,drive=backup_vol,id=backup_scsi_controller
Run Code Online (Sandbox Code Playgroud)

分离

qm> device_del backup_scsi_controller
Run Code Online (Sandbox Code Playgroud)

(来源:https : //blog.chrishowie.com/2019/09/19/hot-swapping-virtio-disks-on-qemu/通过谷歌缓存)

我想我可以将这些添加到我的备份脚本中,但是似乎不可能从 shell 脚本运行 qm monitor 命令,并且 qm monitor 不会从 stdin 获取参数或输入。通过阅读,可能可以在来宾上的 qemu-agent 中创建一个套接字并使用 JSON 注入它,但我对 JSON 一无所知,我真的希望有一种更简单的方法。

qemu proxmox kvm-virtualization

5
推荐指数
1
解决办法
599
查看次数

标签 统计

kvm-virtualization ×1

proxmox ×1

qemu ×1