KVM虚拟机管理

管理虚拟机

1. Libvirt

什么是Libvirt

	libvirt是用来管理虚拟机或虚拟化功能的软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等。Libvirt概括起来包括一个API库(libvirt API)、一个 daemon(libvirtd进程)和一个命令行工具(virsh //'versh//工具集)。
	Libvirt的主要目标是:提供一种单一的方式管理多种不同的虚拟化提供方式和 hypervisor。
	Hypervisor——一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。

2. virt-manager

简介

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

主要功能

1. 定义和创建虚拟机  
2. 硬件管理 
3. 性能监视
4. 虚拟机的保存和恢复、暂停和继续、关闭和启动
5. 控制台
6. 在线和离线迁移启用virt-manager  

使用

	应用程序----系统工具----虚拟系统管理器  
	输入virt-manager命令  

3. virsh

简介

	virsh是使用libvirt management API构建的管理工具

**工作模式 **

# 立即模式
	virsh [选项][参数]
# 交互模式
	virsh

连接虚拟机

# 如果是CentOS7,需要在虚拟机里运行以下命令

# ttyS0串行终端 grubby[ˈɡrʌbi](肮脏的)
# grubby是一个命令行工具,用于更新和显示有关grub,lilo,elilo (ia64),yaboot(powerpc)和zipl(s390)引导加载程序的配置文件的信息。它主要设计用于安装新内核的脚本,并需要查找有关当前引导环境的信息。
# --update-kernel 指定针对的内核版本。ALL为针对所有内核版本修改参数
# --args新内核的默认参数或正在更新的内核的新参数
$ grubby --update-kernel=ALL --args="console=ttyS0" 
$ reboot

# 如果想退出虚拟机连接,按“Ctrl ]”可以随时退出。如果是CentOS6的系统,需要做以下修改:   

# 1. 添加ttyS0的许可,允许root登陆
$ echo "ttyS0" >> /etc/securetty
# 2. 编辑/etc/grub.conf文件,在内核启动参数后面加上console=ttyS0
# 3. reboot重启

4. KVM文件管理

通过文件管理可以直接查看、修改、复制虚拟机的内部文件。
例如,当系统因为配置文件无法启动时,可以直接修改虚拟机的文件。

实例

创建一个raw格式的磁盘文件
$ qemu-img create /kvm-vm/vmtest01.img 8G 
Formatting '/kvm-vm/vmtest01.img', fmt=raw size=8589934592
查看一下
$ls -lh 
总用量 3.0G
-rw-------. 1 qemu qemu 11G 928 22:40 centos7-vm001.qcow2
-rw-r--r--. 1 qemu qemu 1.3G 929 09:28 centos7-vm002.qcow2	 
drwx------. 2 root root 16K 927 10:45 lost found
-rw-r--r--. 1 root root 8.0G 929 09:27 vmtest01.img

$ qemu-img info vmtest01.img 
image: vmtest01.img
file format: raw	 
virtual size: 8.0G (8589934592 bytes) 
disk size: 0
# 虽然通过ls命令看到磁盘为8G,但是实际空间大小为0,所以通过qemu-img创建的磁盘为稀疏模式磁盘。
# 通过virt-manager或者virt-install命令创建新虚拟机并安装好
 
$virt-install --name vmtest02 --vcpus 1 --ram 1024 --disk /kvm-vm/vmtest01.img,format=raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=centos7.0  --location=/iso/CentOS-7-x86_64-DVD-1908.iso

开始安装......	 
搜索文件 .treeinfo......	| 366 B
00:00:00
搜索文件 vmlinuz......	| 5.1
MB 00:00:00
搜索文件 initrd.img......	| 41
MB 00:00:01
域安装仍在进行。您可以重新连接到控制台以便完成安装进程。

安装完成后,查看虚拟机状态
$ virsh list --all	 
Id	名称	状态
----------------------------------------------------
2	vm002	running
4	vmtest01	running
-	centos7.0	关闭关闭虚拟机:
$ virsh shutdown vmtest01	 
域 vmtest01 被关闭

$ virsh list --all
Id	名称	状态
----------------------------------------------------
2	vm002	running
-	centos7.0	关闭
-	vmtest01	关闭

# 转换磁盘格式为qcow2  
$ qemu-img convert -f raw -O qcow2 /kvm-vm/vmtest01.img /kvm-vm/vmtest01.qcow2
$ ls -lh 总用量 5.5G
-rw-------. 1 qemu qemu   11G 928 22:40 centos7-vm001.qcow2
-rw-r--r--. 1 qemu qemu 1.3G 929 10:01 centos7-vm002.qcow2
drwx------. 2 root root 16K 927 10:45 lost found
-rw-r--r--. 1 root root 8.0G 929 09:59 vmtest01.img
-rw-r--r--. 1 root root 1.3G 929 10:01 vmtest01.qcow2 
$ qemu-img info vmtest01.qcow2 
image: vmtest01.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes) disk size: 1.2G
cluster_size: 65536
Format specific information:
			compat: 1.1	                                                    lazy refcounts: false
			
