KVM总结

虚拟化产品对比介绍

vmware
KVM rhel6_x64
xen [kernel-xen] rhel5

虚拟化技术:

仿真虚拟化 [对系统硬件没有要求,性能最低]
半虚拟化 [虚拟机可以使用真机物理硬件,性能高,需要改内核]
全虚拟化 直接使用物理硬件,性能高
vmware 支持仿真虚拟化
xen 半虚 REHL5自带xen, 安装时需要安装内核 rpm -ivh kernel-xen-xxx.rpm
kvm 全虚拟化 RHEL6 自带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:是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。是第一个整合到 Linux 内核的虚拟化技术。在 KVM 模型中,每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可以在用户空间启劢客户机操作系统。
一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)
XEN :需要升级内核,只能支持和物理机系统一样的操作系统。 xen虚拟上,可以运行windows
KVM:支持linux以外的其它系统。比如:windows

环境介绍

在这里插入图片描述
64位RHEL6以上系统支持KVM,32位不支持。CentOS7以上含有桌面程序系统可安装。
查看自己的CPU是否支持全虚拟化虚拟化技术且是64位的

Intel:cat /proc/cpuinfo | grep --color vmx 
AMD :cat /proc/cpuinfo | grep --color svm 

看看flag有没有上面的vmx或者是svm,有的话就是支持全虚拟化技术。有几条代表有几个CPU,可以使用top然后1进行查看。

KVM安装

yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python -y 

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

rpm –qpi /mnt/Packages/libguestfsxxx  #查看对应包summary描述
[root@test63 ~]# systemctl start libvirtd  #开启虚拟化服务 
[root@test63 ~]# systemctl enable libvirtd  #设置libvirtd服务开机启动
[root@test63 ~]# systemctl is-enabled libvirtd  #查看是否开机启动
[root@test63 ~]# lsmod | grep kvm  #确定正确加载kvm 模块,检查 KVM 模块是否成功安装
kvm_intel 170086 0 
kvm 566340 1 kvm_intel 
irqbypass 13503 1 kvm 

[root@test63 ~]# echo $LANG
en_US.UTF-8
[root@test63 ~]# LANG='zh_CN.UTF-8' #切换成中文界面
[root@test63 ~]# virt-manager #使用virt-manager 建立虚拟机

在这里插入图片描述

实战1:配置KVM网络桥接功能

网桥介绍: 我们经常所说的Bridge设备其实就是网桥设备,也就相当亍现在的二层交换机,用亍连接同一网段内的所有机器,所以我们的目的就是将网络设备eth0添加到br0,此时br0就成为了所谓的交换机设备,我们物理机的eth0也是连接在上面的。
添加桥接设备br0:相当于一个二层交换机
在这里插入图片描述

[root@test63 ~]# rpm -ivh /mnt/Packages/bridge-utils-1.2-9.el6.x86_64.rpm #安装桥设备工具
[root@test63 ~]# cd /etc/sysconfig/network-scripts/ #把eth0绑到br0桥设备上
[root@test63 network-scripts]# cp ifcfg-ens33/tmp/ #备份一下eth0 
[root@test63 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@test63 network-scripts]# vim ifcfg-br0 #创建ifcfg-br0 文件,并写入以下内容
DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Bridge" #注:TYPE="Bridge" ,B要大写
BOOTPROTO=none
IPADDR=192.168.1.63
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1 
[root@test63 network-scripts]# service network restart #重启生效
[root@test63 network-scripts]# ifconfig #查看是否生效
[root@test63 network-scripts]# brctl show
bridge name    bridge id     STP enabled     interfaces
br    08000.000c290283db    no     ens33  #桥接配置
virbr  08000.525400183a62    yes    virbr0-nic #KVM自带桥设备

创建一台KVM虚拟机

创建一个分区,用于存放安装好的Linux操作系统:

[root@test63 ~]# 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@test63 network-scripts]# mkfs.xfs /dev/sdb1  #格式化
[root@test63 network-scripts]#mount /dev/sdb1 /var/lib/libvirt/images/ #安装虚拟机,默认存放的路径: 注:准备系统镜像:把centos7.4镜像上传到/var/lib/libvirt/images/目录下。
[root@test63 ~]# virt-manager

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点“完成”到此创建好一个新的KVM虚拟机了。
修改KVM 中BIOS引导顺序
在这里插入图片描述

KVM虚拟机常用命令

[root@test63 ~]# virsh list #列出在运行的虚拟机 
[root@test63 ~]# virsh start centos7-71 #启劢centos7-71虚拟机 
[root@test63 ~]# virsh shutdown centos7-71 #关闭centos7-71虚拟机 
[root@test63 ~]# virsh autostart centos7-71 #设置centos7-71虚拟机为物理机开机后,自动启动 
[root@test63 ~]# chkconfig --list libvirtd #服务也要开机启动 
libvirtd 0:off 1:off 2:off 3:on 4:on 5:on 6:off 
[root@test63 ~]# vim /etc/fstab #记得设置开机自动挂载sdb1,不然后开机启动不了虚拟机 
/dev/sdb1 /var/lib/libvirt/images xfs defaults

