KVM架构与管理

一、KVM 架构介绍

虚拟化(系统虚拟化):是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

名词:物理机或宿主机(Host,即真机)、虚拟机里面系统(Guest OS)

虚拟机不能直接与物理机资源访问,必须通过VMM(虚拟机管理程序,即VDSM或称Hypervisor)才能访问物理机资源

虚拟化类型

  • 全虚拟化(本地虚拟化、硬件辅助全虚拟化):虚拟机中运行的软件与系统不需经过任何修改,就好比运行在真实硬件一样;但依然使用虚拟硬件设备,并且需要硬件支持,物理机需支持虚拟化功能(grep -E ‘vmx svm’ /proc/cpuinfo,查询intel与AMD是否支持)

KVM架构与管理_第1张图片

  • 半虚拟化:另一种类似于全虚拟化的热门技术,它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件, 但是它的客户操作系统集成了虚拟化方面的代码,该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作;但半虚拟化需要客户操作系统做一些修改(配合VDSM),这是一个不足之处,但是半虚拟化提供了与原始系统相近的性能,与全虚拟化一样,半虚拟化可以同时能支持多个不同的操作系统

KVM架构与管理_第2张图片

虚拟化架构

  • 寄居架构:就是在操作系统之上安装和运行虚拟化程序,依赖于主机操作系统对设备的支持和物理资源的管理

KVM架构与管理_第3张图片

  • 裸金属架构(原生架构):就是直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。

KVM架构与管理_第4张图片

二、KVM简介

KVM是Kernel Virtual Machine的简写,使用半虚拟化技术创建虚拟机的模块,目前Red Hat只支持在64位的RHEL 5.4及以上的系统运行KVM(其余发行版也可使用),同时硬件需要支持VT技术;KVM的前身是QEMU,2008年被Red Hat公司收购并获得一项hypervisor技术,不过Red Hat的KVM被认为是将成为未来Linux hypervisor的主流,准确来说,KVM仅仅是Linux内核的一个模块,管理和创建完整的KVM虚拟机,需要更多的辅助工具

KVM自Linux 2.6.20版本后就直接整合到Linux内核,它依托CPU和虚拟化指令集(如Inter-VT、AMD-V)实现高性能的虚拟化支持;由于与Linux内核高度整合,因此在性能、安全性、兼容性、稳定性上都有很好的表现

KVM架构与管理_第5张图片

图上简单描述了KVM虚拟化架构,在KVM环境中运行的每个虚拟化操作系统都将表现为单个独立的系统进程。因此它可以很方便地与Linux系统中的安全模块进行整合(SElinux),可以灵活地实现资源的管理及分配

三、KVM安装

安装前要查看 CPU 是否支持虚拟化

Intel CPU:cat /proc/cpuinfo |grep --color vmx
AMD CPU:cat /proc/cpuinfo |grep --color smv

关闭selinux与firewalld

  • systemctl stop firewalld

  • setenforce 0

若以上操作有输出,就说明 CPU 支持虚拟化

实验环境注意勾选”CPU虚拟化”

KVM架构与管理_第6张图片

1.安装方式

  • 新装系统

    最简单的安装方法就是在安装系统的时候,选择桌面安装,然后选择虚拟化选项

KVM架构与管理_第7张图片

  • 已装系统

    在已有系统基础上,只需安装KVM所需软件即可

    配置本地yum源

[root@kvm ~]# yum -y groupinstall "X Window System"			//安装软件包组支持桌面环境
[root@kvm ~]# yum -y groupinstall "GNOME Desktop"			//安装软件包组Gnome桌面

[root@kvm ~]#ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target			//设置开机默认为图形化界面

[root@kvm ~]#ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target			//设置开机默认为命令行界面

[root@kvm ~]#reboot			//重启生效

[root@kvm ~]#yum -y install qemu-kvm			//KVM模块

[root@kvm ~]#yum -y install qemu-kvm-tools			//KVM调试工具,可不安装

