Virtualization基础
官方文档学习
CPU虚拟化
模拟 emulation
对于CPU来说,需要模拟ring 0、1、2、3
虚拟机内核运行在ring 1上
虚拟 virtualization
完全虚拟化 full-virtualization
对于CPU来说,需要虚拟ring 0
虚拟机内核运行在ring -1 上
Guest认为自己直接运行在物理主机上,没有意识到自己是虚拟机
BT 二进制翻译,基于软件的方式
HVM 硬件辅助的虚拟化,基于底层硬件支持虚拟化指令集
半虚拟化 para-virtualization
Guest清楚的知道自己是虚拟机
如果虚拟机要运行特权指令,但这条特权指令不会影响到其它的虚拟机和物理机,则由虚拟机的内核直接调用硬件资源,减少了中间的指令转换层
如果虚拟机要运行的特权指令,会影响虚拟机和物理机,则发出hyper call,交由hypervisor调用硬件资源
Memory虚拟化
在虚拟机中
Shadow Page Table 实现虚拟机中逻辑地址到虚拟机物理地址的转换
MMU 将虚拟机的物理地址转换为物理主机的物理地址
GVA ---> GPA ---> HPA
MMU Virtualization 硬件实现,能使得虚拟机中的逻辑地址直接转换成为物理主机的物理地址
Intel EPT Extended Page Table
AMD NTP Nested Page Table
GVA ---> HPA
TLB Virtualization
Translation Lookaside Buffer 转换检测缓冲区是一个内存管理单元
tagged TLB
存储虚拟机中逻辑地址到物理机的物理地址的转化
I/O虚拟化
存储设备
硬盘、光盘、U盘、软盘
网络设备
网卡
显示设备
VGA
frame buffer机制
给每个驱动一个缓冲窗口,一般使用完全虚拟化
字符设备
键盘
ps/2、usb
鼠标
ps/2、usb
使用焦点捕获方式,将字符设备和虚拟机建立临时关联,一般使用完全虚拟化
I/O虚拟化方式
完全虚拟化
完全使用软件来模拟真实硬件
适用于所有的设备
半虚拟化
移除了虚拟机中不必要的模拟驱动使用,而是调用I/O前端驱动,I/O前端驱动和物理主机上的I/O后端驱动交互,从而直接调用物理驱动
通常仅适用于
磁盘、网卡
IO-through IO透传
让虚拟机直接使用物理设备,仍然需要hypervisor协调
需要硬件支持透传技术
Intel VT-d
在IO MMU层隔离各虚拟机的IO数据,避免因为集中的DMA设备管理,导致多虚拟机的IO数据混淆
并且还能完成中断映射的对应关系,明确各IO中断对应的处理虚拟机
基于北桥的硬件辅助的虚拟化技术,主要提升I/O设备可靠性、灵活性以及性能
虚拟化技术两种实现
Type-I
hypervisor ---> vm
Xen、RHEV、ESXi
Type-II
host vmm ---> vms
KVM、VMware Workstation、Virtual Box
依赖底层操作系统
KVM、Xen缺陷
它们都不能完整意义上的实现IO,必须通过qemu、virtio实现IO传输
虚拟化技术分类
模拟
PearPC
Bochs
QEMU
(模拟器)
完全虚拟化
native virtualization
底层硬件架构必须和虚拟机架构一致
VMware Workstation、VMware Server、Parallels Desktop、KVM、Xen(HVM)
半虚拟化
para-virtualization
底层硬件架构必须和虚拟机架构一致
xen、uml(user-mode linux)
OS级别虚拟化
OpenVZ
lxc
Solaris Containers
FreeBSD jails
(性能好)
库虚拟化
wine
在Linux上模拟Windows库,可以玩Windows上的游戏、软件
应用程序虚拟化
jvm
TUN与TAP
在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网卡实现的设备,这些虚拟的网络全部用软件实现,并向运行于操作系统上的软件提供与硬件网络设备相同的功能
TAP等同于一个以太网设备,它操作第二层数据包如以太网数据帧
TUN模拟了网络层设备,操作第三层数据包比如IP数据包
操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据。反之,用户空间的程序也可以像操作硬件网络设备那样,通过TUN/TAP设备发送数据,数据包投递至操作系统的网络栈,从而模拟外部接受数据的过程
虚拟化网络
nat
bridge
route
isolation
网桥设备管理
NetworkManager不支持桥设备管理
chkconfig NetworkManager off
chkconfig networ on
桥设备管理软件包安装
yum install -y bridge-utils
编辑桥配置文件
cp ifcfg-eth0 ifcfg-br0 vim ifcfg-br0 DEVICE=br0
NM_CONTROLLED=no
TYPE=Bridge
# 下面IP、掩码、DNS直接使用原网卡的
# 如果有mac地址最好删除掉 vim ifcfg-eth0 # 将 IP、掩码、DNS等删除
BRIDGE=br0 service network restart
使用brctl配置桥设备(不持久)
brctl addbr br0 brctl stp br0 on ifconfig eth0 0 up brctl addif br0 eth0 ifconfig br0 IP/NETMASK up route add default gw GW_IP
Virtualization基础的更多相关文章
- Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建
[注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用 ...
- 20145212 实验四《Andoid开发基础》
20145212 实验四<Andoid开发基础> 实验内容 安装Android Studio 运行安卓AVD模拟器 使用Android运行出模拟手机并显示自己的学号 实验过程 一.安装An ...
- 20145215实验四 Android开发基础
20145215实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事件 ...
- [Virtualization][SDN] VXLAN到底是什么 [转]
写在转发之前: 几个月以前,在北大机房和燕园大厦直接拉了一根光钎.两端彼此为校园内公网IP.为了方便连接彼此机房,我做个一个VPN server在燕园的边界,北大机房使用client拨回.两个物理机房 ...
- 云计算服务模型,第 1 部分: 基础架构即服务(IaaS)
英文原文:Cloud computing service models, Part 1: Infrastructure as a Service 本文介绍三个云类别中的第一个:基础架构即服务(infr ...
- Docker - Docker基础讲义
Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 虚拟化技术 硬件级虚拟化(hardware-level-virtualizatio ...
- <Mastering KVM Virtualization>:第三章 搭建独立的KVM虚拟化
在第二章,你了解了KVM的内部结构:在本章中,您将了解如何将Linux服务器设置为虚拟化主机.我们正在讨论将KVM用于虚拟化并将libvirt作为虚拟化管理引擎. KVM开启了虚拟化并利用你的服务器或 ...
- Linux基础 - 系统优化及常用命令
目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...
- Linux基础系统优化及常用命令
# Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...
随机推荐
- 解决因为手机设置字体大小导致h5页面在webview中变形的BUG
首先,我们做了一个H5页面,在各种手机浏览器中打开都没问题.我们采用了rem单位进行布局,通过JS来动态计算网页的视窗宽度,动态设置html的font-size,一切都比较完美. 这时候,你自信满满的 ...
- RLock(递归锁)
import threading, time def run1(): print("grab the first part data") lock.acquire()#进入大门后的 ...
- Springboot 命令注入属性[--]&[-D]
场景 在用Jenkins,做自动化部署时,遇到一些命令问题. 需要通过命令的形式,注入些业务值. -D 系统属性注入 Java,启动jar 命令: java [ options ] -jar file ...
- laydate控件后台返回的时间前台格式化
//功能:laydate控件后台返回的时间前台格式化 //参数:laydate控件值 function formatDate(strTime) { if ("" === strTi ...
- Hibernate查询语句HQL8大特点
Hibernate拥有一种功能非常强大的查询语言,这种语言被有意得与SQL非常相似,便于开发人员掌握.但不要被HQL的语法表面所迷惑,HQL完全是面向对象的,可以用来过程多态.继承.关联等关系. 1. ...
- 洛谷 P1019 单词接龙 (DFS)
题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...
- Dubbo服务的搭建
dubbo框架主要作用是基于RPC的远程调用服务管理,但是注册中心是用的zookeeper,搭建dubbo,首先要安装zookeeper,配置zookeeper... 实现功能如图所示:(存在2个系统 ...
- tp5对接支付宝支付简单集成
对于每个刚开始工作的新手来说,无论支付宝支付还是微信支付都是跑不掉的一个小门槛. 在加上本人比较技术比较渣(比较懒导致的),不太喜欢引用那么大的SDK,于是就简单集成了一下支付宝的支付. 但也只是只有 ...
- Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)
摘要: 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页.虚拟环境 视图层 JsonResponse FBV 与 CBV(function base views与class bas ...
- Day16模块
Day16 当做执行文件时 __name__ = "__main__" 当做模块被导入时 __name__ 等于文件名即模块名 ```python 循环导入(模块的名称空间已经建立 ...