一、libvirt架构概述

libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统

ibvirtd该后台进程主要实现以下功能:

1)远程代理
所有remote client发送来的命令,由该进程监测执行
     (2)本地环境初始化
libvirt服务的启停,用户connection的响应等
    (3)根据环境注册各种Driver(qemu, xen, storage…)的实现
不同虚拟化技术以Driver的形式实现,由于libvirt对外提供的是统一的接口,所以各个
Driver就是实现这些接口,即将Driver注册到libvirt中。 

KVM之管理虚拟机_第1张图片

查看libvirtd服务状态

KVM之管理虚拟机_第2张图片

如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。 

虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中

KVM之管理虚拟机_第3张图片

可以看到创建的3个虚拟机,libvirt的xml文件分为几个重要部分,整体结构如下: 

虚拟机整体信息

系统信息

硬件资源特性

突发事件处理

虚拟磁盘(单个或多个)

虚拟光盘(可选)

虚拟网络(单个或者多个)

Vnc/spice配置

具体格式可以参考:http://libvirt.org/formatdomain.html

二、使用virt-manager管理虚拟机 

virt-manager应用程序是一个桌面用户接口,用于通过libvirt管理虚拟机。它的主要目标是管理KVM,不过也可以管理Xen和LXC(Linux容器)。它提供了运行域的汇总视图,当前性能和资源利用统计。向导可以允许创建新域,以及配置、调整域的资源分配和虚拟硬件。内嵌的VNC和SPICE的客户端提供了一个全图形控制台。 


virt-manager主要功能
   定义和创建虚拟机
  硬件管理
  性能监视
  虚拟机的保存和恢复、暂停和继续、关闭和启动
  控制台
  在线和离线迁移

1、启用virt-manager

KVM之管理虚拟机_第4张图片

2、配置虚拟机启动选项

KVM之管理虚拟机_第5张图片


KVM之管理虚拟机_第6张图片

KVM之管理虚拟机_第7张图片

3、添加USB设备: 


KVM之管理虚拟机_第8张图片

可以添加宿主机上的USB设备到虚拟机中使用,选择添加硬件,添加USB主机设备选择要连接的宿主机上的USB设备即可。

4、调整监视参数,默认只监视CPU。

KVM之管理虚拟机_第9张图片

KVM之管理虚拟机_第10张图片

KVM之管理虚拟机_第11张图片

KVM之管理虚拟机_第12张图片


5、连接远程的KVM主机,进行管理

KVM之管理虚拟机_第13张图片

建立连接,添加必要的参数。需要yum -y install openssh-askpass软件包支持

KVM之管理虚拟机_第14张图片

三、使用virsh来管理虚拟机 

virsh是使用libvirt management API构建的管理工具
virsh的名称的含义是virtualization shell它有两种工作模式: 

立即模式

KVM之管理虚拟机_第15张图片

交互模式

KVM之管理虚拟机_第16张图片

2、Virsh常用命令总结 

attach-devic:使用XML文件中的设备定义在应似机中源加设备

attach-disk:在虚拟机中附加磁盘设备

attach-interface:在虚拟机中附加新网络接口

create:从XML配置文件生成虚拟机并启动虚拟机

define:为虚拟机输出XML配置文件

destroy:强制停止虚拟机

detach-device:从虚拟机分离设备,使同样的XML描述作为命令attach-device

detach-disk:从虚拟机废了磁盘设备

detach-interface:从虚拟机分离网络接口

demblkstat:显示正在运行的虚拟机的块设备统计

domid:显示虚拟机ID

domifstat:显示正在运行的虚拟机的网络接口统计

dominfo:显示虚拟机信息

domname:显示虚拟机名称

domstate:显示虚拟机状态

domuuid:显示虚拟机的UUID

dumpxml:输出虚拟机XML配置文件

help:打印基本帮助信息

list:列出所有虚拟机

migrate:将虚拟机迁移到另一台主机上

nodeinfo:有关管理程序的输出信息

quit:退出这个交互终端

reboot:重启虚拟机

restore:恢复以前保存在文件中的虚拟机

resume:恢复暂停的虚拟机

save:将虚拟机当前的状态保存到某个文件中

setmaxmem:为管理程序设定内存上限