CentOS6系统上shutdown关不了虚拟机的问题

在安装好的KVM的Linux虚拟机中安装并启动acpid服务,virsh shutdown命令使用发送acpi挃令来控制虚拟机的电源, 而kvm虚拟机最小化安装的centos6系统时默认是没有安装acpi服务的,所以并不会处理shutdown发来的关机信号。 在centos7最小化安装的linux系统上有安装acpid服务。 只需要在虚拟机里安装和启动acpid服务即可。

1.给KVM虚拟机配置个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 #启劢网卡 

2.在test63上搭建一个基于http协议yum源服务

[root@test63 ~]# yum install httpd -y 
[root@test63 ~]# service httpd start 
[root@test63 ~]# mount /dev/cdrom /var/www/html/

3.配置kvm 虚拟机rhel6-71 的yum源

[root@test63 ~]# 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 #关闭防火墙 

4.在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:on 4:on 5:on 6:off //安装后默认会加入到开机启劢的 

5.在test63 KVM真机上测试

[root@test63 ~]# virsh shutdown rhel6-71 #关闭rhel6-71虚拟机

KVM虚拟机克隆和快照

克隆前,centos7.0需要提前关机。
语法:virt-clone -o 原虚拟机 -n 新虚拟机 -f 新虚拟机镜像存放路径
选项:-o old -n new
虚拟机镜像: 就是整个虚拟机文件。 不是操作系统光盘镜像rhel6.5.iso
比如:KVM虚拟机的镜像文件

