虚拟化的理解
虚拟化定义
概念
虚拟化常见分类
虚拟化优缺点
虚拟化技术
定义:
虚拟化是指计算机内的下层模块对上层模块提供一个与上层所期待的相似的模块。打个比方“一千个人心中就有一千个哈姆雷特”,如果有一个机构专门定制客户心中的哈姆雷特,那么这个机构就相当于虚拟化层,定制哈姆雷特的过程就相当于虚拟机。
了解计算机内的虚拟机,还需了解计算机的分层结构,如图1:
![]()
图1
图中描述了一种常见的硬件虚拟化模式,虚拟出多个硬件抽象层为上层提供服务,你可以安装不同的操作系统,操作系统直接互不影响。好比你们市办理身份证的大厅,开设几个办理窗口,你喜欢女士工作人员窗口(windows操作系统)你就过去,你喜欢男士工作人员窗口(linux操作系统)你也去,但是最终你办理的身份证可能都是大厅内那一台制卡机(硬件)在制作身份证。几个办证窗口就类比为虚拟硬件抽象层。
常见概念:
Host:宿主机,技术实现虚拟化的那台物理机,HostOS指的就是宿主机的操作系统
Guest:指的是虚拟化之后出现的虚拟机,GuestOS指的就是虚拟机的操作系统
VMM:虚拟管理器,或者叫做Hypervisor,就是宿主机和虚拟机之间的实现虚拟化的那一层,参考图1的虚拟化层。如图2:
图2
分类
根据底层模块的虚拟化程度分为:
- 全虚拟化 :完全虚拟化出底层模块,上层模块并不知道自己运行在虚拟的东西上(
欺骗)。硬件辅助虚拟化应该也属于全虚拟化。
- 半虚拟机:半虚拟化就是,部分底层模块的功能虚拟上层模块配合才能实现,需要对上层模块修改,增加部分功能。
优缺点:
优点
- 主要就是资源利用率高,我一台机器,上面既有linux开发机,又有windows工作机。一台顶过去几台,工作啊,不费劲(某钙中钙广告)
缺点
- 虚拟机的性能肯定下降,底层模块原来服务一个上层,现在要服务几个上层。你如果有几个领导给你安排任务,每个领 导肯定都觉得你搞事情慢腾腾。
- 错误与安全,各个任务直接容易搞混啊。
虚拟化技术
- cpu虚拟化:主要是针对敏感指令的模拟,比如GuestOS内的reboot(重启)指令,传递到host上之后,host肯定不能执行重启,所有GuestOS.reboot经过VMM的模拟可能就变成了reboot vm*,然后宿主机就重启Guest虚拟机就行了。
- 内存虚拟机:主要是虚拟机内的内存地址与宿主机物理内存地址的转换与映射。
- io虚拟化:虚拟机无法直接访问物理io设备,因此需要vmm截取虚拟机的io请求,然后转换为宿主机的io请求。
vmware虚拟化简介:
裸机上Esx server的iso直接安装,然后登陆配置就行了。上面可以安装自己喜欢的操作系统使用。
kvm虚拟化简介
KVM是嵌入在Linux操作系统标准内核中的一个虚拟化模块,它能够将一个Linux标准内核转换成为一个VMM,嵌有KVM模块的Linux标准内核可以支持通过kvm tools来进行加载的GuestOS。所以在这样的操作系统平台下,计算机物理硬件层上直接就是VMM虚拟化层,而没有独立出来的HostOS操作系统层。在这样的环境中HostOS就是一个VMM