KVM 虚拟化的实现

1、KVM 虚拟化服务的构成前端

KVM 虚拟化主要由三大组件构成,即:KVM、QEMU、LIBVIRTDnode

一、KVM:KVM 是 Linux 内核的模块,他须要 CPU 的支持,采用硬件辅助虚拟化技术 Intel-VT,AMD-V,内存的相关如 Intel 的EPT 和 AMD 的 RVI 技术。python

二、QEMU:QEMU是一个虚拟化的仿真工具,经过 ioctl 与内核 kvm 交互完成对硬件虚拟化的支持。vim

三、LIBVIRTD:Libvirtd 是一个对虚拟化管理的接口和工具,提供用户端程序 virsh,virt-install,virt-manager,virt-view 与用户交互。后端

2、虚拟化服务的必备软件centos

qemu-kvm:为 KVM 提供底层仿真支持bash

libvirt-daemon:守护进程,管理虚拟机服务器

libvirt-client:用户端软件,提供客户端管理命令网络

libvirt-daemon-driver-qemu:libvirt 链接 qemu 的驱动ssh

可选软件

virt-install :系统安装工具

virt-manager :图形管理工具

virt-v2v :虚拟机迁移工具

virt-p2v :物理机迁移工具

3、虚拟机的组成

一、内核虚拟化模块(KVM)

二、系统设备仿真(QEMU)

三、虚拟机管理程序(LIBVIRT)

四、XML 文件(虚拟机配置声明文件,位置 /etc/libvirt/qemu/ )

五、磁盘镜像文件(虚拟机的硬盘,位置 /var/lib/libvirt/iamges/ )

4、虚拟机管理

使用 virsh 命令对 kvm 虚拟机进行常规管理。

a、查看虚拟机信息

一、查看 KVM 节点(服务器)信息

virsh nodeinfo

二、列出虚拟机

virsh list [--all]

三、列出虚拟网络

virsh net-list [--all]

四、查看指定虚拟机的信息

virsh nodeinfo 虚拟机名称

b、开关机操做

一、运行|重启|关闭 指定的虚拟机

virsh start|reboot|shutdown 虚拟机名称

二、强制关闭指定虚拟机

virsh destory 虚拟机名称

三、将指定虚拟机设置为开机自动运行

virsh autostart [--disable] 虚拟机名称

5、经常使用镜像盘类型对比

clipboard

通过以上表格的镜像盘格式对比,咱们能够很确定的知道,KVM 使用 QCOW2 格式的镜像盘时,对服务器资源的利用率最高的,固然系统默认的镜像盘格式。

6、虚拟机磁盘管理

使用命令 qemu-img

a、使用 qemu-img 命令对虚拟机的磁盘进行管理。

b、qemu-img 支持很是多的磁盘格式,例如 raw、qcow二、vdi、vmdk 等等。

c、qemu-img 命令格式


qemu-img 命令 参数 块文件名称 大小
经常使用命令有:
create           建立一个磁盘
convert          转换磁盘格式
info             查看磁盘信息
snapshot         管理磁盘快照
一、建立镜相盘文件
qemu-img create -f 格式 磁盘路径 大小
例如:
qemu-img create -f qcow2 disk.img 50G
表示建立一个名为 disk.img,大小为 50G,格式为 qcow2 的镜像盘文件
二、查看镜像盘文件的信息
qemu-img info 磁盘路径
例如:
qemu-img info disk.img
三、加 -b 参数使用后端模板文件
例如:
qemu-img create -b disk.img -f qcow2 disk1.img
表示之后端镜像盘 disk.img 为模板,建立一个名为 disk1.img 格式为 qcow2 的镜像盘,这里没有指定大小,表示与后端镜像盘 disk.img 相同大小。

7、COW 技术原理

COW,即:Copy On Write 写时复制,该技术主要实现如下功能

a、直接映射原始盘的数据内容

b、当原始的旧数据有修改时,再修改以前自动将旧数据存入前端盘

c、对前端盘的修改不回写到原始盘

以下图所示:

clipboard

在 KVM 虚拟化中,对于 COW 技术的运用可谓是无处不在,最明显的莫过于虚拟机的克隆。

8、KVM 虚拟机的远程管理

a、使用 virsh 客户端工具

