Kvm --01 虚拟化基础概念

1. 虚拟化基础概念

01. 什么是虚拟化?

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

02. 为什么要用虚拟化?

提高计算机资源的利用率和程序运行环境的安全隔离,还可以有效限制程序的资源占用

优势:

1.降低运营成本

服务器虚拟化降低了IT基础设施的运营成本,令系统管理员摆脱了繁重的物理服务器、OS、中间件及兼容性的管理工作,减少人工干预频率,使管理更加强大、便捷。
  
2.提高应用兼容性
  服务器虚拟化提供的封装性和隔离性使大量应用独立运行于各种环境中,管理人员不需频繁根据底层环境调整应用,只需构建一个应用版本并将其发布到虚拟化后的不同类型平台上即可。
  
3.加速应用部署
  采用服务器虚拟化技术只需输入激活配置参数、拷贝虚拟机、启动虚拟机、激活虚拟机即可完成部署,大大缩短了部署时间,免除人工干预,降低了部署成本。
  
4.提高服务可用性
  用户可以方便地备份虚拟机,在进行虚拟机动态迁移后,可以方便的恢复备份,或者在其他物理机上运行备份,大大提高了服务的可用性。
  
5.提升资源利用率
  通过服务器虚拟化的整合,提高了CPU、内存、存储、网络等设备的利用率,同时保证原有服务的可用性,使其安全性及性能不受影响。
  
6.动态调度资源
  在服务器虚拟化技术中,数据中心从传统的单一服务器变成了统一的资源池,用户可以即时地调整虚拟机资源,同时数据中心管理程序和数据中心管理员可以灵活根据虚拟机内部资源使用情况灵活分配调整给虚拟机的资源。
  
7.降低能源消耗
  通过减少运行的物理服务器数量,减少CPU以外各单元的耗电量,达到节能减排的目的。

03. 虚拟化在企业中的应用场景?

场景1:多版本操作系统共存,小公司经常会出现的一种比较尴尬的问题,只有一台服务器,非要同时运行windows和Linux,只有虚拟化才能完美解决.

场景2:机房迁移,没有虚拟化之前,迁移非常痛苦,物理机搬迁中途损伤,新机房很难复原旧环境,物理机老化可能再也开不了机,这些都是问题,有了虚拟化之后,搬迁变得简单,只需拷贝虚拟机的文件即可

场景3:相同业务部署,在没有虚拟化之前,部署业务,每次都是从安装系统开始,一步一步安装软件,效率非常低!有了虚拟化,只需克隆模板机即可

场景4:软件发布体验,有的软件安装特别繁琐,导致很多普通用户都无法安装成功,为了让这部分用户能体验到软件的功能,可以制作一个虚拟机模板,让用户直接使用体验,例如zabbix就有现成的虚拟机模板

04. 虚拟化软件介绍

Xen (纯软件模拟)  

Xen是一个开放源代码虚拟机监视器,由XenProject开发。它打算在单个计算机上运行多达128个有完全功能的操作系统。    

在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改("移植")以在Xen上运行(但是提供对用户应用的兼容性)。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。   

 软件纯模拟全虚拟化软件,特别慢!

QEMU  (需要一个专门的内核)

QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的模拟处理器的自由软件。它与Bochs(Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。),PearPC(实现PC机上安装Mac OS)近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由KVM(早期为kqemu加速器,现在kqemu已被KVM取代)这个开源的加速器,QEMU能模拟至接近真实电脑的速度。

QEMU有两种主要运作模式:  

User mode模拟模式,亦即是用户模式。  

QEMU能引导那些为不同中央处理器编译的Linux程序。而Wine(运行 Windows 应用的兼容层。)及Dosemu(DOS模拟器)是其主要目标。  System mode模拟模式,亦即是系统模式。  

QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上模拟数部不同虚拟电脑。    

性能特别好,但是需要使用专门修改之后的内核。  

05. Kvm介绍

1.KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。

2.是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。

3.它包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。

4.KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。

5.KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)同时KVM还能够使用ksm技术帮助宿主服务器节约内存。

6.在主流的Linux内核,如: 2.6.20以上的内核均已包含了KVM核心.

Kvm的优点:KVM是一种年轻的虚拟化技术,在出生的时候就吸收了其他虚拟化技术的优点,而且架构简单,没有历史兼容性的包袱,性能表现优异,使用越来越广!

2. 安装部署Kvm

01. 如果采用的是虚拟机安装,需要开启虚拟机的虚拟化技术

02. Kvm虚拟化管理软件的安装

[root@gjy ~]# yum install libvirt virt-install qemu-kvm -y
#安装软件说明内容:
libvirt    #虚拟机管理,可管理kvm,xen,qemu,lxc....等软件。
virt-insatall    #虚拟机安装克隆
qemu-kvm    #管理虚拟机磁盘,底层
#启动服务
[root@gjy ~]# systemctl start libvirtd.service
[root@gjy ~]# systemctl enable libvirtd.service