setmem:为虚拟机设定分配的内存

setvcpus:修改虚拟机分配的虚拟cpu个数

shutdown:关闭虚拟机

suspend:暂停虚拟机

undefine:删除与虚拟机关联的所有文件

vcpuinfo:显示虚拟机的虚拟cpu信息

vcpupin:控制虚拟机的虚拟cpu亲和性

version:显示virsh版本


3、KVM基本功能管理: 


1) 查看KVM的配置文件存放目录 

KVM之管理虚拟机_第17张图片

2)查看虚拟机状态 

KVM之管理虚拟机_第18张图片

3) 虚拟机关机与开机

KVM之管理虚拟机_第19张图片

4)强制虚拟机系统关闭电源 

图片20.png

5)通过配置文件启动虚拟机系统实例 

KVM之管理虚拟机_第20张图片

6) 挂起虚拟机 

KVM之管理虚拟机_第21张图片

7) 恢复虚拟机 

图片23.png

8) 配置虚拟机实例伴随宿主机自动启动和取消自动启动 

图片24.png

上述命令会在/etc/libvirt/qemu/autostart/目录下,创建文件。

图片25.png

相反取消之后/etc/libvirt/qemu/autostart/中文件也会消失

图片26.png

9) 导出虚拟机配置

KVM之管理虚拟机_第22张图片

10) 虚拟机的删除与添加 

KVM之管理虚拟机_第23张图片

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

KVM之管理虚拟机_第24张图片

11) 修改虚拟机配置信息 

KVM之管理虚拟机_第25张图片

或者使用virsh修改:

图片31.png


12) 查看虚拟机信息 

KVM之管理虚拟机_第26张图片

13)连接虚拟机 

KVM之管理虚拟机_第27张图片

如果是CentOS7想要连接成功,需要在虚拟机里运行以下命令

图片35.png

如果是CentOS6的系统,需要做以下修改:

1、添加ttyS0的许可,允许root登陆 

图片36.png

2、编辑/etc/grub.conf文件,在内核启动参数后面加上console=ttyS0 

KVM之管理虚拟机_第28张图片

3编辑/etc/inittab文件,最后一行加入内容 S0: 12345: respawn:/sbin/agetty 


KVM之管理虚拟机_第29张图片

最后重启,reboot

如果想要推出连接,ctrl  +  ]

四、安装yum  install  -y  libguestfs  libguestfs-tools软件工具,就可以直接读取qcow2格式的磁盘文件

下的这些操作最好要在虚拟机关机状态下做,否则会出错。

1、virtcat命令类似于cat命令

图片39.png


vrit-edit命令用于编辑文件,用法与vim基本一致,例如把主机名改成

图片40.png

再查看发现主机名已经更改。

图片41.png

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

图片42.png

4、virt-copy-out:这个命令可以把虚拟机里的文件复制出来, 法如下

virt-copy-out -d domname file|dir [file|dir ...] localdir
virt-copy-out -a disk.img file|dir [file|dir ...] localdir 

KVM之管理虚拟机_第30张图片

test.txt文件拷贝到centos7-1/tmp目录下。

查看test.txt文件内容。

图片44.png

guestfish命令语法如下:

guestfish [--ro|--rw] -i -a /path/to/disk.img
guestfish [--ro|--rw] -i -d name-of-libvirt-domain  

KVM之管理虚拟机_第31张图片

KVM虚拟机克隆

1) 查看虚拟机状态 

KVM之管理虚拟机_第32张图片

1) centos7-1克隆到centos7-3

KVM之管理虚拟机_第33张图片


KVM之管理虚拟机_第34张图片

KVM虚拟机快照 

快照实际上做的是虚拟机的XML配置文件,默认快照XML文件在/var/lib/libvirt/qemu/snapshot/虚拟机名/下,快照只支持qcow2磁盘格式的系统。 

1) 对虚拟centos7-1做快照 

KVM之管理虚拟机_第35张图片

2) 查看快照信息 

KVM之管理虚拟机_第36张图片

3)查看当前快照信息 

KVM之管理虚拟机_第37张图片

4) 恢复虚拟机状态到1533498196

KVM之管理虚拟机_第38张图片

5) 删除快照 

KVM之管理虚拟机_第39张图片