如何在QEMU中启动同一镜像的多个独立实例以搭建集群?
搭建QEMU虚拟机集群:独立实例的配置要点
要同时启动多个独立的QEMU虚拟机搭建集群,大部分原有命令配置可以复用,但必须修改会引发资源冲突的参数,同时复制必要的依赖文件。具体如下:
可直接复用的基础配置
这些参数所有实例通用,无需修改:
qemu-system-x86-64 \-nographic \-machine virt \-smp 2 \-m 4G \-bios images/fw_jump.elf \-kernel images/Image \-append "root=/dev/vda2 ro" \- virtfs的
path和security_model(若无需独立挂载内容,可共享主机目录)
必须修改/复制的关键项(避免冲突)
每个虚拟机实例都要单独配置以下内容:
独立磁盘镜像
不能多个实例共用同一个Fedora-38-sda.qcow2,必须复制生成新镜像(如Fedora-38-sda-node1.qcow2、Fedora-38-sda-node2.qcow2),对应修改命令中的-drive参数:-device virtio-blk-device,drive=hd0 -drive file=Fedora-38-sda-node1.qcow2,format=qcow2,id=hd0 \唯一SSH转发端口
原命令中hostfwd=tcp::10000-:22将主机10000端口映射到虚拟机22端口,多实例需使用不同主机端口,比如node2改为10001:-netdev user,id=net0,hostfwd=tcp::10001-:22 -device virtio-net-device,netdev=net0 \独立tap网络设备ID
原命令的id=e0要改为实例唯一ID,比如node2用e1,同步修改两处:-device virtio-net-device,netdev=e1 -netdev tap,id=e1 \唯一virtfs挂载标识
每个实例的virtfsid和mount_tag需唯一,比如node2修改为:-virtfs local,path=mount/development-toolchain-native,mount_tag=host0-node2,security_model=passthrough,id=host0-node2 \ -virtfs local,path=mount/development-2023-07-13-1400,mount_tag=host1-node2,security_model=passthrough,id=host1-node2 \(若无需独立挂载点,也可共用,但完全独立建议修改)
需要复制的文件
- 磁盘镜像:复制
Fedora-38-sda.qcow2生成每个节点的独立镜像文件 - 挂载目录(可选):若需要每个节点有独立的工具链/开发环境,复制
mount/development-toolchain-native和mount/development-2023-07-13-1400生成对应节点目录,再调整virtfs的path参数
内容的提问来源于stack exchange,提问作者Bub Espinja
相关产品推荐
相关产品推荐

