一、libvirt架构概述:
libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统
ibvirtd该后台进程主要实现以下功能:
(1)远程代理
所有remote client发送来的命令,由该进程监测执行
(2)本地环境初始化
libvirt服务的启停,用户connection的响应等
(3)根据环境注册各种Driver(qemu, xen, storage…)的实现
不同虚拟化技术以Driver的形式实现,由于libvirt对外提供的是统一的接口,所以各个
Driver就是实现这些接口,即将Driver注册到libvirt中。
查看libvirtd服务状态
如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。
虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中。
可以看到创建的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
2、配置虚拟机启动选项
3、添加USB设备:
可以添加宿主机上的USB设备到虚拟机中使用,选择添加硬件,添加USB主机设备选择要连接的宿主机上的USB设备即可。
4、调整监视参数,默认只监视CPU。
5、连接远程的KVM主机,进行管理
建立连接,添加必要的参数。需要yum -y install openssh-askpass软件包支持。
三、使用virsh来管理虚拟机
virsh是使用libvirt management API构建的管理工具
virsh的名称的含义是virtualization shell它有两种工作模式:
立即模式
交互模式
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的配置文件存放目录
2)查看虚拟机状态
3) 虚拟机关机与开机
4)强制虚拟机系统关闭电源
5)通过配置文件启动虚拟机系统实例
6) 挂起虚拟机
7) 恢复虚拟机
8) 配置虚拟机实例伴随宿主机自动启动和取消自动启动
上述命令会在/etc/libvirt/qemu/autostart/目录下,创建文件。
相反取消之后/etc/libvirt/qemu/autostart/中文件也会消失
9) 导出虚拟机配置
10) 虚拟机的删除与添加
通过备份的配置文件重新定义虚拟机:
11) 修改虚拟机配置信息
或者使用virsh修改:
12) 查看虚拟机信息
13)连接虚拟机
如果是CentOS7想要连接成功,需要在虚拟机里运行以下命令
如果是CentOS6的系统,需要做以下修改:
1、添加ttyS0的许可,允许root登陆
2、编辑/etc/grub.conf文件,在内核启动参数后面加上console=ttyS0
3编辑/etc/inittab文件,最后一行加入内容 S0: 12345: respawn:/sbin/agetty
最后重启,reboot。
如果想要推出连接,ctrl + ]
四、安装yum install -y libguestfs libguestfs-tools软件工具,就可以直接读取qcow2格式的磁盘文件。
以下的这些操作最好要在虚拟机关机状态下做,否则会出错。
1、virtcat命令类似于cat命令。
vrit-edit命令用于编辑文件,用法与vim基本一致,例如把主机名改成
再查看发现主机名已经更改。
3、virt-df命令用于查看虚拟机磁盘信息
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
将test.txt文件拷贝到centos7-1的/tmp目录下。
查看test.txt文件内容。
guestfish命令语法如下:
guestfish [--ro|--rw] -i -a /path/to/disk.img
guestfish [--ro|--rw] -i -d name-of-libvirt-domain
KVM虚拟机克隆
1) 查看虚拟机状态
1) 从centos7-1克隆到centos7-3
KVM虚拟机快照
快照实际上做的是虚拟机的XML配置文件,默认快照XML文件在/var/lib/libvirt/qemu/snapshot/虚拟机名/下,快照只支持qcow2磁盘格式的系统。
1) 对虚拟机centos7-1做快照
2) 查看快照信息
3)查看当前快照信息
4) 恢复虚拟机状态到1533498196
5) 删除快照