[root@kvm ~]#yum -y install bridge-utils				 //网络支持工具

[root@kvm ~]#yum -y install virt-install				 //命令管理虚拟机工具

[root@kvm ~]#yum -y install libvirt					 //虚拟机管理工具

[root@kvm ~]#yum -y install virt-manager			 //图形界面管理虚拟机

[root@kvm ~]#yum -y install libguestfs-tools			 //virt-cat等命令的支持软件包

[root@kvm ~]#reboot								//重启系统

[root@kvm ~]#lsmod | grep kvm					//检查KVM模块是否安装

2.设置KVM网络

宿主服务器安装完成KVM,首先要设定网络,在libvirt中运行KVM网络有两种方法:NAT和Bridge,默认是NAT

  • 用户模式:即NAT方式,这种方式是默认网络,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络
  • 桥接模式:即Bridge方式,这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持

Bridge(桥接)模式配置

新安装的KVM没有桥接网络,所以需要配置桥接

[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728

TYPE=Ethernet
DEVICE=eno16777728
ONBOOT=yes
BRIDGE=br0

[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0

TYPE=Bridge
BOOTPROTO=dhcp
DEVICE=br0
ONBOOT=yes

[root@kvm ~]# systemctl restart network

KVM架构与管理_第8张图片

出现以上信息,说明桥接成功

3.KVM虚拟机安装

3.1 创建存储池

在安装虚拟机之前,为了方便管理虚拟机的磁盘及镜像文件,一般建议单独新建存储池(即磁盘文件和镜像存储位置指定)

[root@kvm ~]# mkdir -pv /kvm/{store,iso}				//新建磁盘及镜像存储目录

[root@kvm ~]# virt-manager			//开启图形化管理工具

KVM架构与管理_第9张图片

双击”QEMU/KVM”,选择”存储选项卡”,然后单击”+”按钮新建存储池

KVM架构与管理_第10张图片

根据提示输入存储池名称,如store

KVM架构与管理_第11张图片

指定store存储池里面内容的存储目录(该处为之前新建的/kvm/store)

KVM架构与管理_第12张图片

同样的操作再创建一个镜像存储池,命名为iso

KVM架构与管理_第13张图片

目录为kvm/iso即可

KVM架构与管理_第14张图片

KVM架构与管理_第15张图片

3.2 上传镜像到镜像池

存储池创建完成后,就可以将安装系统的ISO镜像文件上传到/kvm/iso目录,以方便后续安装系统使用

上传过程略…,这里以Centos 6.5 64bit镜像为例

KVM架构与管理_第16张图片

3.3 新建存储卷

存储卷即安装系统时虚拟机所使用的磁盘文件,那么在vmware软件中是在新建虚拟机时可选择磁盘文件的位置和大小,而KVM可提前新建虚拟机所使用磁盘文件及大小(当然也可直接使用默认KVM创建的default存储池空间),相比更加灵活

单击刚创建好的”store”存储池,单击对话框右侧的“加号”按钮建立一个存储卷

KVM架构与管理_第17张图片

设置新建存储卷取名并指定卷最大容量(格式选择”qcow2”不然不能快照)

KVM架构与管理_第18张图片

3.4 新建虚拟机

回到虚拟系统管理器后,选择”新建虚拟机”选项

KVM架构与管理_第19张图片

选择“本地安装介质“,点击”前进”

KVM架构与管理_第20张图片

指定安装镜像文件,勾选“根据安装介质自动侦测操作系统”

KVM架构与管理_第21张图片

选择内存大小和CPU数量,点击“前进”

KVM架构与管理_第22张图片

选择虚拟机产生文件存储位置,这里选择之前新建存储卷”Centos_6.5”使用它的空间

KVM架构与管理_第23张图片

设置虚拟机的名称,并且勾选“在安装前自定义配置”

KVM架构与管理_第24张图片

设置显示 spice 类型为“VNC服务器”,地址为“所有接口”,键盘布局和真机一样(一定选择,不然里面键盘输入有问题)

KVM架构与管理_第25张图片

开始引导安装系统(其余硬件调整和VMware使用差不多,这里不再阐述)

KVM架构与管理_第26张图片

安装过程略。

KVM架构与管理_第27张图片

KVM架构与管理_第28张图片

4.KVM基本功能管理

4.1 KVM配置文件存放目录

[root@kvm ~]# ls /etc/libvirt/qemu

centos6.5.xml  networks

4.2查看虚拟机状态

[root@kvm ~]# virsh list --all

 Id    名称                         状态
----------------------------------------------------
 4     centos6.5                      running

4.3 虚拟机关机、开机、开机自启等操作

关机

[root@kvm ~]# virsh shutdown centos6.5			//关闭名为Centos6.5的KVM虚拟机

[root@kvm ~]# virsh list --all

 Id    名称                         状态
----------------------------------------------------
 4     centos6.5                      shut off
 
  • 注:KVM虚拟机默认是无法用virsh shutdown进行关机的,如果要想使用该命令关机,则必须在kvm虚拟机上安装acpid包,启动acpid服务,并且加入开机启动(并且shutdown命令只能在虚拟机启动后才能关闭)

开机

[root@kvm ~]# virsh start cento6.5			//开启名为centos6.5的kvm虚拟机

[root@kvm ~]# virsh list --all

 Id    名称                         状态
----------------------------------------------------
 4     centos6.5                      running
 

强制关机

[root@kvm ~]# virsh destroy centos6.5			//强制关闭名为centos6.5的KVM虚拟机

挂起(暂停)

[root@kvm ~]# virsh suspend centos6.5			//挂起名为centos6.5的虚拟机

[root@kvm ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 6     centos6.5                      pausd
 

恢复虚拟机

[root@kvm ~]# virsh resume centos6.5

开机自启KVM虚拟机

[root@kvm ~]# virsh autostart centos6.5
域 centos6.5标记为自动开始

配置文件备份

[root@kvm ~]# virsh dumpxml centos6.5 >/etc/libvirt/qemu/centos6.5.xml.bak			//导出虚拟机配置文件做备份(配置文件中存储虚拟机配置情况等,如CPU、内存等)

删除KVM虚拟机

[root@kvm ~]# virsh undefine centos6.5			//删除名为centos6.5的KVM虚拟机
域 centos6.5 已经被取消定义

[root@kvm ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------

  • 注:”undefine”选项只会删除该虚拟机配置文件,而使用的磁盘文件不会删除,如需要彻底删除注意删除磁盘文件;如果只是删除配置文件,当有备份的配置文件时,还可恢复该虚拟机

添加KVM虚拟机

[root@kvm ~]# virsh define /etc/libvirt/qemu/centos6.5.xml.bak			通过之前备份的配置文件,重新将centos6.5虚拟机添加
定义域 centos6.5(从 /etc/libvirt/qemu/centos6.5.xml.bak)

[root@kvm ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     centos6.5                      关闭
 

修改KVM虚拟机配置信息

[root@kvm ~]# virsh edit centos6.5			//编辑虚拟机centos6.5的配置文件


  centos6.5
  b1aed133-f66e-472f-bd2f-741d94e30e96
  1048576
  1048576
  1
  
    /machine
  
  
.....

[root@kvm ~]# vim /etc/libvirt/qemu/centos6.5.xml			//也可直接编辑配置文件,但不建议使用

5 KVM高级功能管理

5.1 raw磁盘格式转换为qcow2磁盘格式

KVM虚拟机常用磁盘格式为raw与qcow2格式,默认使用qcow2格式,那么其中raw格式的磁盘性能最好、速度最快,但不支持AES加密、zlib磁盘压缩等新功能,而qcow2格式磁盘存储空间更小,并支持AES加密、zlib、快照等新功能,缺点是性能较差 如果想管理指定虚拟机磁盘(如分区情况、磁盘数量等),可以使用”libguestfs-tools”工具(一般默认安装),下面举例,说明如和转换磁盘格式

qemu-img info /kvm/store/centos6.5			//查看指定磁盘文件的信息(如磁盘格式、占用磁盘大小等)

KVM架构与管理_第29张图片

qemu-img convert -f raw -O qcow2 raw格式磁盘镜像路径 qcow2格式磁盘镜像路径

选项:

  • -c:对输出的镜像文件进行压缩,但只有qcow2和qcow格式支持
  • -f:指定源磁盘格式
  • -O:指定转换后磁盘格式
qemu-img convert -f raw -O qcow2 /kvm/store/centos6.5 /kvm/store/centos6.5.qcow2			//将指定raw格式文件转换为qcow2磁盘格式文件(注意该虚拟机需关机)

qemu-img info /kvm/store/centos6.5.qcow2			//查看转换后磁盘格式信息

KVM架构与管理_第30张图片

  • 注:转换后,需更改KVM虚拟机配置文件,因为虚拟机中还是用原磁盘格式文件,需要更改为新转换后的磁盘文件,才能使用新磁盘格式
virsh edit centos6.5				//编辑指定名为centos6.5虚拟机配置文件
 24       
 25       

virsh start centos6.5					//启动该KVM虚拟机

5.2 管理KVM虚拟机文件

virt-cat -a 磁盘文件路径 文件绝对路径 //查看指定KVM虚拟机磁盘文件里指定路径内容

[root@kvm ~]# virt-cat -a /kvm/store/Centos6.5 /etc/sysconfig/network			//查看centos6.5磁盘文件中/etc/sysconfig/network内容

virt-edit -a 磁盘文件路径 文件决定路径 //编辑指定KVM虚拟机磁盘文件里指定路径内容

[root@kvm ~]# virt-edit -a /kvm/store/Centos6.5 /etc/sysconfig/network

virt-df -h 虚拟机名称 //查看指定KVM虚拟机磁盘使用情况

5.3 虚拟机克隆

克隆:即将虚拟机复制一份,快速创建一个同样的虚拟机,节省时间并提高创建效率

virt-clone -o 源虚拟机名称 -n 克隆的虚拟机名称 -f 克隆的虚拟机磁盘文件路径

[root@kvm ~]# virt-clone -o centos6.5 -n centos6.5_clone -f /kvm/store/Centos6.5_clone			//将centos6.5虚拟机克隆,生成centos6.5_clone并指定磁盘文件路径(注意克隆的虚拟机必须关机)

[root@kvm ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     centos6.5                      关闭
 -     centos6.5_clone                关闭

5.4 虚拟机快照

快照:将虚拟机系统的某个状态保存,通过快照可快速恢复到虚拟机系统的某个状态

  • 注:KVM快照只支持qcow2磁盘格式,如不是需转换

创建快照 virsh snapshot-create 虚拟机名称

[root@kvm ~]# virsh snapshot-create centos6.5			//给名为centos6.5虚拟机创建快照
已生成域快照 1558427973

查看快照信息 virsh snapshot-list 虚拟机名称

[root@kvm ~]# virsh snapshot-list centos6.5			//查看指定虚拟机所有创建的快照信息

 名称               生成时间              状态
------------------------------------------------------------
 1558427973           2019-05-21 16:39:33 +0800 shutoff


[root@kvm ~]# virsh snapshot-current centos6.5			//查看名为centos6.5虚拟机详细快照信息


  1558427973
  shutoff
  1558427973
  
  
    
    
  
  
......

恢复快照 virsh snapshot-revert 虚拟机名称 快照序号

[root@kvm ~]# virsh snapshot-revert centos6.5 1558427973			//将名为centos6.5的虚拟机恢复到"Name"为1558427973时的状态

删除快照 virsh snapshot-delete 虚拟机名称 快照序号

[root@kvm ~]# virsh snapshot-delete centos6.5 1558427973			//将centos6.5虚拟机"Name"为1558427973的快照删除

已删除域快照 1558427973

你可能感兴趣的:(linux,架构,运维,硬件架构)