一、链接本地

[root@localhost ~]# virsh -c qemu:///system (默认选项)

二、链接远程

[root@localhost ~]# virsh -c qemu+ssh://user@ip.xx.xx.xx:port/system

b、使用 virt-manager 客户端工具

一、virt-manager 也能够经过 add connection 管理其它机器上的虚拟机,通常经过 “ remote tunnel over ssh ” 就能够了。

二、须要注意的是 virt-manager 须要使用 ssh 免密登录,若是没有免密登录,须要单独安装 python 的 ssh 相关模块,这里咱们可使用部署 key 的方法解决。

9、建立虚拟交换机

a、原理:调用 dnsmasp 提供 DNS、DHCP 等功能

b、建立配置文件 /etc/libvirt/qemu/networks/default.xml,并粘贴如下内容:

<network>
   <name>default</name>
   <bridge name="virbr0"/>
   <forward mode="nat"/>
   <ip address="192.168.20.254" netmask="255.255.255.0">
      <dhcp>
         <range start="192.168.20.1" end="192.168.1.200"/>
      </dhcp>
   </ip>
</network>
[root@localhost ~]# cd /etc/libvirt/qemu/networks/
[root@localhost networks]# vim default.xml

image

注意:bridge name="virbr0",这里时网卡名称,必定要与服务器的网卡名称相同,否则会报错。

c、使用 virsh 管理虚拟网络

net-list                          查看虚拟网络
net-define default.xml                  建立虚拟网络
net-undefine default                   删除虚拟网络
net-start default                     启动虚拟网络
net-destroy default                    中止虚拟网络
net-edit default                     修改 default 的网络配置
net-autostart default                   设置 default 虚拟网络开机启动

建立虚拟网络

[root@localhost networks]# virsh net-define eth1.xml

10、XML 管理

a、XML 配置文件说明

一、定义了一个虚拟机的名称、CPU、内存、虚拟磁盘、网卡等各类参数。

二、默认位于 /etc/libvirt/qemu/虚拟机名称.xml。

b、导出 XML 配置文件

一、查看:virsh dumpxml 虚拟机名称。

二、备份:virsh dumpxml 虚拟机名称 > 虚拟机名称.xml。

c、编辑虚拟机设置

一、对虚拟机的配置进行调整

①、编辑:virsh edit 虚拟机名称。

②、若修改 name、memory、disk、network,可自动保存为新虚拟机配置。

二、定义虚拟机

根据修改后的独立的 xml 文件定义新虚拟机。

virsh define XML描述文件

三、删除虚拟机

必要时能够删除多余的 XML 配置

①、好比虚拟机更名的状况

②、避免出现多个虚拟机的磁盘或者 MAC 地址冲突

③、virsh undefine 虚拟机名称

11、建立模板虚拟机

a、使用 virt-manager 命令调出虚拟系统管理器,新建虚拟机

[root@localhost ~]# virt-manager

image

b、选择网络安装,并前进

image

c、在 URL 框中输入咱们本身的内部 yum 源地址(centos 目录为挂载的光盘目录,对于光盘的挂载,这里省略)

image

d、设置内存、CPU

image

注意:这里内存最好时大于 2048M,CPU 最小为 2 ,不然后面的虚拟机系统没法安装。

e、设置磁盘镜像,选择建立自定义存储,建立存储卷,以下图所示的过程。

imageimageimageimageimage

f、设置虚拟机名称并指定网络,完成以后,就会进入 Centos 的系统安装界面,至于系统的安装,咱们就再也不一步步演示了。

image

通过上面的 6 步,咱们已经建立了一个 kvm 虚拟机的模板,这个模板时最小化安装,彻底纯净的。若是要使用云,则这个模板将会是关键性的存在,由于 KVM 使用了 COW 写时复制技术。

12、总结

通过一系列的阐述与演示,咱们是否有对 KVM 虚拟化有个大体的了解?其实 KVM 虚拟化,除了命令多以外,其余的跟 vsphere、xen 虚拟化没多少区别。并且,如今不少企业中都在使用 KVM ,而不少云环境的搭建也会有 KVM 的身影存在,所以,关于 KVM ,各位老铁们还得不断的了解啊。

相关文章
相关标签/搜索