# 修改vmtest01的xml配置文件,主要是修改type和source部分  
$ virsh edit vmtest01

# 然后启动vmtest01虚拟机  
$ virsh start vmtest01 
	域 vmtest01 已开始

5. guestfish

主要参数

# guestfish [--ro|--rw]  -i -a /path/to/disk.img 
# guestfish [--ro|--rw] -i -d name-of-libvirt-domain
# Guestfish是用于检查和修改虚拟机文件系统的shell程序和命令行工具。
# -r --ro 只读模式
# -i --inspector 检查寻找操作系统的磁盘,并像在真正的虚拟机上一样装载文件系统。
# -d --domain 指定域
# -a --add 指定磁盘文件
guestfish --ro -i -d vm_01

6. KVM虚拟机克隆

实例

# 查看虚拟机状态  
	$ virsh list --all
	Id	名称	状态
	----------------------------------------------------
	17	vmtest01	running	 
	-	centos7.0	关闭
	-	vm002	关闭

# 从vm002克隆到vm003
	$ virt-clone -o vm002 -n vm003 -f /kvm-vm/vm003.qcow2

# 查看虚拟机状态
	$ virt-clone -o vm002 -n vm003 -f /kvm-vm/vm003.qcow2

# 查看虚拟机状态
	$ virsh list --all
	Id	名称	状态
	----------------------------------------------------
	17	vmtest01	running	 
	-	centos7.0	关闭
	-	vm002	关闭
	-	vm003	关闭

# 启动虚拟机
	$ virsh start vm003 
	域 vm003 已开始

	$ virsh list --all	 
	Id	名称	状态
	----------------------------------------------------
	17	vmtest01	running
	18	vm003	running
	-	centos7.0	关闭
	-	vm002	关闭

7. KVM虚拟机快照

简介

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

实例

对虚拟机vm002做快照

```shell
$ virsh snapshot-create vm002

已生成域快照 1507040414
或者在创建快照的同时给快照一个名字
$ virsh snapshot-create-as vm002 firsh_snap 
已生成域快照 firsh_snap
```

查看快照信息  

```shell
$ virsh snapshot-list vm002
名称	生成时间	状态
------------------------------------------------------------ 1507040414	2017-10-03 22:20:14  0800 shutoff
firsh_snap	2017-10-03 22:26:49  0800 shutoff
```

查看当前快照信息

```shell
$ virsh snapshot-current vm002
<domainsnapshot>
<name>firsh_snap</name>	//快照版本号
<state>shutoff</state>
<parent>	 	  
<name>1507040414</name>
</parent>
<creationTime>1507040809</creationTime>
<memory    snapshot='no'/> 
```

恢复虚拟机状态到1507040414

```shell
$ virsh snapshot-revert vm002 1507040414

# 验证是否恢复
$ virsh snapshot-current vm002
<domainsnapshot>
<name>1507040414</name>	//快照版本号
<state>shutoff</state>
<creationTime>1507040414</creationTime>
<memory snapshot='no'/>
```

删除快照  

```shell
$ virsh snapshot-list vm002 
名称	生成时间	状态
------------------------------------------------------------ 1507040414	2017-10-03 22:20:14  0800 shutoff
firsh_snap	2017-10-03 22:26:49  0800 shutoff	
$ virsh snapshot-delete vm002 firsh_snap
已删除域快照 firsh_snap

$ virsh snapshot-list vm002	  
名称	生成时间	状态
------------------------------------------------------------ 1507040414	2017-10-03 22:20:14  0800 shutoff
```
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值