KVM使用

本节所讲内容:
1.1 虚拟化产品对比介绍
1.2 安装 KVM 虚拟机
1.3 实戓 1:配置 KVM 网络桥接功能
1.4 实戓 2:使用 KVM 安装虚拟机
1.5 实戓 3:解决 centos6 下 shutdown 关丌了 KVM 虚拟机的问题

实验环境:
第四阶段以 centos7.4 为主
centos7.4 镜像下载: http://mirrors.163.com/centos/7.4.1708/isos/x86_64/ 注:安装系统时,把图形界面和开发工具安装好

1.1 虚拟化产品对比介绍

1.1.1 虚拟化产品对比介绍

  • vmware(esxi)
  • KVM (rhel6_x64 )
  • xen [kernel-xen] (rhel5)

虚拟化技术

  • 仿真虚拟化 [对系统硬件没有要求,性能最低]
  • 半虚拟化 [虚拟机可以使用真机物理硬件,性能高,需要改内核]
  • 全虚拟化 直接使用物理硬件,性能高

-vmware 支持仿真虚拟化
xen 半虚 REHL5 自带 xen, 安装时需要安装内核 rpm -ivh kernel-xen-xxx.rpm kvm 全虚拟化 RHEL6 自带 kvm

KVM 概述:

KVM 即 Kernel-based Virtual Machine 基亍内核的虚拟机。 KVM,是一个开源的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各个主要发行版本中。
它使用 Linux 自身的调度器进行管理,所以相相对于 Xen,其核心源码很少。KVM 目前已成为学术界的主 流 VMM(虚拟机监控器)之一。KVM 的虚拟化需要硬件支持(如 Intel VT 技术戒者 AMD V 技术)。是基于硬件的完全虚拟化。而 Xen 早期则是基于软件模拟的 Para-Virtualization。
KVM使用_第1张图片
KVM使用_第2张图片
KVM使用_第3张图片
KVM使用_第4张图片

1.2 安装 KVM 虚拟机

1.2.1 开机后查看 CPU 是否支持全虚拟化
1、查看 CPU 是否支持硬件虚拟化技术。 CPU 要支持 例:
查看自己的 CPU 是否支持全虚拟化虚拟化技术且是 64 位的
Intel:cat /proc/cpuinfo | grep --color vmx
AMD :cat /proc/cpuinfo | grep --color svm
看看 flag 有没有上面的 vmx 戒者是 svm,有的话就是支持全虚拟化技术
[root@xuegod63 Desktop]# cat /proc/cpuinfo | grep --color vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid

1.2.2 安装 KVM:

(1)安装 KVM 模块、管理工具和 libvirt,命令行安装:
[root@xuegod63 ~]#yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python -y
注:使用系统镜像,先配置好 yum 本地源

安装包

qemu-kvm  : kvm 主程序, KVM 虚拟化模块 virt-manager:  KVM 图形化管理工具
libvirt:    虚拟化服务
libguestfs-tools :  虚拟机的系统管理工具
virt-install :      安装虚拟机的实用工具  。比如  virt-clone 克隆工具就是这个包安装的 
libvirt-python  :   python 调用 libvirt 虚拟化服务的 api 接口库文件

1.2.3 查看安装完KVM后的服务:
[root@xuegod63 ~]# systemctl start libvirtd #开启虚拟化服务
[root@xuegod63 ~]# systemctl enable libvirtd #设置 libvirtd 服务开机启劢
[root@xuegod63 ~]# systemctl is-enabled libvirtd #查看是否是开机启劢 enabled

确定正确加载 kvm 模块
[root@xuegod63 ~]# lsmod | grep kvm kvm_intel 170086 0

kvm	566340   1 kvm_intel
irqbypass	13503   1 kvm

检查 KVM 模块是否成功安装

1.2.4 使用命令:virt-manager 建立虚拟机,

将 kvm 管理工具从英文界面,切换成中文界面:
[root@xuegod63 ~]# echo $LANG

 en_US.UTF-8

[root@xuegod63 ~]# LANG='zh_CN.UTF-8'
[root@xuegod63 ~]# virt-manager