[root@test63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/
[root@test63 ~]# cd /var/lib/libvirt/images/
[root@test63 images]# ll -h
-rw------- 1 root root 9.1G 9月 21 23:33 centos7.0.qcow2 #这就是虚拟机镜像文件,不是操作系统镜像格式是rhel6.5.iso.
[root@test63 images]# df –h #使用了1.2G,实际镜像占用1.2G,并不是ll –h查看分配时的镜像文件的9.1G

基于centos7.0克隆一台虚拟机:test63-kvm2

[root@test63 ~]# cd /var/lib/libvirt/images/
[root@test63 images]# virt-clone -o centos7.0 -n test63-kvm2 -f /var/lib/libvirt/images/test63-kvm2.img
Allocating 'test63-kvm2' | 8.0 GB 03:34
Clone 'test63-kvm2' created successfully.
[root@test63 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 test63-kvm2.img
[root@test63 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 #查看克隆完后,使用磁盘情况。两个镜像一共使用了3.2G

注:虚拟机克隆完毕后,MAC地址也是需要修改,网卡配置文件也修改一下。

KVM虚拟机组成

一台KVM虚拟机由两部分组成:虚拟机配置文件和镜像img,所以不能直接copy镜像文件来克隆
查看虚拟机的配置文件

[root@test63 images]# cd /etc/libvirt/qemu 
[root@test63 ~]# ls /etc/libvirt/qemu 
networks centos7.0.xml test63-kvm2.xml
[root@test63 qemu]# cat centos7.0.xml #查看虚拟机配置文件内容

启动test-kvm2测试一下
在这里插入图片描述
进入新克隆的机器:
ip addr show 查看IP和mac地址。系统中没有ifconfig
在这里插入图片描述
ping g.cn #发现可以直接上网
在这里插入图片描述
查看克隆后test-kvm1的配置文件:

[root@test qemu]# vim /etc/libvirt/qemu/test-kvm2.xml 
<interface type='bridge'> 
<mac address='52:54:00:2b:fb:79'/> 

注: 发现虚拟机磁盘中的mac地址已经和克隆后的MAC地址一样。 可以直接上网,不需要再另外删除相关内容。 在centos6下,kvm还没有这样的功能。

在rhel6下kvm克隆后的操作

登录新克隆的虚拟机删除原来的mac和IP地址,让新克隆的机器可以上网

[root@test ~]# rm -rf /etc/udev/rules.d/70-persistent-*
[root@test ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0 #写入以下内容

注: 记得把 ONBOOT=“no” 改为: ONBOOT=“yes”
注:把原配置文件中的MAC和UUID地址删除,然后修改一个和原虚拟机不一样的IP

[root@test ~]# reboot #重启生效


方法2:
[root@test ~]# start_udev # 重新启动udev服务,自动生成刚删除的/etc/udev/rules.d/70-persistent-*文件,新生成的udev文件,会使用新系统的MAC地址。
[root@test ~]# service network restart

虚拟机常用镜像格式对比

目前主要虚拟机的镜像格式:raw,cow, qcow,qcow2,vmdk
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. cow、qcow、qcow2格式
cow格式:还没有成熟,就被放弃了。后来被qcow格式所取代。
qcow格式:刚刚出现的时候有比较好的特性,但其性能和raw格式对比还是有很大的差距,目前已经被新版本的qcow2取代。
qcow2格式:现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前qcow2的性能上接近raw裸格式的性能
qcow2格式支持snapshot,可以在镜像上做N多个快照,具有以下优点:
更小的存储空间
支持创建image镜像
支持多个snapshot,对历史snapshot迚行管理
支持zlib的磁盘压缩
支持AES的加密
3.vmdk格式
VMware的格式,整体性能最好,因为原本VMware就是做虚拟化起家。从性能和功能上来说,vmdk应该算最出色的,由于vmdk结合了VMware的很多能力,目前来看,KVM和XEN使用这种格式的情况不是太多。但就VMware的企业级虚拟化Esxi来看,它的稳定性和各方面的能力都很好。

KVM虚拟机快照功能使用方法

快照的作用:1、热备 2、灾难恢复 3、回滚到历中的某个状态
快照的原理:生成快照,快照之后的操作存放到另一个新的空间。
kvm快照,分两种:
方法1:使用lvm快照,如果分区是lvm,可以利用lvm迚行kvm的快照备份
方法2:使用qcow2格式的镜像创建快照。

创建KVM快照

在centos6下,kvm虚拟机默认使用raw格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。 要使用快照功能,磁盘格式必须为qcow2。
在centos6下,kvm虚拟机默认使用raw格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。要使用快照功能,磁盘格式必须为qcow2。
查看磁盘格式

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

对test63-kvm2虚拟机关机创建快照
语法: virsh snapshot-create 虚拟机的名字

[root@test63 images]# virsh snapshot-create test63-kvm2
Domain snapshot 1440726046 created #注:创建快照时不需要关闭虚拟机,关机创建快照比较快,开机创建快照需要把内存中的内容写到磁盘上,记录虚拟机这一时刻的状态。
[root@test63 images]# virsh shutdown test63-kvm2 #域 test63-kvm2 被关闭
[root@test63 images]# virsh snapshot-create test63-kvm2 #这时创建快照很快
已生成域快照 1513776621

创建快照时启个名字
语法:virsh snapshot-create-as KVM虚拟机名 快照名

[root@test63 ~]# virsh list --all ##查看虚拟机名字
Id Name State
----------------------------------
- centos7.0 shut off
- test63-kvm2 shut off
[root@test63 ~]# virsh snapshot-create-as test63-kvm2 httpd
Domain snapshot httpd created
[root@test63 images]# virsh snapshot-list test63-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@test63 ~]# virsh snapshot-create-as test63-kvm2 安装好httpd #快照也支持中文
Domain snapshot 安装好httpd created
[root@test63 ~]# virsh snapshot-list test63-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
 [root@test63 images]# virsh snapshot-current test63-kvm2 #查看最近一次使用的快照版本
[root@test63 ~]# ll -h /var/lib/libvirt/qemu/snapshot/test63-kvm2/ #快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机名称下
总用量 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

补充:腾讯云,阿里云中快照要收费!因为快照空间占用虚拟机自身img的空间。

[root@test63 ~]# qemu-img info /var/lib/libvirt/images/test63-kvm2.img #查看快照占用的大小
image: /var/lib/libvirt/images/test63-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

恢复快照

[root@test63 snapshot]# virsh domstate test63-kvm2 #查看虚拟机状态 #恢复虚拟机快照必须关闭虚拟机。注:阿里云也需要关闭后再恢复快照
shut off
[root@test63 snapshot]# virsh snapshot-list test63-kvm2 #确认需要恢复的快照,这里恢复到httpd
Name Creation Time State
------------------------------------------------------------
1448633311 2015-11-27 22:08:31 +0800 shutoff
httpd 2015-11-27 22:10:32 +0800 shutoff
[root@test63 snapshot]# virsh snapshot-revert test63-kvm2 httpd #执行恢复
[root@test63 snapshot]# virsh snapshot-current test63-kvm2 | more #确认恢复版本
<domainsnapshot>
<name>httpd</name>
<state>shutoff</state>
<parent>
<name>1448633311</name>
</parent>
<creationTime>1448633432</creationTime>

删除快照

[root@test63 snapshot]# virsh snapshot-delete test63-kvm2 1448633311 
Domain snapshot 1448633311 deleted
[root@test63 snapshot]# virsh start test63-kvm2 #启动恢复的快照虚拟机

开机状态下创建快照

 [root@test63 ~]# virsh snapshot-create-as test63-kvm2 http-start 
Domain snapshot http-start created 
[root@test63 ~]# qemu-img info /var/lib/libvirt/images/test63-kvm2.img #查看开机创建的快照占用的磁盘空间
image: /var/lib/libvirt/images/test63-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,存储虚拟机开机时的运行状态,比如存内存中的数据。

virsh常用命令

# virsh list //查看已打开虚拟机列表
# virsh list --all //查看所有虚拟机列表
# virsh version //查看virsh版本号
# virsh start test63-kvm2 //启动test63-kvm2虚拟机
# virsh shutdown test63-kvm2 //关机test63-kvm2虚拟机
# virsh dumpxml test63-kvm2 > test63-kvm2.xml //导出test63-kvm2虚拟机配置文件
[root@test63 images]# virsh dumpxml centos7.0 > centos7.0.xml
[root@test63 ~]# virsh undefine centos7.0 //取消centos7.0定义,域 centos7.0 已经被取消定义,相当于叉掉vmware中虚拟机标签
# virsh destroy test63-kvm2 //强制关闭test63-kvm2虚拟机。正常关不了机时, 用这个。
[root@test63 ~]# 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 #控制台管理虚拟机

qcow2格式转换成raw

[root@test63 ~]# virsh shutdown test63-kvm2 #关闭test63-kvm1,转换格式
转换磁盘格式 

qemu-img 的参数 -f 源镜像的格式 -O 目标镜像的格式

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

其他镜像格式转换方法

qemu-img convert -f vmdk -O qcow2 source-name.vmdk target-name.qcow2 #将vmdk转换为qcow2 
qemu-img convert -f qcow2 -O vmdk source-name.qcow2 target-name.vmdk #将qcow2转换为vmdk 

修改虚拟机配置文件,使用raw格式镜像文件,来启动虚拟机:
方法1:

[root@test63 ~]# virsh edit test63-kvm2 #修改配置文件 
改: 
<driver name='qemu' type='qcow2' cache='none'/> 
<source file='/var/lib/libvirt/images/test63-kvm2.img'/> 
为: 
23 <driver name='qemu' type='raw' cache='none'/> 
24 <source file='/var/lib/libvirt/images/test63-kvm2.raw'/> 

方法2:
#注意vim直接编辑配置文件/etc/libvirt/qemu/test63-kvm2.xml不生效
修改后,需要重启服务

[root@test63 ~]# /etc/init.d/libvirtd restart

阿里云字符界面安装KVM

环境准备

在这里插入图片描述

 [root@test63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/
上传F:\workstation2\image 一个镜像CentOS-7.4-x86_64-DVD.iso到/var/lib/libvirt/images/下
[root@test63 ~]# yum install tigervnc #vnc远程桌面客户端,方便后期远程连接正在安装中的虚拟机的安装界面
[root@test63 ~]# yum install virt-viewer -y #后面安装虚拟机时,需要使用
[root@test63 images]# yum info virt-viewer
简介:Virtual Machine Viewer  #虚拟机查看器
[root@test63 ~]# systemctl status libvirtd  #确认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 提供额外的内核命令行参数。比如无人值守安装系统

使用virt-install安装一个kvm虚拟机

为了方便更快速,我们上传一个镜像CentOS-7.4-x86_64-DVD.iso到/var/lib/libvirt/images/下 
[root@test63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/ #扩展:vmware迁移到kvm ,需要使用virt-v2v ,安装: yum install virt-v2v
[root@test63 ~]# virsh list --all #查看已经有的虚拟机
[root@test63 ~]# 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 #创建centos-72虚拟机
[root@test63 ~]# virt-viewer #现在测试远程连接, 要求kvm宿主物理机,安装了图形界面
[root@test63 ~]# vncviewer 127.0.0.1 #或是这样测试KVM

在这里插入图片描述

阿里云主机补充

IOPS (Input/Output Operations Per Second),即每秒随机进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。衡量吞吐量
买固态硬盘最重要的参数:1、容量2、IOPS3、缓存4、颗粒MLC / TLC
为什么阿里云的SSD云盘IOPS是1000,这么低?
答: 原因是1T的SSD云盘,需要给50台云主机用(一台主机是20G) 。 如果不限速,只要一台被黑后疯狂写数据,剩下49台都卡了。
快照:自己设置快照策略,可以每天晚上3:00 给系统盘和数据盘做快照,一但被黑,可以立马恢复。
注:查看硬盘ID,来确认快照属于那个磁盘。
注:快照占用你系统盘或数据盘空间吗?
不占用我,占用的应该是阿里的,所以阿里后期找你收费。有些云平台,快照功能本身就是收费。
快照占用空间大吗?不大,关机状态占用几M?0M。开机状态,只保存内存中的数据。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章