一、禁用不必要服务与内核防火墙(需要重启服务器)
在执行虚拟化部署前,建议先关闭系统中不必要的服务,以避免干扰。例如,Postfix 邮件服务在虚拟化宿主机上通常无需运行,直接禁用即可。同时,关闭内核防火墙 iptables 和 ip6tables,以防止桥接网络出现异常。NetworkManager 与手动配置的网桥经常发生冲突,建议一并禁用。具体操作命令如下:
chkconfig postfix off chkconfig iptables off chkconfig ip6tables off chkconfig NetworkManager off sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
注意:最后一行修改了 SELinux 模式,必须重启服务器后才会生效,请务必在完成后续配置后执行重启。
二、确认CPU虚拟化支持状态
安装 KVM 之前,需要确认 CPU 是否支持硬件虚拟化技术。Intel 处理器请检查 vmx 标志,AMD 处理器则检查 svm 标志。执行以下命令即可检测:
cat /proc/cpuinfo | grep 'vmx' --color=auto # Intel CPU cat /proc/cpuinfo | grep 'svm' --color=auto # AMD CPU
如果 grep 命令没有输出任何结果,表明 CPU 不支持全虚拟化,或 BIOS 中的虚拟化功能未开启。请进入 BIOS 设置,启用虚拟化技术(VT-x/AMD-V)后再次尝试。
三、安装KVM相关软件包并加载内核模块
接下来通过 Yum 一次性安装 KVM 及其相关工具包,系统会自动处理依赖关系:
yum install -y kvm virt-* libvirts bridge-utils qemu-img yum upgrade device-mapper-libs
安装完成后,手动加载 KVM 内核模块。Intel 平台加载 kvm-intel:
modprobe kvm-intel lsmod | grep kvm
成功加载后 lsmod 会看到 kvm 和 kvm_intel 两个模块,就像下面这样:
kvm_intel 54285 0 kvm 333172 1 kvm_intel
四、配置网卡 eth0 与桥接接口 br0
为了让虚拟机能够正常通信,需要将宿主机网络配置为桥接模式。即创建一个虚拟网桥 br0,并将物理网卡 eth0 桥接到该网桥上。需要编辑以下两个配置文件:
/etc/sysconfig/network-scripts/ifcfg-eth0 内容如下:
DEVICE=eth0 HWADDR=00:0c:29:77:95:8e TYPE=Ethernet UUID=29ab4ff0-e2ed-4132-ac07-8e5bbd472ff5 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none BRIDGE=br0
/etc/sysconfig/network-scripts/ifcfg-br0 内容如下:
DEVICE=br0 TYPE=Bridge ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=202.102.224.68
将 IP 地址直接配置在 br0 上,完成后务必重启网络服务使配置生效:
service network restart
五、修改qemu.conf配置允许VNC远程访问
默认情况下 VNC 仅监听本地回环地址,不利于远程管理。需要修改配置文件,使 VNC 监听所有网络接口:
echo 'vnc_listen = "0.0.0.0"' >> /etc/libvirt/qemu.conf
六、重启libvirtd与messagebus服务
修改配置后需要重启这两个服务才能生效。注意:重启 libvirtd 时可能会显示 FAILED,这属于正常现象,只要最终状态显示 OK 即可:
/etc/init.d/libvirtd restart /etc/init.d/messagebus restart
试验后效果类似这样:
Stopping libvirtd daemon: [FAILED] Starting libvirtd daemon: [ OK ] Stopping system message bus: [ OK ] Starting system message bus: [ OK ]
接下来创建两个目录,分别用于存放 ISO 镜像和虚拟磁盘文件:
mkdir /iso mkdir -p /data/kvmdisk/
注意:需要自行通过 WinSCP 等工具将 ISO 镜像上传至 /iso 目录,此处不再赘述。
七、通过virt-install命令创建虚拟机
准备工作完成后,使用 virt-install 命令创建一台 Windows 2008 虚拟机作为示例。分配 4GB 内存、4 个虚拟 CPU、80GB 磁盘空间,并设置 VNC 端口为 7789:
virt-install -n win08 -r 4096 -vcpus=4 -s 80 -c /iso/win2008.iso \ --hvm --os-type=windows -f /data/kvmdisk/win2008.img \ --graphics vnc,listen=0.0.0.0,port=7789 --force --autostart
该命令的含义是:创建名为 win08 的虚拟机,分配 4GB 内存和 4 个 vCPU,磁盘容量 80GB,安装源为 /iso/win2008.iso;采用全虚拟化模式,操作系统类型为 Windows,磁盘镜像文件路径为 /data/kvmdisk/win2008.img;同时配置 VNC 监听所有地址(0.0.0.0)并指定端口 7789。--force 参数跳过交互确认,--autostart 使虚拟机随宿主机自动启动。
下面对几个常用参数做个快速说明:
-n/--name:指定虚拟机名称-r/--ram:设置内存大小(单位为MB)-u/--uuid:自定义虚拟机UUID(不指定则自动生成)--vcpus:vCPU 个数-v/--hvm:全虚拟化-p/--para virt:半虚拟化-l/--location:指定安装源位置(本地目录或网络路径)--vnc:启用VNC(建议使用--graphics vnc,listen=...格式)--vncport:设置VNC监听端口(默认5900,注意端口不能重复)--vnclisten:指定VNC绑定的IP地址-c/--cdrom:指定光驱ISO镜像或设备路径-s/--file-size:设置磁盘镜像大小(单位GB)-f/--file:指定磁盘镜像文件路径--disk:更灵活的磁盘选项--force:跳过交互提示--os-variant:指定操作系统类型(例如 windows、linux)--accelerate:启用硬件加速(通常自动检测)--network:配置网络类型,默认为NAT,生产环境建议使用bridge桥接
如果需要安装 CentOS,只需替换对应的 ISO 镜像和磁盘文件即可:
virt-install -n Centos6.5 -r 4096 -vcpus=4 -s 80 -c /iso/CentOS65.iso \ --hvm --os-type=linux -f /data/kvmdisk/centos65.img \ --graphics vnc,listen=0.0.0.0,port=7789 --force --autostart
完成上述步骤后,虚拟机将自动启动安装程序。使用 VNC 客户端连接至宿主机 IP 的 7789 端口,即可看到安装界面。后续操作按照常规操作系统安装流程进行即可。