KVM使用_第5张图片
KVM使用_第6张图片
安装桥设备工具:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/bridge-utils-1.2-9.el6.x86_64.rpm
把 eth0 绑到 br0 桥设备上:
[root@xuegod63 ~]# cd /etc/sysconfig/network-scripts/
[root@xuegod63 network-scripts]# cp ifcfg-ens33 /tmp/ #备份一下 eth0
[root@xuegod63 network-scripts]# vim ifcfg-ens33 #编辑配置文件为以下内容

 TYPE=Ethernet
PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33
UUID=c713acec-674b-411d-9e61-646482a292ca DEVICE=ens33
IPADDR=192.168.1.63	#这些蓝色内容接下来,需要删除 NETMASK=255.255.255.0
GATEWAY=192.168.1.1 
DNS1=202.106.46.151 
ONBOOT=yes
IPV6_PRIVACY=no 
PEERDNS=no
BRIDGE="br0"	#在文件最后插入这一行

生成桥设备的配置文件:
[root@xuegod63 network-scripts]# vim ifcfg-br0 #创建 ifcfg-br0 文件,并写入以下内容

DEVICE="br0"
NM_CONTROLLED="yes" ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=none
IPADDR=192.168.1.63 
NETMASK=255.255.255.0 
GATEWAY=192.168.1.1 
DNS1=192.168.1.1
注:TYPE="Bridge"	,   B要大写

[root@xuegod63 network-scripts]# service network restart 测试 br0:

root@xuegod63 network-scripts]# ifconfig

[root@xuegod63 network-scripts]# ping g.cn

PING g.cn (203.208.37.20) 56(84) bytes of data.
64 bytes from 203.208.37.20: icmp_seq=1 ttl=57 time=12.3 ms

查看桥接的信息:
[root@xuegod63 network-scripts]# brctl show

bridge name   bridge id	STP enabled   interfaces 
br0	8000.000c290283db	no	ens33
virbr0	8000.525400183a62	yes	virbr0-nic

1.4 实站 2:创建一台 KVM 虚拟机

1.4.1 创建一个分区,用于存放安装好的 Linux 操作系统:
[root@xuegod63 ~]# fdisk /dev/sdb #创建 sdb1,大小 20G

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xe2316600.
Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').

Command (m for help): n Command action
e	extended
p	primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): Using default value 2610

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table. Syncing disks.

格式化,挂载使用

[root@xuegod63 network-scripts]# mkfs.xfs /dev/sdb1
[root@xuegod63 network-scripts]#mount /dev/sdb1 /var/lib/libvirt/images/ #安装虚 拟机,默认存放的路径:
注:准备系统镜像:把 centos7.4 镜像上传到/var/lib/libvirt/images/目录下。

注:准备系统镜像:把 centos7.4 镜像上传到/var/lib/libvirt/images/目录下。
[root@xuegod63 ~]# virt-manager
KVM使用_第7张图片
KVM使用_第8张图片

1.4.3 KVM 虚拟机常用命令
[root@xuegod63 ~]# virsh list #列出在运行的虚拟机
[root@xuegod63 ~]# virsh start centos7-71 # centos7-71 虚拟机 [root@xuegod63 ~]# virsh shutdown centos7-71 #关闭 centos7-71 虚拟机
[root@xuegod63 ~]# virsh autostart centos7-71 #设置 centos7-71 虚拟机为物理机开机 后,自劢启劢
测试:
reboot 后,没有发现 kvm 虚拟机开机启动。原因是什么? 解决:
[root@xuegod63 ~]# chkconfig --list libvirtd #开机启动了 libvirtd 0:off 1:off 2:off 3:on 4:on5:on 6:off
[root@xuegod63 ~]# vim /etc/fstab #记得设置开机自劢挂载 sdb1,然后开机启动开了虚 拟机

/dev/sdb1	/var/lib/libvirt/images    xfs	defaults	0 0

1.5 解决 centos6 系统上 shutdown 关丌了虚拟机的问题

了解一下这个坑。
1.5.1 实验环境准备:

KVM使用_第9张图片
1.5.2. 解决方法:
在安装好的 KVM 的 Linux 虚拟机中安装并启动 acpid 服务 virsh shutdown 命令使用发送 acpi 指令来控制虚拟机的电源,
而 kvm 虚拟机最小化安装的 centos6 系统时默认是没有安装 acpi 服务的,会处理 shutdown 发来的关机信号。 在 centos7 最小化安装的 linux 系统上有安装 acpid 服务。
只需要在虚拟机里安装和启劢 acpid 服务即可。 做一件事: 安装 acpid 服务 -》 yum 源

