KVM 网络环境下多台虚拟机部署指南
一、部署前置准备
1. 确认宿主机 KVM 环境
# 检查CPU是否支持虚拟化(返回非空值即支持)grep -E 'vmx|svm' /proc/cpuinfo# 检查KVM模块是否加载lsmod | grep kvm# 安装KVM及依赖(以CentOS为例)yum install -y qemu-kvm libvirt virt-install bridge-utils# 启动并设置libvirt服务开机自启systemctl start libvirtd && systemctl enable libvirtd
2. 准备操作系统镜像
3. 选择并搭建网络安装源
二、搭建网络安装源(HTTP/FTP/NFS)
1. HTTP 服务器(推荐,配置简单)
(1)安装 HTTP 服务器
安装 Apache(以 CentOS 为例):
yum install -y httpdsystemctl start httpd && systemctl enable httpd
或安装 Nginx(以 CentOS 为例):
yum install -y nginxsystemctl start nginx && systemctl enable nginx
(2)配置 ISO 镜像访问
创建 HTTP 服务的共享目录(如/var/www/html/iso):
mkdir -p /var/www/html/iso
将操作系统 ISO 文件复制到该目录(以 CentOS 7 ISO 为例):
cp /path/to/CentOS-7-x86_64-Minimal-2009.iso /var/www/html/iso/
验证访问:在浏览器或宿主机终端访问http://<宿主机IP>/iso/,若能看到 ISO 文件,说明 HTTP 安装源配置成功。
(3)虚拟机引导配置
2. FTP 服务器(需配置登录凭证)
(1)安装并配置 FTP 服务器
安装 vsftpd(常用 FTP 服务软件):
yum install -y vsftpdsystemctl start vsftpd && systemctl enable vsftpd
配置 FTP 访问权限:
创建 FTP 用户(如kvm_iso)并设置密码:
useradd kvm_isopasswd kvm_iso
将 ISO 文件放置到 FTP 用户的家目录(如/home/kvm_iso/iso):
mkdir -p /home/kvm_iso/isocp /path/to/CentOS-7-x86_64-Minimal-2009.iso /home/kvm_iso/iso/
调整目录权限,确保 FTP 用户可访问:
chown -R kvm_iso:kvm_iso /home/kvm_iso/iso
(2)虚拟机引导配置
3. NFS 服务器(高性能,适合批量部署)
(1)安装并配置 NFS 服务器
安装 NFS 服务:
yum install -y nfs-utilssystemctl start nfs-server && systemctl enable nfs-server
配置 NFS 共享:
解压 ISO 文件到共享目录(如/var/nfs/kvm_iso):
mkdir -p /var/nfs/kvm_isomount /path/to/CentOS-7-x86_64-Minimal-2009.iso /mnt # 临时挂载ISOcp -r /mnt/* /var/nfs/kvm_iso/ # 复制ISO内容到NFS目录umount /mnt # 卸载ISO
编辑 NFS 配置文件/etc/exports,添加共享规则:
echo "/var/nfs/kvm_iso <虚拟机网段>(ro,sync,no_root_squash)" >> /etc/exports# 示例:允许192.168.1.0/24网段访问,权限为只读(ro)# /var/nfs/kvm_iso 192.168.1.0/24(ro,sync,no_root_squash)
生效 NFS 共享配置:
exportfs -r
(2)虚拟机引导配置
在 KVM 虚拟机的网络配置中,添加 NFS 客户端支持;
挂载 NFS 共享目录:mount -t nfs <宿主机IP>:/var/nfs/kvm_iso /mnt;
从 NFS 共享目录(/mnt)启动虚拟机,开始安装流程。
三、批量部署 KVM 虚拟机
1. virt-install 命令部署示例(HTTP 安装源)
# 部署一台CentOS 7虚拟机,使用HTTP安装源virt-install \--name centos7-vm1 \ # 虚拟机名称--ram 2048 \ # 内存大小(2GB)--vcpus 2 \ # CPU核心数--disk path=/var/lib/libvirt/images/centos7-vm1.qcow2,size=30,format=qcow2 \ # 磁盘(30GB,qcow2格式)--network bridge=virbr0 \ # 网络桥接(默认virbr0,可自定义)--location http://<宿主机IP>/iso/CentOS-7-x86_64-Minimal-2009.iso \ # HTTP安装源URL--extra-args "ks=http://<宿主机IP>/kickstart/centos7-ks.cfg" \ # 可选:指定kickstart自动安装脚本--os-type linux \ # 操作系统类型--os-variant centos7 \# 操作系统版本--noautoconsole # 不自动连接控制台
说明:若需批量部署,可将上述命令写入 Shell 脚本,通过循环批量创建多台虚拟机(如修改--name、磁盘路径实现差异化);
自动安装:通过--extra-args指定 kickstart 脚本(.cfg),可实现虚拟机的自动化安装(无需手动选择分区、用户等配置),进一步提升批量部署效率。
2. 图形界面部署(适合新手)
打开 Virtual Machine Manager,点击 “新建虚拟机”;
选择 “网络安装(HTTP、FTP 或 NFS)”,点击 “前进”;
输入网络安装源的 URL(如 HTTP 的http://<宿主机IP>/iso/...),选择操作系统类型与版本;
配置内存、CPU、磁盘大小,完成虚拟机创建,后续按提示完成安装。
四、虚拟机后续监控与管理
1. virsh 命令行管理(常用操作)
# 1. 查看虚拟机状态(所有/指定虚拟机)virsh list --all # 查看所有虚拟机(包括关机状态)virsh dominfo centos7-vm1 # 查看指定虚拟机(centos7-vm1)详情# 2. 启动/关闭/重启虚拟机virsh start centos7-vm1 # 启动virsh shutdown centos7-vm1 # 正常关闭virsh reboot centos7-vm1 # 重启# 3. 快照管理(备份/回滚)virsh snapshot-create-as centos7-vm1 snap1 # 创建快照(名称snap1)virsh snapshot-revert centos7-vm1 snap1 # 回滚到快照snap1# 4. 虚拟机迁移(如从宿主机A迁移到宿主机B)virsh migrate --live centos7-vm1 qemu+ssh://<目标宿主机IP>/system # 在线迁移
2. 图形工具管理
五、部署注意事项
网络与防火墙配置:
确保宿主机与虚拟机在同一网段,虚拟机可访问网络安装源(HTTP/FTP/NFS 端口需开放);
临时关闭宿主机防火墙或开放对应端口(如 HTTP 80、FTP 21、NFS 2049):
# 临时关闭防火墙(CentOS 7)systemctl stop firewalld# 或开放HTTP端口firewall-cmd --add-port=80/tcp --permanent && firewall-cmd --reload
镜像完整性:部署前通过 MD5/SHA256 校验 ISO 镜像,避免因镜像损坏导致安装失败,示例:
md5sum /path/to/CentOS-7-x86_64-Minimal-2009.iso # 校验MD5
自动化脚本:批量部署多台虚拟机时,建议编写 Shell 脚本或使用 Ansible 等自动化工具,集成virt-install命令与 kickstart 自动安装,减少手动操作,提升部署一致性。
资源规划:确保宿主机有足够的 CPU、内存、磁盘资源(如部署 10 台 2GB 内存、30GB 磁盘的虚拟机,宿主机需预留至少 20GB 内存、300GB 磁盘),避免资源不足导致虚拟机卡顿或崩溃。