AI 摘要

本文是一份虚拟化平台部署大作业的全流程指南,手把手教你从换源、搭建KVM环境、配置NFS共享存储,到网络创建、镜像定制、批量自动部署虚拟机,最后再通过Cockpit图形界面管理并验证快照功能🛠️💻

准备:已安装Centos8 的虚拟机两台host1、hosts2

换源

“无论遇到什么困难,请先把centos默认源替换掉”

阿里源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

任务一:虚拟化环境配置

安装KVM、QEMU、Libvirt

sudo yum install -y qemu-kvm libvirt virt-install virt-viewer libguestfs-tools

安装cocpkit

yum install cockpit
systemctl enable --now cockpit.socket
yum install -y cockpit-machines

验证cockpit安装

虚拟化平台部署大作业指北

任务二:统一存储配置

安装、配置NFS

在host1主机上安装
sudo dnf install nfs-utils
sudo systemctl enable --now nfs-server

创建需要共享的文件夹

sudo mkdir -p /home/yish/share

编辑NFS共享导出配置文件

sudo vim /etc/exports
写入
/home/yish/share/ *(rw,sync,no_root_squash)

刷新并确认配置

sudo exportfs -ra
sudo exportfs -v

防火墙放行

sudo firewall-cmd --new-zone=nfs --permanent
sudo firewall-cmd --zone=nfs --add-service=nfs –permanent
sudo firewall-cmd --zone=nfs --add-source=0.0.0.0/0 --permanent
sudo firewall-cmd --reload

客户端挂载

在另一台客户端上创建挂载目录
sudo mkdir -p /home/yish/share
挂载
sudo mount -t nfs -o vers=4 192.168.173.142:/home/yish/share/ /home/yish/share/

至此使用tinycore.img在host1、2上分别创建vm1,vm2/vm3,vm4 即可完成

1、 网络设置好以后,host1和host2的ip a命令运行结果截图


2、 运行vm1虚拟机后,virsh domifaddr vm1 命令的结果截图


任务三:网络配置

创建 isolated 网络

cat > isolated.xml << EOF
<network>
  <name>isolated</name>
  <forward mode='nat'/>
  <ip address='192.168.100.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.100.2' end='192.168.100.254'/>
    </dhcp>
  </ip>
</network>
EOF
创建 virsh net-define isolated.xml
启动 virsh net-start isolated
自启 virsh net-autostart isolated

任务四:虚拟机模板构建

在nfs共享的目录里(/home/yish/share)下载ubuntu镜像

wget --no-check-certificate https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img

创建deploy-ubuntu文件夹

mkdir deploy-ubuntu

在nfs共享的目录里(/home/yish/share)执行,生成差分镜像

qemu-img create -f qcow2 -F qcow2 -o backing_file=/home/yish/focal-server-cloudimg-amd64.img deploy-ubuntu/ubuntu-diff.qcow2 注意替换路径

在deploy-ubuntu里生成文件

touch meta-data user-data

编辑定制文件

只要管user-data,以下只需要修改三个yish,第一个用户名,第二个用户名,第三个密码

#cloud-config
users:
  - name: yish
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, admin
    shell: /bin/bash
    lock_passwd: false
    passwd: "$6$rounds=4096$u3YJPb9C$2KXxN6Y64l4kwgkRI1QyYUzZdUBzKobOtR/NEgTfSMu0Xz6bDp7A6GGR0ovXqYhViZCjs9nKoO8BPKpHzb05W."

ssh_pwauth: true
chpasswd:
  list: |
    yish:yish    #用户名:密码
  expire: false

生成定制镜像

genisoimage -output ubuntu-diff.qcow2.iso -volid cidata -joliet -rock user-data meta-data

任务五:自动化批量部署

创建create_vm.sh文件

touch create_vm.sh

以下为sh内容

#!/bin/bash
# 设置基础变量
VM_COUNT=4
BASE_IMAGE="/home/yish/focal-server-cloudimg-amd64.img"      # 此处替换为下载的镜像的位置
WORK_DIR="/home/yish/deploy-ubuntu"     # 此处替换为deploy-ubuntu所在位置
ISO_PATH="$WORK_DIR/ubuntu-diff.qcow2.iso"    
NAT_NET="default"
ISOLATED_NET="isolated"
SOFTWARE_LIST=("httpd" "nginx" "mysql" "python3")

# 确保目录存在
mkdir -p "$WORK_DIR"

# 循环创建虚拟机
for i in $(seq 1 $VM_COUNT); do
    VM_NAME="vm$i"
    VM_DISK="$WORK_DIR/${VM_NAME}.qcow2"
    IP="192.168.100.$((10 + i))"  # 假设 isolated 网段为 192.168.100.0/24

    echo "==> 创建 $VM_NAME ..."

    # 创建差分磁盘,指定 backing file 格式
    qemu-img create -f qcow2 -F qcow2 -b "$BASE_IMAGE" "$VM_DISK"

    # 启动虚拟机
    virt-install \
        --name "$VM_NAME" \
        --memory 2048 \
        --vcpus 2 \
        --disk path="$VM_DISK",format=qcow2 \
        --disk path="$ISO_PATH",device=cdrom \
        --os-type linux \
        --os-variant ubuntu20.04 \
        --network network="$NAT_NET",model=virtio \
        --network network="$ISOLATED_NET",model=virtio \
        --graphics none \
        --import \
        --noautoconsole
           
    echo "$VM_NAME 部署完成,预设静态IP:$IP"
done

注意查看运行过程中是否产生报错ERROR!!!

运行脚本即可生成4台虚拟机

chmod 777 create_vm.sh
./create_vm.sh


6、 ovirt engine或cockpit管理界面内能看到两台主机的证据截图


7、 任务5自动部署的yaml文件内容及运行成功的证据截图


任务六:图形访问与快照验证

在虚拟机中的cockpit和novnc等可通过ai快速解决

快照:

virsh snapshot-create-as --domain vm1 snapshot1 "第一次快照"

先关机:

virsh shutdown vm1

然后回滚:

virsh snapshot-revert --domain vm1 snapshot1
virsh start vm1"

 

此作者没有提供个人介绍。
最后更新于 2025-06-22