1、给 KVM 虚拟机配置个 IP 安装
配置网卡 IP 地址:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
HWADDR="52:54:00:95:89:DE" 
IPADDR=192.168.1.71
NETMASK=255.255.255.0
GATEWAY=192.168.1.1 
DNS1=192.168.1.1
NM_CONTROLLED="yes" 
ONBOOT="yes"

[root@localhost ~]# service network restart #启动网卡

在 xuegod63 上搭建一个基于 http 协议 yum 源服务
[root@xuegod63 ~]# yum install httpd -y
[root@xuegod63 ~]# service httpd start
[root@xuegod63 ~]# mount /dev/cdrom /var/www/html/

配置 kvm 虚拟机 rhel6-71 的 yum 源
[root@xuegod63 ~]# ssh 192.168.1.71
[root@localhost ~ ]# cd /etc/yum.repos.d
[root@localhost ~ ]# vi rhel6.repo # 写入以下内容 [rhel6]

name= rhel6 baseurl=http://192.168.1.63/
#baseurl=file:///mnt/ 
enabled=1 
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@localhost ~ ]#rm -rf rhel-source.repo #删除多余的 yum 源配置文件
[root@localhost ~ ]# setenforce 0 #关闭 selinux
[root@localhost ~ ]#iptables -F #关闭防火墙

在 kvm 虚拟机 rhel6-71 安装 acpid 服务
[root@localhost yum.repos.d]# yum install acpid -y
[root@localhost yum.repos.d]# service acpid start //启动acpic 服务,
[root@localhost yum.repos.d]# chkconfig --list acpid

acpid	0:off	1:off	2:on 3:on4:on 5:on	6:off

//安装后默认会加入到开机 启劢的

在 xuegod63 KVM 真机上测试:
[root@xuegod63 ~]# virsh shutdown rhel6-71 #关闭 rhel6-71 虚拟机

第二章 KVM 虚拟机克隆和快照

本节所讱内容:
2.1 KVM 虚拟机克隆方法
2.2 虚拟机常用镜像格式对比
2.3 KVM 虚拟机快照功能使用方法
2.4 virsh 命令常见用法
2.5 KVM 常用镜像格式转换

