很久不写技术博客,大概都忘了,我一开始就是想写技术博客的,只是后来发现,没那么多需要写的,要不别人写过,要不太简单,要不太难。
这次试验使用的openeuler服务器,版本是22.03 LTS SP3,服务器版本。
我是在完全无网的情况下进行的,因此需要提前准备everything镜像,使用everything镜像做本地仓库。 1,做本地仓库
mkdir -p /mnt/cdrom
mkdir -m /data/vms
# 我这里是把之前准备的镜像传到了/opt目录下
mount -o loop /opt/openEuler-22.03-LTS-SP3-everything-x86_64-dvd.iso /mnt/cdrom/
# 配置本地仓库
cat << EOF > /etc/yum.repos.d/local-everything.repo
[local-everything]
name=openEuler 22.03 LTS SP3 Everything
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
EOF
# 构建缓存
dnf makecache
2,安装所需的服务
dnf install -y cockpit cockpit-cockpit-machines
dnf install -y qemu-kvm libvirt virt-install libvirt-client
systemctl enable --now cockpit.socket
systemctl enable --now libvirtd
firewall-cmd --add-service=cockpit --permanent
firewall-cmd --reload
3,添加虚拟机模板
LC_ALL=C virt-install \
--name ${TEMPLATE_NAME} \
--memory 4096 \
--vcpus 2 \
--disk path=${DISK_DIR}/${TEMPLATE_NAME}.qcow2,size=40,format=qcow2 \
--cdrom ${ISO_PATH} \
--network default \
--video vga \
--graphics vnc,listen=0.0.0.0 \
--os-variant win10 \
--noautoconsole
firewall-cmd --add-port=5900/tcp --permanent
firewall-cmd --reload
如果只需要一个虚拟机,到这一步就可以了,这个模板机就能正常运行
4,克隆虚拟机
for i in $(seq 1 10); do
NAME=Win10-$(printf "%02d"$i)
PORT=$((5900 + i))
qemu-img create -f qcow2 -b ${DISK_DIR}/${TEMPLATE_NAME}.qcow2 -F qcow2 ${DISK_DIR}/${NAME}.qcow2
virt-install \
--name ${NAME} --memory 4096 --vcpus 2 \
--disk path=${DISK_DIR}/${NAME}.qcow2,format=qcow2 \
--network default --video vga \
--graphics vnc,listen=0.0.0.0,port=${PORT} \
--os-variant win10 --import --noautoconsole
echo "✅ ${NAME} 创建完成 (VNC端口:${PORT})"
done
## 以上命令执行完后,会以模板的配置,克隆10个相同的虚拟机,端口从5901-5910
firewall-cmd --add-port=5901-5910/tcp --permanent
firewall-cmd --reload
5,管理和访问 浏览器输入主机的IP:9090端口,就能进入cockpit的管理面板,登录使用服务器的账号密码登录就可以。
进入过后,会看到虚拟机的选项,里面有创建好的虚拟机,可以进行管理。 可以在管理界面的consoles操作虚拟机,但是比较卡,也可以使用VNC进行连接,操作起来没有那么卡。
6,向虚拟机传输文件 可以使用在宿主机上开始web服务,然后虚拟机里访问宿主机来实现。
开启web服务,使用自带的python进行:python -m http.server 8888 。然后在虚拟机访问宿主机的IP和端口就可以,需要注意的是,防火墙要开对应的端口,不然访问不了。
最后总结,其实很简单,就是装软件,开启服务,执行命令,然后配置,没那么复杂。