深度实践KVM(1-8章)
第一章 企业虚拟化选型与KVM介绍
1.1 KVM的前世今生
1.虚拟化技术的演进过程
软件模拟——>虚拟化层翻译——>容器虚拟化
虚拟化层翻译可以分为:
(1)软件捕捉翻译,即软件全虚拟化
(2)改造虚拟机系统内核加虚拟化层翻译,即半虚拟化
(3)硬件支持的虚拟化层翻译,即硬件支持的全虚拟化
- 软件模拟技术:通过软件完全模拟CPU、芯片组、磁盘、网卡等计算机硬件,如下图所示:
软件模拟的特点:可以模拟任何硬件,但非常低效,一般只用于研究测试的场景。
- 虚拟化层翻译技术:
(1)软件全虚拟化方案:通过虚拟化引擎,捕捉虚拟机的指令并进行处理。当然也会和物理机指令是区分开的。(效率低)
(2)半虚拟化方案:对虚拟机的操作系统内核进行改造,是虚拟机自己对特殊的指令进行更改,然后和虚拟化层一起工作。 (效率一般)
(3)硬件支持的全虚拟化技术方案:对CPU指令进行改造,即VT-x或AMD-v, 对I/0通信的硬件解决方案,即VT-d,
对网络通信的硬件解决方案,即VT-c. - 容器虚拟化技术:基于CGroups、Namespace等技术将进程隔离,每个进程就像一台单独的虚拟机一样,有自己被隔离出来的资源,也有自己的根目录、独立的进程编号、被隔离的内存空间。
- 虚拟化层翻译技术:
- 软件模拟技术:通过软件完全模拟CPU、芯片组、磁盘、网卡等计算机硬件,如下图所示:
2. KVM的架构
如上图所示:
KVM就是内核的一个模块,用户空间通过Qemu模拟硬件提供给虚拟机使用,一台虚拟机就是一个普通的 linux进程,通过对这个进程的管理,就可以完成对虚拟机的管理。
因为对进程管理非常麻烦,RedHat发布了一个开源工具Libvirt,有API和一套命令行工具。大多数管理平台 都是通过libvirt来对KVM虚拟机管理的,比如openstack,cloudstack,opennebula等。
3. QEMU与KVM
QEMU是一个开源项目,实际是一台硬件模拟器,可以模拟多CPU、网卡、IDE设备、显卡、声卡、USB设备、声 卡、蓝牙设备等。还内建DHCP、DNS、SMB、TFTP服务器。缺点是纯软件模拟,非常慢。
KVM只是一个内核的模块,没有用户空间的管理工具,KVM的虚拟机可以借助QEMU的管理工具来管理,可以作为
QEMU的加速器,提升虚拟机的性能。
4. Libvirt与KVM
Libvirt是一套开源的虚拟化的管理工具,提供一套API的lib库,支持主流的编辑语言,比如C\Python\Ruby,提供 libvirtd服务,提供命令行工具virsh。实现对虚拟机的管理,比如虚拟机的创建、启动、关闭、暂停、恢复、迁移、销毁,
以及虚拟机网卡、硬盘、CPU、内存等多种设备的热添加。还支持对远程的宿主机的管理。
Libvirt将虚拟机的管理分为以下几个方面:
第一,存储池资源的管理,支持本地文件系统目录、裸设备、LVM、nfs、iscsi等方式,虚拟机磁盘格式上支持 qcow2、vmdk、raw等格式。
第二,网络资源管理,支持Linux桥、vlan、多网卡绑定管理,比较新的版本还支持open vswitch。还支持nat和路由
方式的网络,可以通过防火墙让虚拟机通过宿主机建立网络通道和外部网络进行通信。
1.2 KVM与常用企业级虚拟化产品的比较
企业级虚拟化产品有4款:vmware、hyperv、xen、kvm
名称 | 产品 | 功能 |
vmware |
个人用户win平台:vmware workstation (免费) 个人用户苹果平台:vmware Fusion 企业级:VMware ESXI(收费) 管理套件:VMware vSphere |
产品线非常全面,产品成熟、稳定、兼容性也不错,不仅有虚拟化的解决方案 ,在IaaS\SaaS\PaaS层都有自己的产品,在网络、存储方面都有相关的 解决方案 |
hyperv |
系统环境:Windows Server2012R2 集群工具:SCVMM 技术要求:windows域、windows server集群 收费产品 |
发展较快,性能也比较好 |
xen |
开源免费 管理工具:xenserver |
推出时间比较长,兼容性、稳定性都不错 |
kvm |
开源免费 openstack |
没有历史包袱,性能优异 |
深度实践KVM(1-8章)的更多相关文章
- 深度实践KVM笔记
深度实践KVM笔记 libvirt(virt-install,API,服务,virsh)->qemu(qemu-kvm进程,qemu-img)->KVM虚拟机->kvm.ko 内核模 ...
- Zabbix监控系统深度实践
Zabbix监控系统深度实践(企业级分布式系统自动化运维必选利器,大规模Zabbix集群实战经验技巧总结,由浅入深全面讲解配置.设计.案例和内部原理) 姚仁捷 著 ISBN 978-7-121-24 ...
- TiDB 深度实践之旅--真实“踩坑”经历
美团点评 TiDB 深度实践之旅(9000 字长文 / 真实“踩坑”经历) 4 PingCAP · 154 天前 · 3956 次点击 这是一个创建于 154 天前的主题,其中的信息可能已经有所发 ...
- [5.19 线下活动]Docker Meetup杭州站—拥抱Kubernetes,容器深度实践
对本次线下活动感兴趣的朋友,欢迎点击此处报名,领取免费票. 今年3月,Docker刚刚过完5岁生日,五年期间,Docker也逐渐在技术和实践方面趋于成熟,更是在去年年底主动拥抱Kubernetes. ...
- Springboot单元测试Junit深度实践
Springboot单元测试Junit深度实践 前言 单元测试的好处估计大家也都知道了,但是大家可以发现在国内IT公司中真正推行单测的很少很少,一些大厂大部分也只是在核心产品推广单测来保障质量,今天这 ...
- Apache Kyuubi 在 T3 出行的深度实践
支撑了80%的离线作业,日作业量在1W+ 大多数场景比 Hive 性能提升了3-6倍 多租户.并发的场景更加高效稳定 T3出行是一家基于车联网驱动的智慧出行平台,拥有海量且丰富的数据源.因为车联网数据 ...
- 《AngularJS深度剖析与最佳实践》笔记: 第二章 概念介绍
第二章 概念介绍 2.1 什么是UI? 用户界面包括内容(静态信息+动态信息), 外观, 交互. 在前端技术栈中分别由HTML, CSS和JS负责. 进一步抽象, 分别对应于MVC三个主要部分: Mo ...
- 云计算与虚拟化KVM深度实践
徐亮伟, 江湖人称标杆徐.多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作.擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作. 个人博客"徐亮伟架构师之路&quo ...
- 《Exchange Server 2010 SP1/SP2管理实践》——第2章 搭建Exchange实验环境2.1 网络环境规划...
本节书摘来自异步社区<Exchange Server 2010 SP1/SP2管理实践>一书中的第2章,第2.1节,作者: 王淑江 更多章节内容可以访问云栖社区"异步社区&quo ...
随机推荐
- PHP 面试踩过的坑
1.get,post 的区别 **显示有区别 ** get方法是将字符串拼接在地址栏后面可以看见 而post方法看不见 **传递的大小有区别 ** 具体大小和浏览器有关系,ie浏览器是2k其他浏览器的 ...
- nyoj 324-猴子吃桃问题 (m[i] = (m[i-1] + 1) * 2)
324-猴子吃桃问题 内存限制:64MB 时间限制:3000ms 特判: No 通过数:20 提交数:21 难度:0 题目描述: 有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法, ...
- ZeroC ICE的远程调用框架 AMI与AMD -Why?
在Ice有两种异步使用的方式,AMI和AMD.AMI是异步方法调用,AMD是异步方法调度(分派).前者用在代理端,后者用在饲服实现端. AMI其实就是在代理端,使用Future机制进行异步调用,而不阻 ...
- MySQL 备份数据那点事
mysqldump 什么是 mysqldump ? mysqldump 是 MySQL 用于执行逻辑备份的一款工具,可以根据原始数据库对象以及表的定义和数据来生成一系列可以被执行的 SQL 语句. 通 ...
- C#控制打印机通过不同纸盒/进纸口进纸打印
通常我们是通过程序操作打印机打印我们设置好的内容,但基本都是打印机默认进纸口打印:最近有一个通过C#程序控制两个进纸口分别进一张纸进行打印的需求,通过偿失找到了解决方案如下: 关于C#调用打印机打印的 ...
- 面试官:你连RESTful都不知道我怎么敢要你?
目录 01 前言 02 RESTful的来源 03 RESTful6大原则 1. C-S架构 2. 无状态 3.统一的接口 4.一致的数据格式 4.系统分层 5.可缓存 6.按需编码.可定制代码(可选 ...
- inventory
1.设置主机的默认inventory mode. 2. 设置自动Populate 数据
- Web Scraper 翻页——利用 Link 选择器翻页 | 简易数据分析 14
这是简易数据分析系列的第 14 篇文章. 今天我们还来聊聊 Web Scraper 翻页的技巧. 这次的更新是受一位读者启发的,他当时想用 Web scraper 爬取一个分页器分页的网页,却发现我之 ...
- JavaScript 关于setTimeout与setInterval的小研究
说明 在开发功能"轨迹播放"时,遇到了一个情况. 原先同事已经开发了一版,这次有个新功能:点击线上任意一点后可以从点击处重新播放. 看了一下原来的版本,发现同时使用了setTime ...
- Python 信息提取-爬虫
import requests import re from bs4 import BeautifulSoup url = "http://python123.io/ws/demo.html ...