2.1 KVM 虚拟机克隆方法
2.1.1 克隆 kvm 虚拟机 克隆前,centos7.0 需要提前关机。
语法:virt-clone -o 原虚拟机 -n 新虚拟机 -f 新虚拟机镜像存放路径
选项:-o old -n new
虚拟机镜像: 就是整个虚拟机文件。 不是操作系统光盘镜像 rhel6.5.iso 比如:KVM 虚拟机的镜像文件
[root@xuegod63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/
[root@xuegod63 ~]# cd /var/lib/libvirt/images/
[root@xuegod63 images]# ll -h
总用量 1.2G #实际镜像占用 1.2G

-rw------- 1 root root 9.1G 9 月   21 23:33 centos7.0.qcow2

#这就是虚拟机镜像文件,不是操作系统镜像格式是 rhel6.5.iso vmware 的镜像文件:
KVM使用_第10张图片
克隆后要修改mac地址和网卡
2.1.2 基于 centos7.0 克隆一台虚拟机:xuegod63-kvm2
[root@xuegod63 ~]# cd /var/lib/libvirt/images/
[root@xuegod63 images]# virt-clone -o centos7.0 -n xuegod63-kvm2 -f /var/lib/libvirt/images/xuegod63-kvm2.img

Allocating 'xuegod63-kvm2'	| 8.0 GB	03:34
Clone 'xuegod63-kvm2' created successfully. 

[root@xuegod63 images]# ll -h
总用量 3.2G

-rw------- 1 root root	9.1G 9 月   21 23:33 centos7.0.qcow2  (最大空间是 8G,没立即分配 磁)
-rw------- 1 root root	1.2G 9 月   23 18:03 xuegod63-kvm2.img 查看克隆完后,使用磁盘情况。

[root@xuegod63 images]# df -h

文件系统	容量   已用   可用 已用% 挂载点

/dev/sda3	10G	8.2G   1.9G	82% /
devtmpfs	2.9G	0   2.9G	0% /dev
tmpfs	2.9G	0   2.9G	0% /dev/shm
 tmpfs	2.9G   9.1M   2.9G	1% /run
tmpfs	2.9G	0   2.9G	0% /sys/fs/cgroup
/dev/sr0	4.3G   4.3G	0   100% /mnt
/dev/sda1	197M   174M	24M	88% /boot tmpfs	582M	40K   582M	1% /run/user/0
/dev/sdb1	20G   3.2G	17G	16% /var/lib/libvirt/images

2.1.3 KVM 虚拟机组成
一台 KVM 虚拟机由两部分组成:虚拟机配置文件和镜像 img 查看虚拟机的配置文件:
[root@xuegod63 images]# cd /etc/libvirt/qemu
[root@xuegod63 ~]# ls /etc/libvirt/qemu

 networks   centos7.0.xml    xuegod63-kvm2.xml

KVM使用_第11张图片
root@xuegod63 qemu]# vimdiff centos7.0.xml xuegod63-kvm2.xml 学到一招:
注:这里可以看出两者的 MAC 地址是不一样的。所以对克隆或复制出来的虚拟机启动后,要修改网 络,因为克隆出来的虚拟机的真实 MAC 地址和操作系统中的 ifcfg-eth0 中的 MAC 地址不一样。
启动 xuegod63-kvm2 测试一下:
KVM使用_第12张图片
KVM使用_第13张图片
2.1.5 在 rhel6 下 kvm 克隆后的操作
登录新克隆的虚拟机删除原来的 mac 和 IP 地址,让新克隆的机器可以上网:
[root@xuegod63 ~]# rm -rf /etc/udev/rules.d/70-persistent-*
[root@xuegod63 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0 #写入以下内容
KVM使用_第14张图片

2.2 虚拟机常用镜像格式对比

目前主要虚拟机的镜像格式:raw,cow, qcow,qcow2,vmdk
2.2.1 raw 格式镜像

  • raw:老牉的镜像格式,用一个字来说就是裸,也就是赤裸裸,你随便 dd 一个 file 就模拟了一个 raw 格式的镜像。由于裸的彻底,性能上来说的话还是不错的。centos6 上 KVM 和 XEN 默认的格式还是这 个格式。centos7 以上默认是 qcow2 。
    裸的好处还有就是简单,支持转换成其它格式的虚拟机镜像对裸露的它来说还是很简单的(如果其它 格式需要转换,有时候还是需要它做为中间格式),空间使用来看,这个很像磁盘,使用多少就是多少(du
    -h 看到的大小就是使用大小)。
    例: qcow2 转为 vmdk 方法是: qcow2 转为 raw ,然后把 raw 转为 vmdk 。也可以直接 qcow2 转为 vmdk
    扩展:
    佳能相机上的高保真用的就是这种 raw 格式。RAW 的原意就是“未经加工”。可以理解为:RAW 图像就是 CMOS 或者 CCD 图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW 理解为“数 字底片”
    缺点:不支持 snapshot 快照。

2.2.2 cow、qcow、qcow2 格式

  • 1、cow 格式:还没有成熟,就被放弃了。后来被 qcow 格式所取代。
  • 2、qcow 格式:刚刚出现的时候有比较好的特性,但其性能和 raw 格式对比还是有很大的差距,目 前已经被新版本的 qcow2 取代。
  • 3、qcow2 格式:
    现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前 qcow2 的性能上接近 raw 裸格式的性

qcow2 格式支持 snapshot,可以在镜像上做 N 多个快照,具有以下优点:
更小的存储空间
支持创建 image 镜像
支持多个 snapshot,对历叱 snapshot 迚行管理 支持 zlib 的磁盘压缩
支持 AES 的加密

2.2.3 vmdk 格式:
VMware 的格式,整体性能最好,因为原本 VMware 就是做虚拟化起家。从性能和功能上来说,vmdk 应该算最出色的,由于 vmdk 结合了 VMware 的很多能力,目前来看,KVM 和 XEN 使用这种格式的情 况不是太多。但就 VMware 的企业级虚拟化 Esxi 来看,它的稳定性和各方面的能力都很好

KVM使用_第15张图片
2.3.2 创建 KVM 快照
在 centos6 下,kvm 虚拟机默认使用 raw 格式的镜像格式,性能最好,速度最快,它的缺点就是不 支持一些新的功能,如支持镜像,zlib 磁盘压缩,AES 加密等。
要使用快照功能,磁盘格式必须为 qcow2。 查看磁盘格式
[root@xuegod63 ~]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.img

image:  /var/lib/libvirt/images/xuegod63-kvm2.img
file format: qcow2
virtual size: 9.0G (9663676416 bytes)
disk size: 1.1G    # 创建虚拟机时,选择不要立即分配磁盘空间 cluster_size: 65536
Format specific information: compat: 1.1

注:qcow2 格式可以直接创建快照
2.3.3 对虚拟机迚行快照管理
对 xuegod63-kvm2 虚拟机创建快照
语法: virsh snapshot-create 虚拟机的名字 例:创建一个快照
[root@xuegod63 images]# virsh snapshot-create xuegod63-kvm2

 Domain snapshot 1440726046 created

注:创建快照时不需要关闭虚拟机,关机创建快照比较快,开机创建快照需要把内存中的内容写到磁 盘上,记录虚拟机这一时刻的状态。
[root@xuegod63 images]# virsh shutdown xuegod63-kvm2

域  xuegod63-kvm2  被关闭

[root@xuegod63 images]# virsh snapshot-create xuegod63-kvm2 #这时创建快照很快

已生成域快照  1513776621

创建快照时启个名字:
语法:virsh snapshot-create-as KVM 虚拟机名 快照名 例:生一个快照,名字是: httpd
[root@xuegod63 ~]# virsh list --all ##查看虚拟机名字

  Id Name	State
-	centos7.0	shut off
-	xuegod63-kvm2	shut off

[root@xuegod63 ~]# virsh snapshot-create-as xuegod63-kvm2 httpd

 Domain snapshot httpd created

查看虚拟机镜像快照列表
[root@xuegod63 images]# virsh snapshot-list xuegod63-kvm2

名称	生成时间	状态
------------------------------------------------------------ 
1513776483	2017-12-20 21:28:03 +0800 running
1513776621	2017-12-20 21:30:21 +0800 shutoff
httpd	2017-12-20 21:32:09 +0800 shutoff

快照也支持中文:
[root@xuegod63 ~]# virsh snapshot-create-as xuegod63-kvm2 安装好 httpd
Domain snapshot 安装好 httpd created
[root@xuegod63 ~]# virsh snapshot-list xuegod63-kvm2

 Name	Creation Time	State
------------------------------------------------------------ 
1440741062	2015-08-28 13:51:02 +0800 shutoff
httpd	2015-08-28 13:58:26 +0800 shutoff
安装好 httpd	2015-08-28 14:00:15 +0800 shutoff 

查看最近一次使用的快照版本。
KVM使用_第16张图片
可以看到为当前最新的快照版本。
[root@xuegod63 images]# virsh snapshot-current xuegod63-kvm2

<domainsnapshot>
<name>安装好 httpd</name>
<state>shutoff</state>
<creationTime>1440726046</creationTime>

快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机名称下
[root@xuegod63 ~]# ll -h /var/lib/libvirt/qemu/snapshot/xuegod63-kvm2/ 总用量 24K

-rw------- 1 root root 4.8K 9 月   23 18:32 1506162674.xml
-rw------- 1 root root 4.8K 9 月   23 18:32 httpd.xml
-rw------- 1 root root 4.9K 9 月   23 18:32 安装好 httpd.xml

#快照的配置文件 互动:腾讯云,阿里云中快照功能收费吗? 快照要收费!

查看快照占用的大小:
[root@xuegod63 ~]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.img

image:  /var/lib/libvirt/images/xuegod63-kvm2.img
file format: qcow2
virtual size: 9.0G (9663676416 bytes) disk size: 3.1G
cluster_size: 65536 Snapshot list:

ID	TAG	VM SIZE	DATE	VM CLOCK
1	1506162674	0 2017-09-23 18:31:15	00:00:00.000
2	httpd	0 2017-09-23 18:32:04	00:00:00.000
3	安装好 httpd	0 2017-09-23 18:32:15	00:00:00.000
Format specific information:
compat: 1.1 lazy refcounts: true

2.3.4 恢复虚拟机快照 恢复虚拟机快照必须关闭虚拟机。注:阿里云也需要关闭后再恢复快照
[root@xuegod63 snapshot]# virsh domstate xuegod63-kvm2 #查看虚拟机状态 shut off
确认需要恢复的快照,这里恢复到 httpd
[root@xuegod63 snapshot]# virsh snapshot-list xuegod63-kvm2

Name	Creation Time	State
------------------------------------------------------------ 1448633311	2015-11-27 22:08:31 +0800 shutoff
httpd	2015-11-27 22:10:32 +0800 shutoff

执行恢复
[root@xuegod63 snapshot]# virsh snapshot-revert xuegod63-kvm2 httpd 确认恢复版本
[root@xuegod63 snapshot]# virsh snapshot-current xuegod63-kvm2 | more

<domainsnapshot>
<name>httpd</name>
<state>shutoff</state>
<parent>
<name>1448633311</name>
</parent>
<creationTime>1448633432</creationTime>

2.3.5 删除快照和开机创建快照
1、删除快照
[root@xuegod63 snapshot]# virsh snapshot-delete xuegod63-kvm2 1448633311

Domain snapshot 1448633311 deleted

查看:
[root@xuegod63 snapshot]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.qcow2

image:  /var/lib/libvirt/images/xuegod63-kvm2.qcow2 file format: qcow2
virtual size: 8.0G (8589934592 bytes) disk size: 1.1G
cluster_size: 65536
 

Snapshot list:

ID	TAG	VM SIZE	DATE	VM CLOCK
2	httpd	0 2015-11-27 22:10:32	00:00:00.000

上面操作已经还原到快照:httpd。 现在测试使用这个快照启动系统:

[root@xuegod63 snapshot]# virsh start xuegod63-kvm2 Domain xuegod63-kvm2 started

2、开机创建快照:
[root@xuegod63 ~]# virsh snapshot-create-as xuegod63-kvm2 http-start

Domain snapshot http-start created

查看开机创建的快照占用的磁盘空间:
[root@xuegod63 ~]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.img

image:  /var/lib/libvirt/images/xuegod63-kvm2.img
file format: qcow2
virtual size: 9.0G (9663676416 bytes) disk size: 3.1G
cluster_size: 65536 Snapshot list:
ID	TAG	VM SIZE	DATE		VM CLOCK 2	httpd		0 2017-09-23 18:32:04	00:00:00.000
3	安装好 httpd	0 2017-09-23 18:32:15	00:00:00.000
4	http-start	127M 2017-09-23 18:35:19	00:00:27.178
注:	127M     ,存储虚拟机开机时的运行状态,比如存内存中的数据。

2.4 virsh 常用命令

virsh list	//查看已打开虚拟机列表
virsh list --all	//查看所有虚拟机列表
virsh version	//查看 virsh 版本号
virsh start xuegod63-kvm2	//启动 xuegod63-kvm2 虚拟机
virsh shutdown xuegod63-kvm2	//关机 xuegod63-kvm2 虚拟机
virsh dumpxml xuegod63-kvm2 > xuegod63-kvm2.xml   //导出 xuegod63-kvm2 虚拟机 配置文件

[root@xuegod63 images]# virsh dumpxml centos7.0 > centos7.0.xml
[root@xuegod63 ~]# virsh undefine centos7.0 //取消 centos7.0 定义 域 centos7.0 已经被取消定义

KVM使用_第17张图片
[root@xuegod63 qemu]# ls /etc/libvirt/qemu #这下面,也没有虚拟机配置文件

virsh define 虚拟机.xml 的绝对路径 //把虚拟机重新加入到 virt-manager 目录列表。 例:
[root@xuegod63 ~]# virsh define /opt/centos7.0 定义域 centos7.0(从 /opt/centos7.0)

[root@xuegod63 qemu]# ls

centos7.0.xml    networks    xuegod63-kvm2.xml

virsh destroy xuegod63-kvm2 #强制关闭 xuegod63-kvm2 虚拟机。正常关不了机 时, 用这个。

[root@xuegod63 ~]# virsh autostart centos7.0 //设置开机自启动 node1。
[root@kvm01 ~]# virsh autostart --disable vm1 #取消虚拟机随宿主机开机自启
[root@kvm01 ~]# virsh suspend vm1 #挂起虚拟机
[root@kvm01 ~]# virsh resume vm1 #恢复虚拟机
[root@kvm01 ~]# virsh console vm1 #控制台管理虚拟机

2.5 实战 1:qcow2 格式转换成 raw

2.5.1 关闭 xuegod63-kvm1,转换格式
[root@xuegod63 ~]# virsh shutdown xuegod63-kvm2 转换磁盘格式
qemu-img 的参数

  • -f 源镜像的格式
  • -O 目标镜像的格式 例:qcow2 格式转换成 raw

[root@xuegod63 images]# qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/ xuegod63-kvm2.img /var/lib/libvirt/images/xuegod63-kvm2.raw

查看转换后的格式,已经转换成了 raw
[root@xuegod63 images]# qemu-img info /var/lib/libvirt/images/xuegod63-kvm2.raw image: /var/lib/libvirt/images/ xuegod63-kvm2.raw

file format: raw

2.5.2 其他镜像格式转换方法:
例 1:将 vmdk 转换为 qcow2
qemu-img convert -f vmdk -O qcow2 source-name.vmdk target-name.qcow2
例 2:将 qcow2 转换为 vmdk
qemu-img convert -f qcow2 -O vmdk source-name.qcow2 target-name.vmdk

2.5.3 修改虚拟机配置文件,使用 raw 格式镜像文件,来启动虚拟机:
方法 1:
[root@xuegod63 ~]# virsh edit xuegod63-kvm2 #修改配置文件 改:

<driver name='qemu' type='qcow2' cache='none'/>
<source   file='/var/lib/libvirt/images/xuegod63-kvm2.img'/> 为:
23	<driver name='qemu' type='raw' cache='none'/>
24	<source   file='/var/lib/libvirt/images/xuegod63-kvm2.raw'/> 

方法 2:
#注意 vim 直接编辑配置文件/etc/libvirt/qemu/xuegod63-kvm2.xml 不生效 修改后,需要重启服务
[root@xuegod63 ~]# /etc/init.d/libvirtd restart

总结:
2.1 KVM 虚拟机克隆方法
2.2 虚拟机常用镜像格式对比
2.3 KVM 虚拟机快照功能使用方法
2.4 virsh 命令常见用法
2.5 KVM 常用镜像格式转换


第三章 字符界面安装 KVM-阿里云主机使用方法

本节所讲内容:
3.1 在命令行安装 KVM 虚拟机
3.2 在命令行无人执守安装 KVM 虚拟机
3.3 阿里云主机使用方法

3.1 在命令行安装 KVM 虚拟机
3.1.1 实战 1:在命令行安装 KVM 虚拟机 准备环境:

[root@xuegod63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/ 上传 F:\workstation2\image 一个镜像 CentOS-7.4-x86_64-DVD.iso 到
/var/lib/libvirt/images/下
在命令行安装 KVM 虚拟机实验环境:
KVM使用_第18张图片
安装 vnc 客户端软件,方便后期进程连接正在安装中的虚拟机的安装界面: vnc 客户端: 进程桌面
[root@xuegod63 ~]# yum install tigervnc #vnc 进程桌面客户端
[root@xuegod63 ~]# yum install virt-viewer -y #后面安装虚拟机时,需要使用 virt-viewer 这个包作用是什么?
方法 1:
[root@xuegod63 Packages]# rpm -qpi virt-viewer-5.0-7.el7.x86_64.rpm
方法 2:
[root@xuegod63 images]# yum info virt-viewer

简介	: Virtual Machine Viewer   #虚拟机查看器

确认 libvirtd 服务开启:
[root@xuegod63 ~]# systemctl status libvirtd
通过命令行安装 KVM 虚拟机:
命令:virt-install 选项:man virt-install

常用选项:

  • -n NAME, --name=NAME 挃定 Guest 名字

  • -r MEMORY, --ram=MEMORY 挃定内存大小

  • –vcpus=VCPUS 挃定虚拟机的 CPU 数量

  • –disk 挃定虚拟机磁盘存储文件的路径 , size=5 挃定虚拟磁盘的大小,单位是 G; 例:–disk path=/var/lib/libvirt/images/centos-72.img,size=5

  • –accelerate KVM 或 KQEMU 内核加速器,这个选项默认是添加的。另外,如果系统 KVM 和 KQEMU 加速器都支持,优先使用 KVM 加速器。

  • -c CDROM, --cdrom=CDROM 挃定用于全虚拟化 Guest 的虚拟光驱, --cdrom=后挃定 ISO 或 CDROM 镜像。

  • –network #挃定虚拟机的网卡模式。如:–network bridge=br0

  • -x EXTRA, --extra-args=EXTRA 用来给加载的 kernel 和 initrd 提供额外的内核命令行参数。比 如无人值守安装系统

3.1.2 实例:使用 virt-install 安装一个 kvm 虚拟机
为了方便更快速,我们上传一个镜像 CentOS-7.4-x86_64-DVD.iso 到/var/lib/libvirt/images/下
[root@xuegod63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/

扩展: vmware 迁移到 kvm ,需要使用 virt-v2v ,安装: yum install virt-v2v

查看已经有的虚拟机:
[root@xuegod63 ~]# virsh list --all
创建 centos-72 虚拟机:
[root@xuegod63 ~]# virt-install --name centos-72 --ram 1024 --vcpus=1 --disk path=/var/lib/libvirt/images/centos-72.img,size=5 --accelerate --cdrom /var/lib/libvirt/images/CentOS-7.4-x86_64-DVD.iso --network bridge=br0 --graphics vnc
现在测试进程连接:
[root@xuegod63 ~]# virt-viewer #要求 kvm 宿主物理机,安装了图形界面
KVM使用_第19张图片
或:
[root@xuegod63 ~]# vncviewer 127.0.0.1

3.2 使用 ks 文件,无交互字符界面安装:

ks.cfg 文件作用: 系统安装时应答文件,可以实现无交互安装系统 3.2.1
实验环境:
新添加的存盘/dev/sdb1 空间大于 13G,空间不够删除多于的镜像,后面安装虚拟机,可能会因为 空间不够,报错

root@xuegod63 images]# df -h

Filesystem	Size   Used Avail Use% Mounted on
/dev/sda2	9.7G   3.8G   5.4G   42% /
tmpfs	2.1G   264K   2.1G	1% /dev/shm
/dev/sda1	194M	28M   157M   15% /boot
/dev/sr0	3.4G   3.4G	0 100% /mnt
/dev/sdb1	20G   4.5G	15G    24% /var/lib/libvirt/images

3.2.2 搭建镜像 yum 源
[root@xuegod63 ~]# mv /etc/yum.repos.d/CentOS-Base.repo /opt/ #使用本地 yum 源, 安装快
[root@xuegod63 ~]# yum install httpd -y
[root@xuegod63 ~]# systemctl start httpd
[root@xuegod63 ~]# mkdir /var/www/html/centos7/ 将 rhel6.5 镜像上挂载 xuegod63 虚拟机的光驱上 E:\workstation\image
KVM使用_第20张图片
[root@xuegod63 ~]# mount /dev/cdrom /var/www/html/centos7/
因为我创建的 ks.cfg 文件是以 rhel6.5 为系统,创建的。所以这里必须使用 rhel6.5 系统来安装 测试:

[root@xuegod63 ~]# iptables -F #关闭防火墙
http://192.168.1.63/centos7/

上传 ks.cfg 文件到/var/www/html/ 下 修改 ks.cfg 文件:
[root@xuegod63 html]# vim ks.cfg

改:8 url --url="ftp://192.168.1.63/pub"
为:8 url --url="http://192.168.1.63/centos7" 

3.2.3 开始安装虚拟机:
[root@xuegod63 images]#

virt-install --name centos7-74 --ram 1024 --vcpus=1 --disk path=/var/lib/libvirt/images/centos7-74.qcow2,size=13     --accelerate
--location=http://192.168.1.63/centos7/  --network bridge=br0    -x "ks=http://192.168.1.63/ks.cfg"

已经开始自动安装
注: 你局域网中的 DHCP 服务器自动分配的 IP 地址是: 192.168.1.0/24 网段才行。 不然需要自 己搭建一个 DHCP,这样虚拟机安装过程中才可以一个 192.168.1.0 网段的 IP,才可以访问到 http://192.168.1.63/centos7/ 源
连接虚拟机:
[root@xuegod63 ~]# virt-viewer

你可能感兴趣的:(虚拟化应用)