动态线条
动态线条end

KVM 产品简介

    公司部分 Linux 服务器利用率不高,为充分利用这些 Linux 服务器,可以部署 KVM 虚拟化平台,在物理机上运行多个业务系统(虚拟机)。例如,在运行 Nginx 的服务器上部署 KVM,然后在虚拟机上运行 Tomcat,MySQL等企业服务。

所属类别 : 软件

KVM:就是Keyboard Video Mouse的缩写。KVM 交换机通过直接连接键盘、视频和鼠标 (KVM) 端口,让您能够访问和控制计算机。KVM 技术无需目标服务器修改软件。这就意味着可以在 BIOS 环境下,随时访问目标计算机。KVM 提供真正的主板级别访问,并支持多平台服务器和串行设备。

KVM 技术已经从最初的基础SOHO办公型,发展成为企业 IT 基础机房设施管理系统。可以从kvm 客户端管理软件轻松的直接访问位于多个远程位置的服务器和设备。KVM over IP 解决方案具备完善的多地点故障转移功能、符合新服务器管理标准 (IPMI) 的直接界面,以及将本地存储媒体映射至远程位置的功能。

 基本信息

  • 中文名称

    KVM

  • 全称

    Keyboard Video Mouse

  • 本质

    计算机技术

  • 优点

    支持多平台服务器和串行设备

  • 地位

    网络中的管理设备

      ●   功能

           支持串口overIP远程调试串口设备

虚拟化

虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。

物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。

那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢?
这个主要是通过一个叫做 Hypervisor 的程序实现的。

根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:
1型虚拟化和2型虚拟化

1型虚拟化

Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。

2型虚拟化

物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。

理论上讲:

1型虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比2型要高;

2型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。

KVM是什么?

KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor:

它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。
它支持 x86 (32 and 64 位), s390, Powerpc 等 CPU。
它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。
它需要支持虚拟化扩展的 CPU。
它是完全开源的。

KVM架构

KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。

  但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。

Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被 KVM 置于一种受限制的 CPU 模式下运行。
KVM:运行在内核空间,提供CPU 和内存的虚级化,以及客户机的 I/O 拦截。Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理。
QEMU:修改过的为 KVM 虚机使用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过 IOCTL /dev/kvm 设备和 KVM 交互。

KVM功能

KVM 所支持的功能包括:

支持CPU 和 memory 超分(Overcommit)
支持半虚拟化I/O (virtio)
支持热插拔 (cpu,块设备、网络设备等)
支持对称多处理(Symmetric Multi-Processing,缩写为 SMP )
支持实时迁移(Live Migration)
支持 PCI 设备直接分配和 单根I/O 虚拟化 (SR-IOV)
支持 内核同页合并 (KSM )
支持 NUMA (Non-Uniform Memory Access,非一致存储访问结构 )

KVM常用工具

libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
Virsh:基于 libvirt 的 命令行工具 (CLI)
Virt-Manager:基于 libvirt 的 GUI 工具
virt-v2v:虚机格式迁移工具
virt-* 工具:包括 Virt-install (创建KVM虚机的命令行工具), Virt-viewer (连接到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等
sVirt:安全工具

KVM 虚拟化平台配置

1、真机 Linux 必须是 64 位操作系统,RHEL5.4及以上的系统平台

2、CPU 支持 VT 技术(BIOS 中开启)

注意:VMware 虚拟机需要

内存 至少3G

处理器 2核

硬盘 40G

虚拟化引擎必须勾选 虚拟化 Intel VT -x/EPT 或 AMD -V/RVI(V)

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

cat /proc/cpuinfo | egrep "vmx|svm"

4、安装前关闭 iptables 防火墙与 selinux

iptables -F

systemctl stop firewalld

setenforce 0

5、KVM 安装方式

(1)可在安装系统时选择桌面与所有虚拟化选项

(2)在已有的系统上安装 KVM 软件

在 CentOS7 的系统光盘镜像中,已经提供了安装 KVM 所需软件,通过部署基于光盘镜像的本地 yum 源,直接使用 yum  安装所需软件即可。

yum groupinstall "GNOME Desktop"           #安装 GNOME 桌面环境

yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils libvirt virt-manager

qemu-kvm                                 # KVM 模块

qemu-kvm-tools                        # KVM 调试工具,可不安装

qemu-img                                  # qemu 组件, 创建磁盘,启动虚拟机

bridge-utils                                # 网络支持工具

libvirt                                         # 虚拟机管理服务

virt-manager                             # 图形界面管理虚拟机

6、检测 KVM 模块安装是否成功

lsmod | grep kvm

如果没有的话,可以用 modprobe kvm 重新加载一下

注意:使用 yum 安装完桌面后,将系统默认的运行 target 修改为 graphical.target。重启系统后进入图形界面,若不修改系统的默认运行 target,重启时可能会出错。

从Centos7以后采用target概念来定义运行级别,分为3级、5级,含义如下:
3级->multi-user.target
5级->graphical.target
- 相关命令如下
- 查看当前运行的级别
runlevel
- 修改开机默认运行级别命令
systemctl set-default multi-user.target或graphical.target


查看开机默认运行级别:
systemctl get-default
修改默认运行级别为图形方式:
systemctl set-default graphical.target

 

开启服务,安装完成后还需要开启libvirtd服务

 systemctl start libvirtd

 systemctl enable libvirtd

7、设置 KVM 网络

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

1、用户模式,即 NAT 方式,这种方式是默认网络,数据包由 NAT 方式通过主机接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络。

2、桥接模式,这种模式允许虚拟机像一台独立的主机一样拥有网络,外部机器可以直接访问到虚拟机内部,但需要网卡支持,并编辑网卡参数文件以支持交接

Bridge 案例

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens32 ifcfg-br0

vim ifcfg-br0

TYPE  改为 Bridge

NAME 改为 br0

UUID 删掉

DEVICE 改为 br0

vim ifcfg-ens32

UUID 删掉

IPADDR  删掉

NETMASK  删掉

GATEWAY   删掉

DNS1  删掉

添加  BRIDGE=br0

重启 network 服务

systemctl restart network

8、virt-manager  KVM 管理工具

    virt-manager 是基于 libvirt 的图形化虚拟机管理软件,不同版本的 virt-manager 的界面和操作方法可能不同,是使用 KVM 虚拟机最简单的方法

virt-manager 

最好在 VMware 虚拟机 图形界面 打开

9、创建虚拟机

(1)创建存储池并创建存储卷

双击 QEMU/KVM  -> 存储 -> 单击 "  +  " 按钮新建存储池,创建两个存储池 KVM,ISO

用 ftp 将 CentOS7 安装镜像上传到服务器目录  /virtual/ISO  中。

KVM:用于存放虚拟机磁盘镜像文件

ISO:用于存放安装操作系统的镜像文件

(2)新建虚拟机

右击 QEMU/KVM -> 新建

本地安装               

                         前进

使用 ISO 镜像       PS:用存储池 ISO 上传的镜像

                         前进

 内存:2G

                          前进

选择或创建自定义存储    PS:用存储池 KVM 中的磁盘

                          前进

勾选 在安装前自定义配置

 网络为桥接

                          完成

引导选项   勾选    自动启动 主机引导时启动虚拟机                  应用

IDE CDROM 1    点击连接  把存储池 ISO 中的镜像连接            

                           开始安装

 

 KVM 基本功能管理

1、查看命令帮助

virsh -h

2、查看 KVM 的配置文件存放目录(CENTOS7.0.xml是虚拟系统实例的配置文件)

ls /etc/libvirt/qemu

ls /virtual/KVM/

3、查看虚拟机状态

virsh list --all

4、虚拟机的关机与开机,首先确保 acpid 服务安装并运行,在虚拟机中:

mkdir /media/cdrom

mount /dev/sr0 /media/cdrom

rpm -ivh /media/cdrom/Packages/acpid-2.0.19-9.e17.x86_64.rpm

 

systemctl start acpid

systemctl enable acpid

 

virsh shutdown centos7.0

virsh start centos7.0

5、强制关闭电源

virsh destroy centos7.0

6、通过配置文件启动虚拟机系统

virsh create /etc/libvirt/qemu/centos7.0.xml

7、挂起虚拟机

virsh suspend centos7.0

8、恢复虚拟机

virsh resume centos7.0

9、配置虚拟机实例伴随宿主机自动启动

virsh autostart centos7.0

上述命令将创建 /etc/libvirt/qemu/autostart/ 目录,目录内容为开机自动启动的系统

10、导出(备份)虚拟机配置

virsh dumpxml centos7.0 > /etc/libvirt/qemu/centos7.0-2.xml

11、虚拟机的删除与添加,删除虚拟机:

virsh destroy centos7.0

virsh undefine centos7.0

查看删除结果,CENTOS7.0 的配置文件被删除,但是磁盘文件不会被删除

通过 virsh list --all  查看不到 centos7.0 的信息,说明此虚拟机被删除

12、通过备份的配置文件重新定义虚拟机:

mv /etc/libvirt/qemu/centos7.0-2.xml /etc/libvirt/qemu/centos7.0.xml

重新定义虚拟机

 cd /etc/libvirt/qemu

virsh define centos7.0.xml

修改虚拟机配置信息(用来修改系统内存大小,磁盘文件等信息)关机情况下

通过 virsh 命令修改

virsh edit centos7.0

<memory unit='KiB'>1024152</memory>

 <currentMemory unit='KiB'>1024152</currentMemory>

 

 KVM 磁盘文件管理

    通过文件管理可以直接查看,修改,复制虚拟机的内部文件,例如,当系统因为配置问题无法启动时,可以直接修改虚拟机文件。虚拟机文件有 raw 与 qcow2、qed 格式,KVM 虚拟机默认使用 qcow2 格式,raw 格式性能最好,速度最快,缺点是不支持一些新的功能,如镜像,zlib 磁盘压缩,AES 加密等(qcow2 格式的磁盘存储空间更小,支持如 AES 加密,zlib 磁盘压缩),针对两种格式的文件有不同的工具可以选择,这里介绍本地,YUM 安装 libguestfs-tools 产生的命令工具(可以直接读取 qcow2 格式的磁盘文件),因此需要将 raw 格式的磁盘文件转换成 qcow2 格式。

转换 raw 格式到 qcow2 格式

查看镜像文件

qemu-img info /virtual/KVM/centos7.0

关闭虚拟机

 virsh shutdown centos7.0

转换磁盘文件格式

qemu-img convert -f raw -O qcow2 /virtual/KVM/centos7.0 /virtual/KVM/centos7.0.qcow2

qcow2 格式节省空间

修改 CENTOS7.0 的 xml 配置文件

virsh edit centos7.0

40      <driver name='qemu' type='qcow2' />

41       <source file='/virtual/KVM/centos7.0.qcow2' />

yum -y install libguestfs-tools

virt-cat 命令,类似于 cat 命令

 virt-cat -a /virtual/KVM/centos7.0.qcow2 /etc/sysconfig/network

virt-edit 命令,用于编辑文件,用法与 vim 基本一致

virt-edit -a /virtual/KVM/centos7.0.qcow2 /etc/resolv.conf

virt-df 命令用于查看虚拟机磁盘信息

 virt-df -h centos7.0

 

克隆介绍

     克隆是把虚拟机整个在复制出一份,通过克隆可快速创建一个同样的虚拟机,提高使用效率:

virsh destroy centos7.0

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

virt-clone -o centos7.0 -n centos7.0-2 --file /virtual/KVM/centos7.0-2.qcow2

 

 虚拟机快照

 虚拟机要使用镜像功能,磁盘格式必须是 qcow2

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

创建快照

 virsh snapshot-create centos7.0

查看快照版本信息

 virsh snapshot-current centos7.0

查看快照信息

 virsh snapshot-list centos7.0

恢复虚拟机状态至 1546617068

 virsh snapshot-revert centos7.0 1546617068

删除快照

 virsh snapshot-delete centos7.0 1546617124

 修改快照名称

 virsh snapshot-edit centos7.0 --snapshotname 1547092083 -rename

 

 

posted on 2019-10-25 11:41  玉树临风的猪  阅读(374)  评论(0)    收藏  举报