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
Kvm --01 虚拟化基础概念的更多相关文章
- KVM 网络虚拟化基础 - 每天5分钟玩转 OpenStack(9)
网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大. 但因为网络是虚拟化中非常重要的资源,所以再硬的骨头也必须要把它啃下来. 为了让大家对虚拟化网络的复杂程度有一个直观的认识,请看下图 这是 Open ...
- KVM 网络虚拟化基础
网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大. 但因为网络是虚拟化中非常重要的资源,所以再硬的骨头也必须要把它啃下来. 为了让大家对虚拟化网络的复杂程度有一个直观的认识,请看下图 这是 Open ...
- O009、KVM 网络虚拟化基础
参考https://www.cnblogs.com/CloudMan6/p/5289590.html 网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大. 但因为网络是虚拟化中非常重要的资源, ...
- [ kvm ] 学习笔记 2:虚拟化基础
1. 虚拟化概念 什么是虚拟化 虚拟化是使用所谓虚拟机管理程序从一台物理机上创建若干个虚拟机的过程.虚拟机的行为和运转方式与物理机一样,但它们会使用物理机的计算资源,如 CPU .内存和存储.虚拟机管 ...
- 一步步Cobol 400 上手自学入门教程01 - 基础概念
先学习基础概念 1.COBOL字符:包含: User-defined words 用户定义字符 System-names Reserved words 关键字 2.用户定义字符User-defin ...
- 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点
087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...
- 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...
- 018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念
018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念 本文知识点:Java中的数据类型转换 类型转换 类型转换分类 2类,分别是: ...
- Elasticserach学习笔记-01基础概念
本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/e ...
随机推荐
- CentOS 6.3下Zabbix监控MySQL数据库参数
系统环境:CentOS 6.3 x64 http://www.linuxidc.com/Linux/2012-12/76583.htm mysql: mysql-5.6.10 http://w ...
- Java 13 在win10 安装及配置
java 13 SDK 下载 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538 ...
- JDBC连接Hive数据库
一.依赖 pom <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...
- 【GMOJ6377】幽曲[埋骨于弘川]
Description \(n\in[1,500],k\in[2,10]\). Solution 这是一道有点很有难度的题. 先考虑判断一个数是否在数列\(a\)中.由于每次加的数是在\([0,k)\ ...
- 为 PhpStorm 配置 Xdebug 来调试代码
当项目越来越复杂,排错就越发困难. 你以为代码是这么运行的,但就是有未想到的功能导致流程变得不可捉摸. 此时我们需要调试啊调试... PhpStorm 是一款优秀的 PHP IDE,排除其 Java ...
- 使用sqlalchemy创建单条数据-分层管理代码
这里主要是如何把整个流程的代码分层管理,方便维护 不拆分层次,整个流程顺下来的代码看这里:sqlAlchemy基本使用 项目结构: model.py用来描述表结构: from sqlalchemy i ...
- 洛谷T89644 palindrome回文串
洛谷 T89643 回文串(并查集) 洛谷:https://www.luogu.org/problem/T89643 题目描述 由于 Kiana 实在是太忙了,所以今天的题里面没有 Kiana. 有一 ...
- Python的一些高级特性
内容基本上来自于廖雪峰老师的blog相当于自己手打了一遍,加强加强理解吧. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493 ...
- < 备考CET6 - 替换词 >
替换词 名词 结果 Result consequence 人 People, person citizen, individual 发展 Development advancement,progres ...
- 基于vux的Vue路由切换动画
const history = window.sessionStorage history.clear() let historyCount = history.getItem('count') * ...