03. 安装VNC软件
下载vnc软件方法,tightvnc官网:http://www.tightvnc.com

VNC软件,用于VNC(Virtual Network Computing),为一种使用RFB协议的显示屏画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的显示屏画面。

VNC与操作系统无关,因此可跨平台使用,例如可用Windows连接到某Linux的电脑,反之亦同。甚至在没有安装客户端程序的电脑中,只要有支持JAVA的浏览器,也可使用。

04. 安装一台Kvm虚拟机我们将安装目录放在/opt/目录下,首先我们要上传一个CentOS-7.6的镜像在/opt/目录下.

[root@gjy /opt]# ll

total 4481024-rw-r--r-- 1 root root 4588568576 2019-07-22 17:58 CentOS-7-x86_64-DVD-1810.iso

[root@gjy /opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos7.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Allocating 'centos7.raw' | 10 GB 00:00:00
Domain installation still in progress. You can reconnect tothe console to complete the installation process.

在启动的同时使用vnc连接,默认端口是5900,不用定义。

参数 参数说明
--virt-type 要使用的管理程序名称 (kvm, qemu, xen, ...)
--os-type 系统类型
--os-variant 客户机上安装的操作系统,如:'fedora18'、'rhel6'、'winxp' 等。
-n/--name 客户机实例名称
--memory 配置客户机虚拟内存大小
--vcpus 配置客户机虚拟 CPU数量。
--disk 指定存储的各种选项。 raw #不支持做快照,性能好。qcow2 #支持快照。
-cdrom 镜像位置
-w/--network 配置客户机网络接口。
--graphics 配置客户机显示设置。
--noautoconsole 不要自动尝试连接到客户端控制台
--autostart 主机启动时自动启动域。
--noreboot 安装完成后不重新启动客户机。

安装CentOS7系统,与正常安装一样。

安装完成后重启,重启之后TightVNC会自动退出。

重启之后,在命令行启动Kvm虚拟机

#开机
[root@kvm01 opt]# virsh start  centos7

3. Kvm虚拟机管理

01. Kvm虚拟机的virsh日常管理和配置

参数 参数说明
基础操作
list 查看虚拟机列表,列出域
start 启动虚拟机,开始一个(以前定义的)非活跃的域
shutdown 关闭虚拟机,关闭一个域
destroy(危险) 强制关闭虚拟机,销毁(停止)域
dominfo 显示主机基本信息
vncdisplay 查询正在运行状态下的虚拟机vnc端口号
setmem 调整主机内存大小,只能调小
edit 编辑配置文件
console 命令行console进行登录
配置管理操作
dumpxml 导出主机配置信息
undefine 删除主机
define 导入主机配置
domrename 对虚拟机进行重命名(低版本的系统不支持)
挂起与恢复
suspend 挂起虚拟机
resume 恢复虚拟机
自启动管理
autostart 虚拟机开机启动
autostart --disable 取消虚拟机开机启动
快照管理
snapshot-create 创建快照
snapshot-list 查看快照列表
snapshot-info 显示快照信息
snapshot-revert 还原快照
snapshot-delete 删除快照

基础操作

#显示所有状态下的主机
[root@kvm01 opt]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 2     centos7                        running

#显示正在运行的主机
[root@kvm01 opt]# virsh list 
 Id    Name                           State
----------------------------------------------------
 2     centos7                        running

#关机
[root@kvm01 opt]# virsh shutdown centos7

#拔电源关机
[root@kvm01 opt]# virsh dectroy centos7
#开机
[root@kvm01 opt]# virsh start  centos7

#查看主机配置信息
[root@kvm01 opt]# virsh dominfo centos7
Id:             2
Name:           centos7
UUID:           22d41c40-4b59-4cee-9203-47880c1069bb
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       62.2s
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0
#磁盘
[root@kvm01 opt]# ll
total 5952848
-rw------- 1 qemu qemu 10737418240 Dec  3 01:22 centos7.raw
-rw-r--r-- 1 qemu qemu  4588568576 Dec  3 00:19 CentOS-7-x86_64-DVD-1810.iso
#配置文件
[root@kvm01 opt]# ll /etc/libvirt/qemu
total 4
-rw------- 1 root root 4071 Dec  3 00:41 centos7.xml
drwx------ 3 root root   42 Dec  3 00:28 networks

#修改配置文件
[root@kvm01 opt]# virsh edit centos7


#查看运行状态下的主机连接端口
[root@kvm01 /opt]# virsh vncdisplay centos7
:0            ====》 5900

#动态调整主机内存大小,只能调小。不能调大
[root@kvm01 /opt]# virsh setmem centos7 524288

#检查
[root@kvm01 /opt]# virsh dominfo centos7 |grep memory
Max memory: 1048576 KiB
Used memory: 524288 KiB

#将主机的内存调大
[root@kvm01 /opt]# virsh shutdown centos7     #关闭主机
Domain centos7 is being shutdown


#编辑配置文件
[root@kvm01 /opt]# virsh edit centos7
<domain type='kvm'>
<name>centos7</name>
<uuid>d36e89c3-4d09-4328-bdd2-085b90cbe19c</uuid>
<memory unit='KiB'>2097152</memory>               #最大支持内存
<currentMemory unit='KiB'>2097152</currentMemory>        #当前内存
<vcpu placement='static'>2</vcpu>                        #cpu核心数

#重启libvirt服务
[root@kvm01 /opt]# systemctl restart libvirtd.service

#检查结果
[root@kvm01 /opt]# virsh dominfo centos7 |grep -E "memory|CPU"
CPU(s): 2
Max memory: 2097152 KiB
Used memory: 2097152 KiB

02. Kvm虚拟主机的相关文件

#主机的镜像文件
[root@qiudao /opt]# ll
-rw------- 1 root root 10737418240 2019-07-22 20:19 centos7.raw     

#主机的配置文件
[root@qiudao /opt]# ll /etc/libvirt/qemu/centos7.xml
-rw------- 1 root root 4078 2019-07-22 21:01 /etc/libvirt/qemu/centos7.xml

修改虚拟主机配置文件的方法,使用下面命令修改可以对文件进行语法校验
[root@qiudao /opt]# virsh edit centos7


#配置管理操作
[root@kvm01 /opt]# virsh list --all        #运行状态
Id Name State
----------------------------------------------------
1 centos7 running


#导出主机配置信息
[root@kvm01 /opt]# virsh dumpxml centos7 > centos7-bak.xml

[root@kvm01 /opt]# ll
total 13544120
-rw-r--r-- 1 root root 5243 Dec 1 16:10 centos7-bak.xml

:q
#关机状态
[root@kvm01 /opt]# virsh shutdown centos7
Domain centos7 is being shutdown


#导出主机配置信息,关机状态下的要比开机状态下的省资源
[root@kvm01 /opt]# virsh dumpxml centos7 > centos7-back.xml
[root@kvm01 /opt]# ll
total 13544124
-rw-r--r-- 1 root root 3951 Dec 1 16:12 centos7-back.xml
-rw-r--r-- 1 root root 5243 Dec 1 16:10 centos7-bak.xml


#删除主机信息,只有关机状态下才能关机
[root@kvm01 /opt]# virsh undefine centos7
Domain centos7 has been undefined


#发现主机的配置文件已经不存在了
[root@kvm01 /opt]# ll /etc/libvirt/qemu
total 0
drwx------ 3 root root 42 Dec 1 14:10 networks


#检查列表也是没有
[root@kvm01 /opt]# virsh list --all
Id Name State
----------------------------------------------------

#导入主机配置信息
[root@kvm01 /opt]# virsh define centos7-bak.xml
Domain centos7 defined from centos7-bak.xml

#配置文件已经回来了
[root@kvm01 /opt]# ll /etc/libvirt/qemu
total 8
-rw------- 1 root root 4513 Dec 1 16:24 centos7.xml


#检查列表
[root@kvm01 /opt]# virsh list --all
Id Name State
----------------------------------------------------
- centos7 shut off


#主机重命名,只能修改关机状态下的主机
[root@kvm01 /opt]# virsh domrename centos7 gjy
Domain successfully renamed


[root@kvm01 /opt]# virsh list --all
Id Name State
----------------------------------------------------
- gjy shut off


#配置文件名称已经发生改变
[root@kvm01 /opt]# ll /etc/libvirt/qemu
total 8
drwx------ 3 root root 42 Dec 1 14:10 networks
-rw------- 1 root root 4505 Dec 1 16:26 gjy.xml


#磁盘名称没有改变,可以通过修改配置文件实现
[root@kvm01 /opt]# ll
total 13544124
-rw-r--r-- 1 root root 3951 Dec 1 16:12 centos7-back.xml
-rw-r--r-- 1 root root 5243 Dec 1 16:10 centos7-bak.xml
-rw------- 1 qemu qemu 10737418240 Dec 1 16:23 centos7.raw


#挂起与恢复
[root@kvm01 ~]# virsh suspend centos7    #挂起,挂起之后主机无法进行任何操作
Domain centos7 suspended

[root@kvm01 ~]# virsh resume centos7         #恢复
Domain centos7 resumed

挂起与恢复

#挂起与恢复
[root@kvm01 ~]# virsh suspend centos7    #挂起,挂起之后主机无法进行任何操作
Domain centos7 suspended

[root@kvm01 ~]# virsh resume centos7         #恢复
Domain centos7 resumed

#或者可以里面操作:
[root@kvm01 opt]# virsh

#恢复
virsh # resume centos6
Domain centos6 resumed

virsh # list --all
 Id    Name                           State
----------------------------------------------------
 1     centos6                        running
 5     centos7                        running
 -     w                              shut off

猜你喜欢

转载自www.cnblogs.com/gongjingyun123--/p/11993342.html