很久不写技术博客,大概都忘了,我一开始就是想写技术博客的,只是后来发现,没那么多需要写的,要不别人写过,要不太简单,要不太难。

这次试验使用的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和端口就可以,需要注意的是,防火墙要开对应的端口,不然访问不了。


最后总结,其实很简单,就是装软件,开启服务,执行命令,然后配置,没那么复杂。