一、KVM简介:
KVM是Kernel Virtual Machine 的简写,目前Linux发行版必须在64位的系统环境才能运行KVM,同时硬件需要支持VT技术。KVM自Linux 2,6.20版本后就直接整合到Linux内核.它依托CPU虚拟化指令集(如intel-VT.AMD-V)实现高性能的虚拟化支持。由于与Linux内核高度整合.因此在性能.安全性.兼容性.稳定性上都有很好的表现。
二、搭建knm虚拟化平台:
(1)在CentOS的系统光盘镜像中.已经提供了安装KVM所需软件。通过部署基于光盘镜像的本地yum源.直接使用yum 安装所需软件即可,安装KVM所需软件具体包含以下几个。
(2)验证。重启系统后,查看CPU是否支持虚拟化.对于Intel的服务器可以通过以下命令查看,只要有输出就说明CPU支持虚拟化:AMD服务器可用cat/proc/cpuinfo / grep smv命令查看.
[root@localhost ~]# cat /proc/cpuinfo | grep vmx
检查kvm模块是否安装
[root@localhost ~]# lsmod | grep kvm
开启服务。安装完成后还需要开启libvirtd 服务,以开启相关支持.
[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# systemctl enable libvirtd
2.设置KVM网络
宿主服务器安装完成KVM.首先要设定网络,在libvirt中运行KVM网络有两种方法:NAT和Bridge ,默认是NAT.
关于两种模式的说明如下。
(1)用户模式.即NAT方式,这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络。
(2)桥接模式.这种模式允许虚拟机像一台独立的主机--样拥有网络,外部的机器可以直接访问到虚拟机内部.但需要网卡支持.一-般有线网卡都支持。
这里以 Bridge(桥接)为例。
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ec3f7fc0-e496-470b-a134-ae36b8f8bc7d
DEVICE=ens33
ONBOOT=no
BRIDGE=br0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
重启network服务:
[root@localhost ~]# /etc/init.d/network restart
3.kvm管理 :
[root@localhost ~]# virt-manager #进入虚拟系统管理器
virt-manager是基于libvirt的图像化虚拟机管理软件。请注意,不同的发行版上virt-manager 的版本可能不同.图形界面和操作方法也可能不同。本章使用了CentOS 7.3。创建KVM虚拟机最简单的方法是通过virt-manager接口。从控制台窗口启动这个工具,以root 身份输入“virt-manager”命令。
(1)创建存储池,双击“QEMU/KVM”,选择“存储”选项卡,然后单击“+”按钮新建存储池。单击“前进”按钮,根据提示输入或浏览用以设置存储目录,如/data_kvm/store,最后单击“完成”按钮即可。
用上面的方法我们创建2个存储池 bdqn-ios(储存需要安装的镜像 )bdqn(安装镜像的储存池 )
(2)回到虚拟系统管理器。右击“QEMJ/KVM”,然后选择“新建”选项.在弹出的对话框中选择“本地安装介质”.然后单击“前进”按钮。单击“浏览”按钮选择镜像文件.再选择操作系统型及版本。
选择需要安装的镜像 (bdqn-ios)
选择安装位置 (bdqn)
在“引导选项”视图中勾选“主机引导时启动虚拟机”复选框.这样在物理宿主机启动后.这个VM也会启动,最后单击“应用”按钮,开始安装。
三、使用kvm命令集管理虚拟机:
3.1 kvm基本功能管理:
[root@localhost ~]# virsh -h ##查看帮助
[root@localhost ~]# ls /etc/libvirt/qemu ##查看kvm配置文件存放目录
[root@localhost ~]# virsh list --all ##查看虚拟机状态
[root@localhost ~]# virsh shutdown rhel7.1 ##关闭虚拟机
域 rhel7.1 被关闭
[root@localhost ~]# virsh start rhel7.1 ##启动虚拟机
域 rhel7.1 已开始
[root@localhost ~]# virsh destroy rhel7.1 ##强制关闭虚拟机
[root@localhost ~]# virsh suspend rhel7.1 ##挂起虚拟机
[root@localhost ~]# virsh resume rhel7.1 ##重启虚拟机
[root@localhost ~]# virsh autostart rhel7.1 ##配置开机自启动
上述命令将创建/etc/libvirt/ qemu/ autostart/目录.目录内容为开机自动启动的系统。
[root@localhost ~]# virsh dumpxml rhel7.1 > /etc/libvirt/qemu/rhl7.2 ##导出虚拟机配置
3.2虚拟机的删除和添加:
[root@localhost ~]# virsh shutdown rhel7.1
[root@localhost ~]# virsh undefine rhel7.1
查看删除结果,test01的配置文件被删除,但是磁盘文件不会被删除,
查看虚拟机rhel7.1的状态:
通过备份的配置文件重新定义虚拟机:
[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# mv rhl7.2 rhl7.2.xml
重新定义虚拟机:
[root@localhost qemu]# virsh define rhl7.2.xml
查看状态:
3.3、虚拟机快照
KVM虚拟机要使用镜像功能,磁盘格式必须为qcow2
1)对rhel7.1创建快照
[root@localhost ~]# virsh snapshot-create rhel7.1
已生成域快照 1704355792
2)查看虚拟机快照版本信息
[root@localhost ~]# virsh snapshot-current rhel7.1
<domainsnapshot>
<name>1704355792</name> //快照版本号
<state>shutoff</state> //关机状态下的快照
3)查看快照信息
[root@localhost ~]# virsh snapshot-list rhel7.1
名称 生成时间 状态
------------------------------------------------------------
1704355792 2024-01-04 16:09:52 +0800 shutoff
4)创建新快照
[root@localhost ~]# virsh snapshot-create rhel7.2
已生成域快照 1704355880
5)查看快照信息
[root@localhost ~]# virsh snapshot-create rhel7.1
已生成域快照 1704356048
[root@localhost ~]# virsh snapshot-list rhel7.1
名称 生成时间 状态
------------------------------------------------------------
1704355792 2024-01-04 16:09:52 +0800 shutoff
1704356048 2024-01-04 16:14:08 +0800 shutoff
6)将虚拟机开机,恢复虚拟机状态至1704355792(关机状态)
[root@localhost ~]# virsh start rhel7.1
域 rhel7.1 已开始
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
20 rhel7.1 running
[root@localhost ~]# virsh snapshot-revert rhel7.1 1704355792
[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
rhel7.1 关闭
7)查看虚拟机快照版本信息
[root@localhost ~]# virsh snapshot-current rhel7.1
<domainsnapshot>
<name>1704355792</name> //快照版本号
<state>shutoff</state> //关机状态下的快照
8)删除快照
[root@localhost ~]# virsh snapshot-delete rhel7.1 1704355792
已删除域快照 1704355792
[root@localhost ~]# virsh snapshot-delete rhel7.1 1704356048
已删除域快照 1704356048
[root@localhost ~]# virsh snapshot-list rhel7.1
名称 生成时间 状态