部署 KVM 虚拟化平台

KVM自Linux 2.6.20版本后就直接整合到Linux内核,它依托CPU虚拟化指令集实现高性能的虚拟化支持。它与Linux内核高度整合,所以在性能、安全性、兼容性、稳定性上都有很好的表现。
在KVM环境中运行的每一个虚拟化操做系统都将表现为单个独立的系统进程。所以它能够很方便地与Linux系统中的安全模块进行整合(SELinux),能够灵活的实现硬件资源的管理和分配,KVM虚拟化的架构图以下:
部署 KVM 虚拟化平台
下面开始安装,在 Centos 的光盘中,已经提供了安装 KVM 所需软件,只须要部署基于光盘镜像的本地 yum 源,直接使用 yum 安装软件便可:
yum groupinstall -y “GNOME DeskTop” // 安装 GNOME 桌面环境,若是是的话,则能够省略vim

yum -y install qemu-kvm                                 // kvm 模块
yum -y install qemu-kvm-tools                        // kvm 调试工具,可不安装
yum -y install virt-install                                  // 构建虚拟机的命令行工具
yum -y install qemu-img                                 // qemu 组件,建立磁盘、启动虚拟机等
yum -y install bridge-utils                                // 网络支持工具
yum -y install libvirt                                        // 虚拟机管理工具
yum -y install virt-manager                            // 图形界面管理虚拟机

注意:在使用 yum 安装完毕桌面后执行“ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target” 命令,将系统默认运行的 target 更改成 graphical.targe。重启后将进入图形界面,若不执行,则重启可能会报错。
安装完毕后,重启系统,查看 CPU 是否支持虚拟化:api

[root@localhost /]# cat /proc/cpuinfo | grep vmx            # 对于 Intel 的服务器可使用此命令查看,只要有输出就说明 CPU 支持虚拟化
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 
.........省略部分
对于 AMD 服务器可使用以下命令查看:
[root@localhost /]# cat /proc/cpuinfo | grep smv

检查 KVM 模块是否安装:安全

[root@localhost /]# lsmod | grep kvm
kvm_intel             170181  0 
kvm                   554609  1 kvm_intel
irqbypass              13503  1 kvm

开启服务:服务器

[root@localhost /]# systemctl start libvirtd
[root@localhost /]# systemctl enable libvirtd

配置网络:
在libvirt中运行KVM网络有两种方法:NAT和Bridge,默认是NAT。
关于两种模式的说明以下:
(1)NAT模式:也是用户模式,数据包由NAT方式经过主机的接口进行传送,能够访问外网,可是没法从外部访问虚拟机网络,因此通常不会用到。
(2)Bridge:也就是桥接模式,这种模式容许虚拟机像一个独立的主机同样拥有网络,外部的机器能够直接访问到虚拟机内部,但须要网卡支持,通常有线网卡都支持。
这里以Bridge(桥接模式)为例:网络

[root@localhost /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
BOOTPROTO=none                       // 此处改成 none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=b9f932a2-0dad-4119-a05e-e03322ff94d1
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0                                // 在末尾添加此行
[root@localhost /]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0 
[root@localhost /]# vim /etc/sysconfig/network-scripts/ifcfg-br0            # 复制一个网卡配置,并修改
TYPE=Bridge                                // 将类型改成桥接
BOOTPROTO=static                     // 静态
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0                                   // 网卡名称
DEVICE=br0                                
ONBOOT=yes 
IPADDR=192.168.1.10                 // 配置 IP 及网关
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

重启 network 服务:架构

[root@localhost /]# /etc/init.d/network restart 
Restarting network (via systemctl):                        [  OK  ]       // 输出为 OK 表示成功,反之则为 no 失败。

KVM 管理:ide

[root@localhost /]# virt-manager                # 打开 图形化虚拟机管理软件

部署 KVM 虚拟化平台
建立存储池:
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
以一样的操做建立一个镜像存储池,命名为 iso,目录为/data_kvm/iso/,而后将系统光盘上传到此目录:
部署 KVM 虚拟化平台
在 test 上建立存储卷
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
部署 KVM 虚拟化平台
KVM虚拟化平台至此已部署完成,下面附加一些经常使用的管理命令:
工具

[root@localhost ~]# virsh -h                #查看命令帮助
[root@localhost ~]# ls /etc/libvirt/qemu               #查看KVM的配置文件存放目录
(test01.xml是虚拟机系统实例的配置文件)
networks  test01.xml
[root@localhost ~]# virsh list --all               #查看虚拟机状态
 Id    名称                         状态
----------------------------------------------------
 2     test01                         running

[root@localhost ~]# virsh shutdown test01              #关闭虚拟机
[root@localhost ~]# virsh start test01                       #开启虚拟机
[root@localhost ~]# virsh destroy test01                 #强制关机
[root@localhost ~]# virsh create /etc/libvirt/qemu/test01.xml             #经过配置文件启动虚拟机
[root@localhost ~]# virsh suspend test01                 #挂起虚拟机
[root@localhost ~]# virsh resume test01                  #从挂起状态恢复运行虚拟机
[root@localhost ~]# virsh autostart test01                 #设置虚拟机伴随宿主机自动启动

#虚拟机的删除与添加:
[root@localhost ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml            #导出虚拟机配置
#删除虚拟机:
[root@localhost ~]# virsh  shutdown test01   
[root@localhost ~]# virsh  undefine test01
[root@localhost ~]# virsh list --all             #查看虚拟机是否被删除
 Id    名称                         状态
----------------------------------------------------

#经过备份的配置文件从新定义虚拟机:
[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# mv test02.xml test01.xml 
[root@localhost qemu]# virsh define test01.xml

 #修改虚拟机配置(内存大小等)信息:
 [root@localhost qemu]# vim /etc/libvirt/qemu/test01.xml 

[root@localhost qemu]# virt-df -h test01         #在宿主机上查看虚拟机磁盘信息
克隆虚拟机:

[root@localhost qemu]# virt-clone -o test01 -n test02 -f /kvm/store/test02.qcow2
#将test01克隆为test02
[root@localhost qemu]# virsh list --all                 #查看现有虚拟机
 Id    名称                         状态
----------------------------------------------------
 -     test01                         关闭
 -     test02                         关闭
虚拟机建立快照:
KVM虚拟机要使用快照功能,磁盘格式必须为qcow2

[root@localhost qemu]# virsh snapshot-create test01      #对虚拟机test01建立快照
[root@localhost qemu]# virsh snapshot-list test01                   #查看快照信息
 名称               生成时间              状态
------------------------------------------------------------
 1560191837           2019-06-11 02:37:17 +0800 shutoff
[root@localhost qemu]# virsh snapshot-revert test01 1560191837
#恢复虚拟机状态至1560191837
[root@localhost qemu]# virsh snapshot-delete test01 1560191837                   #删除快照
相关文章
相关标签/搜索