CentOS 7 KVM虚拟机实战
这篇文章是本人在工作中所做的笔记。工作中碰到问题,解决问题,记录下来。写作粗糙,请各位老师指正,也给需要的人提供一点参考。
本文运行的环境:
uname -a
3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

检查硬件是否支持虚拟化:
egrep "vmx|svm" /proc/cpuinfo #vmx:Intel svm:AMD

安装KVM和相关工具:
yum install -y qemu-kvm bridge-utils libvirt virt-install
lsmof | grep kvm #验证安装结果
systemctl start libvirtd #启动libvirtd服务
systemctl status libvirtd #查看libvirtd服务启动状态
systemctl is-enabled libvirtd #查看libvirtd服务是否开机自动运行
systemctl enadble libvirtd #设置libvirtd服务开机自动运行

第一部分 安装虚拟机Guest
1.1 网上教程:
配置网桥:
1、创建网桥ifcfg-br0:
TYPE=Bridge
BOOTPROTO=static
IPV4_FAILURE_FATAL=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.0.16
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=119.29.29.29
DNS2=223.5.5.5
2、配置绑定的物理网卡ifcfg-eth0:
TYPE=Ethernet
BOOTPROTO=none
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=fe2685ec-266a-4bc8-a003-52198570a913
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
3、重启网络服务:
systemctl restart network.service
4、验证结果:
ip addr show
brctl show
创建虚拟机:
5、创建系统安装ISO文件目录和虚拟机镜像IMG文件目录,并把系统安装文件放入iso目录
mkdir -p /home/iso /opt/image
6、配置防火墙,开放VNC连接端口
firewall-cmd --zone=public --add-port=5900/tcp --permanent
firewall-cmd --reload
7、创建虚拟机:
qemu-img create -f qcow2 /opt/image/win2008.img 100g #创建IMG文件
virt-install --name win2008 --vcpu=24 --memory 49152 --os-variant=win2k8r2 \
--disk /opt/image/win2008.img \
--network bridge=br0 \
--cdrom /home/iso/cn_windows_server_2008_r2.iso \
--graphics vnc,port=5900,listen=0.0.0.0
8、通过RealVNC远程连接虚拟机,完成虚拟机系统的安装
下载VNC Viewer客户端,新建一个链接:

1.2 virt-install一步到位直接创建虚拟机Guest:
用网上教程安装多个Guest时碰到一个问题,网桥br0不能同时在多个Guest上启用。按网上教程,似乎一块物理网卡对应一个网桥,多个Guest就要多块物理网卡— —我刚接触虚拟机,说得不对的地方欢迎各位老师指正。
经查阅virt-install文档,发现libvirt工具实际很强大,在CentOS 7系统下无缝支持MacVTAP,通过MacTAP Bridge可以实际网上教程中所说的br0功能。创建Kvm虚拟机不需要网上说的那么复杂。
1、创建系统安装ISO文件目录和虚拟机镜像IMG文件目录,并把系统安装文件放入iso目录
mkdir -p /home/iso /opt/image
2、配置防火墙,开放VNC连接端口
firewall-cmd --zone=public --add-port=5900/tcp --permanent
firewall-cmd --reload
3、创建虚拟机Guest
virt-install --name win20080611 --vcpu=2 --memory 1024 --os-variant=win2k8r2 \
--disk /opt/image/win2008_0611.img,size=100,format=qcow2,bus=scsi \ #在指定目录创建一个100G的、qcow2格式磁盘
--network type=direct,source=eth0,source_mode=bridge \ #配置网络工作在MacTAP Bridge模式
--graphics vnc,port=5912,listen=0.0.0.0 \
[--boot hd,cdrom,fd,network,menu=on] #设置引导顺序
[--pxe] #从PXE网络引导
[--cdrom /home/iso/cn_windows_server_2008_r2.iso] #从光驱引导
4、通过RealVNC远程连接虚拟机,完成虚拟机系统的安装
下载VNC Viewer客户端,新建一个链接:
5、MacTAP在虚拟机配置文件中的设置

#Qemu和Kvm中虚拟机的MAC地址必须以“52:54:00”开头

#1000M设置为”e1000“,100M设置为”rtl8139“

第二部分 虚拟机管理和维护:
1、查看安装的虚拟机列表:
virsh list #列出活动的虚拟机
virsh list --all #列出所有的虚拟机
2、修改虚拟机配置文件,使之生效的方法:
方法1、virsh shutdown <虚拟机名称> #关闭虚拟机
virsh edit <虚拟机名称> #编辑配置文件
virsh start <虚拟机名称> #启动虚拟机
方法2、virsh destroy <虚拟机名称> #强制关闭虚拟机,相当于拨电源线
virsh edit <虚拟机名称> #编辑配置文件
virsh define /etc/libvirt/qemu/<虚拟机名称>.xml #重新加载虚拟机XML配置文件
virsh start <虚拟机名称> #虚拟机开机
3、重启虚拟机:
virsh reboot <虚拟机名称>
4、虚拟机克隆:
virsh shutdown <源虚拟机名称>
virt-clone -o <源虚拟机名称> -n <目标虚拟机名称> -f /opt/img/<目标虚拟机名称>.img
virsh start <目标虚拟机名称> #启动目标虚拟机,修改hostname、IP信息后重启
5、虚拟机迁移:
1、将:
/opt/img/<源虚拟机名称>.img
/etc/libvirt/qemu/<源虚拟机名称>.xml
复制到目标服务器相应目录下。以下操作在目标服务器上执行。
2、编辑/etc/libvirt/qemu/<虚拟机名称>.xml,修改
win2008
5284e097-373e-4e6e-85db-ef5635240023
检查:






3、重新定义虚拟机
virsh define /etc/libvirt/qemu/<虚拟机名称>.xml
4、开机,修改hostname、ip信息后重启
virsh start <虚拟机名称>
6、虚拟机运行Linux系统时,配置从宿主机上直接进入虚拟机控制台:
1、进入虚拟机,修改/etc/default/grub:
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb"
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"

2、更新启动文件,然后重启
     grub2-mkconfig -o /boot/grub2/grub.cfg
3、在宿主机上登录虚拟机,退出登录:Ctrl+]
    virsh console think8848-kvmbase

7、宿主机进入系统自动运行虚拟机
virsh autostart <虚拟机名称>
8、虚拟机Guest直接访问主机Host的USB设备
yum install -y usbutils #安装lsusb、lspci工具
lsusb #插入USB设备,记录USB设备的vid、pid
修改Guest的配置文件,添加:







9、修改IMG磁盘文件的类型、容量大小
qemu-img info /opt/image/win2008.qcow2 #查看当前磁盘信息
qemu-img resize /opc/image/win2008.img +400G #容量增加400G,字母为大写的G。进系统后可用Diskgenius调整分区大小。
qemu-img convert -f qcow2 -O raw /opc/image/win2008.qcow2 /opc/image/win2008.raw #将qcow2格式转换为raw格式
10、虚拟机快照
virsh snapshot-create win2008 #创建快照
virsh snapshot-current win2008 #查看当前快照
virsh snapshot-list win2008 #查看快照信息
virsh snapshot-revert win2008 1533966938 #恢复快照
virsh snapshot-delete win2008 1533966938 #删除快照
11、禁用Libvirt的default网络配置
Default网络配置给虚拟机Guest提供NAT的方式连接网络,外部网络不能直接访问Guest,实际中我们通常使用Bridge的方式。
virsh net-destroy default #停止net default使用
virsh net-autostart default --disable #禁止net default开机自动运行
virsh net-undefine default #删除net default