×

Linux下使用KVM虚拟机制作系统镜像模板

hqy hqy 发表于2025-07-15 22:57:52 浏览2 评论0

抢沙发发表评论

相关连接:


1、Rocky Linux 10.0下安装使用KVM虚拟机
2、Linux下使用KVM虚拟机安装Windows系统
在 KVM 虚拟化环境中,你可以将已经安装好的Linux虚拟机制作成系统镜像模板,供后续快速创建新虚拟机使用。
1、创建一个模板虚拟机
图片
我们使用Rocky-10.0-x86_64-minimal.iso镜像来创建虚拟机


#创建虚拟机virt-install \--name rocky10 \--vcpu 2 \--memory 4096 \--disk path=/data/libvirt/images/rocky10.qcow2,size=40,bus=virtio \--cdrom /data/libvirt/iso/Rocky-10.0-x86_64-minimal.iso \--network bridge=br0 \--graphics vnc \--os-variant rocky10 \--noautoconsole
#虚拟机创建完成后,我们进入web控制台安装系统,直到系统安装完成
图片
图片
2、登录模板虚拟机中进行操作


#模板虚拟机中安装cloud-init工具#cloud-init工具是实现自动化配置的工具yum install cloud-init cloud-utils-growpart#验证安装是否成功rpm -qa | grep cloud-init#查看版本cloud-init -v#启用cloud-init相关服务,不启动服务systemctl enable cloud-init-local.servicesystemctl enable cloud-init.service  systemctl enable cloud-config.servicesystemctl enable cloud-final.service


#配置文件位于/etc/cloud目录,主配置文件为/etc/cloud/cloud.cfg‌vi /etc/cloud/cloud.cfgpreserve_hostname: false  #避免克隆出的虚拟机有相同主机名:wq! #保存退出


#清除已有实例数据执行rm -rf /var/lib/cloud/*#清除ssh密钥rm -f /etc/ssh/ssh_host_*#清除缓存cloud-init clean#重置机器ID,这个配置特别适合需要批量部署相同配置但不同主机名的虚拟机场景。truncate -s 0 /etc/machine-id#网络配置保持DHCP模式

3、登录kvm宿主机操作
图片
3.1关闭模板虚拟机


virsh list --all #查看虚拟机virsh shutdown rocky10 #关闭virsh destroy #或强制关闭(如果无法正常关机)
3.2清理模板虚拟机(移除临时文件、主机名等)‌
图片


#清理模板虚拟机virt-sysprep -d rocky10#验证清理效果virt-cat -d rocky10 /etc/machine-id
3.3将原始磁盘镜像转换为压缩优化的模板镜像


qemu-img convert -O qcow2 -c /data/libvirt/images/rocky10.qcow2 /data/libvirt/images/rocky10_template.qcow2
‌3.4使用模板创建新虚拟机


#编辑创建新虚拟机的执行脚本vi create_vm_rocky10.sh#!/bin/bash#生成随机主机名和密码HOSTNAME="rocky10-vm-$(date +%s | md5sum | head -c 4)"#生成6位密码PASSWORD=$(openssl rand -base64 9 | tr -dc 'A-Za-z0-9!@#$%^&*' | head -c6)#创建cloud-init配置临时文件cat > /tmp/user-data-${HOSTNAME} <<EOF#cloud-confighostname: ${HOSTNAME}fqdn: ${HOSTNAME}manage_etc_hosts: truechpasswd:  list: |    root:${PASSWORD}  expire: falsessh_pwauth: trueEOF#显示生成的密码(生产环境建议记录到安全位置)echo "VM ${HOSTNAME} 的 root 密码: ${PASSWORD}" | tee /tmp/vm_${HOSTNAME}_cred.txt#定义虚拟机模板镜像,40GBDISK_TEMPLATE=/data/libvirt/images/rocky10_template.qcow2#定义虚拟机磁盘镜像目录VM_DIR=/data/libvirt/images#拷贝模板镜像为新的虚拟机磁盘镜像cp  $DISK_TEMPLATE  $VM_DIR/${HOSTNAME}.qcow2#扩容到60GB,文件系统仍然是40GB,需要在虚拟机内部扩展分区#qemu-img resize $VM_DIR/${HOSTNAME}.qcow2 60G#启动虚拟机virt-install \  --name ${HOSTNAME} \  --memory 2048 \  --vcpus 2 \  --disk path=$VM_DIR/${HOSTNAME}.qcow2,size=40,bus=virtio \  --import \  --os-variant rocky10 \  --network bridge=br0 \  --graphics vnc \  --noautoconsole \  --cloud-init user-data=/tmp/user-data-${HOSTNAME}:wq! #保存退出chmod +x create_vm_rocky10.sh  #添加执行权限sh create_vm_rocky10.sh #执行脚本创建新虚拟机
图片
图片
3.5登录到web控制台可以看到刚才创建的虚拟机
图片
图片
图片
图片
图片
图片
输入虚拟机账号密码即可登录到虚拟机内部。
可以继续执行创建脚本,继续创建新的虚拟机。
扩容虚拟机:
登录到虚拟机里面进行操作
#修复 GPT 分区表
parted -l /dev/vda
fdisk -l
再对磁盘进行扩容操作
至此,Linux下使用KVM虚拟机制作系统镜像模板完成。




打赏

本文链接:https://www.kinber.cn/post/5289.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客