一、部署Kvm
bash
复制代码
apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager -y
二、启动并启用服务
bash
复制代码
systemctl enable --now libvirtd
systemctl status libvirtd # 确认运行正常
三、将用户加入 libvirt 和 kvm 组(免 sudo)
bash
复制代码
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
四、根据镜像创建虚拟机
bash
复制代码
virt-install \
--name ubuntu2004 \
--ram 4096 \
--disk path=/data/kvm/data/ubuntu2004-20260104.img,size=100,bus=virtio \
--vcpus 4 \
--os-type linux \
--os-variant ubuntu24.04 \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--cdrom /data/software/ubuntu-20.04.6-live-server-amd64.iso \
--console pty,target_type=serial
五、模版制作
bash
复制代码
#清除Machine ID
# Ubuntu/Debian 方式
truncate -s 0 /etc/machine-id
rm -f /var/lib/dbus/machine-id
ln -s /etc/machine-id /var/lib/dbus/machine-id
六、创建干净的模版
bash
复制代码
qemu-img convert \
-O qcow2 \
-c \ # 启用压缩(zlib)
/data/kvm/data/ubuntu2004-20260104.img \
/data/images/ubuntu2004-template.qcow2
七、根据模版创建新服务器,根据实际情况调整ram、vcpus、disk path。
bash
复制代码
virt-install \
--name test04 \
--ram 4096 \
--vcpus 4 \
--disk path=/data/kvm/data/test04.qcow2,bus=virtio \
--os-variant ubuntu24.04 \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--import \
--noautoconsole
八、 扩容到 200GB(+100G 表示增加 100GB)
bash
复制代码
qemu-img resize /data/kvm/data/ubuntu2004.qcow2 200G
九、 验证新大小
bash
复制代码
qemu-img info /data/kvm/data/ubuntu2004.qcow2
十、扩大内存和磁盘空间
bash
复制代码
virsh edit your-vm-name
<memory unit='KiB'>4194304</memory> <!-- 4GB = 4 * 1024 * 1024 -->
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>4</vcpu>
十一、根据模版新建服务器
bash
复制代码
virt-install \
--name pengxinyan \
--ram 4096 \
--vcpus 4 \
--disk path=/data/kvm/data/pengxinyan.qcow2,bus=virtio \
--os-variant ubuntu24.04 \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--import \
--noautoconsole
十二、查看VPN连接端口
bash
复制代码
virsh dumpxml pengxinyan | grep vnc
十三、查看模版信息CPU、内存
bash
复制代码
virsh dominfo test01
十四、常用命令
bash
复制代码
| 功能 | 命令 | |------|------|
| 列出所有 VM | `virsh list --all` |
| 启动 VM | `virsh start <name>` |
| 关闭 VM | `virsh shutdown <name>` |
| 强制关机 | `virsh destroy <name>` |
| 删除 VM(保留磁盘)| `virsh undefine <name>` |
| 删除 VM + 磁盘 | `virsh undefine <name> --remove-all-storage` |
| 连接控制台 | `virsh console <name>`(需 VM 内启用 serial console)|