虚拟机
虚拟机三大特征
1.同质(Equivalence):即WM的运行环境和物理机的环境在本质上是相同的,表现上可以有一些差异。如CPU的SA必须一致(实际可以不一致), CPU core的个数可以不同。
2.高效(Efficiency):即VM的性能必须接近物理机。因此,常见的模拟器(boches, SImICS…)就不能称为VM。为达此目的,软件在VM上运行时,大多数指令要直接在硬件上执行,只有少量指令需要MM的模拟或处理。
3.资源受控(Resource contro):即VMM对物理机的所有资源有绝对的控制力。
创建虚拟机方式
1.创建空虚拟机
2.使用模板创建虚拟机
3.使用虚拟机创建虚拟机
制作模板方式
1.虚拟机转为模板:将虚拟机直接转换为模板所有参数均使用该虚拟机当前设置。转换后,该虚拟机不再存在。
2.虛拟机克隆为模板:复制虚拟机为模板并可调整部分参数设置,使其与虚拟机稍有不同。克隆完成后,该虚拟机仍可正常使用。
3.模板克隆为模板:复制模板为新模板并可调整部分参数设置,使其与原模板稍有不同。克隆完成后,原模板仍存在。
三种模板
1.OVF( Open Virtualization Format):开放虚拟化格式,由一个ovf文件和若干个vhd文件组成。ovf文件是虚拟机的描述文件,文件名为导出模板时设置的文件名,如 template01.ovf。vhd文件是虚拟机的磁盘文件,每个磁盘生成一个vhd文件,文件名为:“模板名称-磁盘槽位号.vhd",如 template01-1.vhd。
2.OVA( Open Virtualization Appliance):开放虚拟化设备,ova格式的模板采用.tar作为文件扩展名,相当于ovf+vhd文件的整合。ova这种单一的文件格式使得它非常便携。可以说ova就是ovf的一种压缩模式,即将ovf模板中的一组文件压缩为单一的文件。
3.XML( Extensible Markup Language):可扩展标记语言,xml格式的模板由一个xml文件和若干个vhd文件组成。xml文件是虚拟机的描述文件,文件名为导出模板时设置的文件名,如 template01.xml。vhd文件是虚拟机的系统文件,每个磁盘生成一个vhd文件,文件名为:“模板名称-xvd磁盘驱动器号.vhd",如template01- xvda. vhd。
注:
三种模板格式都包含了所有用于部署虚拟机的必要信息。
导入模板方式
1.从共享目录导入:使用此种方式,需先将保存在本地PC或其他网络设备的虚拟机模板所在文件夹共享给某个用户,使主机可通过网络地址访问虚拟机模板文件,并通过用户名和密码进行鉴权。
2.从本地导入:使用此种方式,仅需要将模板文件保存在本地PC即可。
3.从网络服务器导入:使用此种方式,需将模板文件存放在HTTP协议的网络服务器中,使主机可通过HTTP地址访问,且无需鉴权。
虚拟机迁移
迁移虚拟机是指将正在运行的虚拟机从一台主机移到另一台主机上的过程,迁移过程中无需中断虚拟机上的业务。
迁移条件
1.虚拟机未绑定图形处理器、USB设备。
2.已获取迁移的目标主机名称。
3.如果源主机和目标主机的CPU类型不一致,需要开启集群的IMC模式。
4.当跨集群迁移时,源主机所属集群和目标主机所属集群的内存复用开关设置需相同。
迁移失败原因
1.源主机和目标主机网络中断或网络不通。
2.目标主机无法访问虚拟机的磁盘。
3.目标主机故障、被重启或已进入维护模式。
4.源主机和目标主机的CPU类型不兼容。
5.源主机和目标主机的BOS配置项配置不一致,例如“Advanced> Advanced Processor”中的CPU特性列表的配置不一致。
快照
创建快照时会生成一个新的差分卷,虚拟机会挂载这个差分卷作为磁盘文件,虚拟机的读请求会重定向到源卷中。
创建快照采用了ROW( Redirect on write)技术,快照后的写操作会进行重定向,所有的写I/O都被重定向到新卷中。所有旧数据均保留在只读的源卷中。
磁盘做多个快照后,会产生一个快照链。
虛拟机卷始终挂载在快照链的最末端。
Tools
Tools是一个性能优化程序,为虚拟机安装 Tools可以让其获取到更好的性能,这样也意味着在用户操作窗口会有更好的体验。
- 作用
1.为虚拟机提供高性能的磁盘I/O和网络I/O功能。
2.为虚拟机提供虚拟硬件监控功能,如:获取虚拟机指定网卡IP信息、获取虚拟机内部各CPU利用率和内存利用率、获取虚拟机内各个磁盘/分区的空间使用信息。
3.为虚拟机提供高级功能,如:迁移虚拟机、安全关闭虚拟机、安全重启虚拟机、休眠虚拟机、在线调整虚拟机的CPU规格、创建虚拟机快照、虚拟机蓝屏检测、虚拟机与主机时钟同步、虚拟机网卡的高级功能(QoS、流量整形、ARP广播抑制、DHCP隔离、IP与MAC绑定)、自动升级虚拟机的驱动程序(Tools和智能网卡驱动) - 安装条件
(Windows下)
1.虚拟机已安装操作系统。
2.虚拟机未安装其他版本的Tools,如果已安装请将原Tools卸载。
3.虚拟机系统磁盘的剩余空间必须大于32MB。
4.如果虚拟机的操作系统为 Windows2008和 Windows7,需使用 Administrator用户安装Tools。
(Linux下)
1.虚拟机已安装操作系统。
2.虚拟机未安装其他版本的 Tools
3.虚拟机系统磁盘的剩余空间必须大于20MB。
4.虚拟机操作系统已经安装gzip工具,可以使用“tar"命令对压缩包进行解压。gzip工具的安装请参考相应操作系统的产品文档。
5.如果虚拟机的操作系统类型为 Red Hat Enterprise Linux4.7/6.0(32/64位)或 Centos4.7/6.0(32/64位),安装 Tools前需先替换内核文件。
网卡类型
1.HW_X_ NET:一般虚拟机网卡类型,虚拟机默认使用该类型网卡。
2.HW_V_NET:通过CPU多核并发能力为虚拟机提供高带宽的虚拟机网卡类型。使用该网卡类型需要虚拟机操作系统支持,否则可能导致虚拟机网卡不可用。
虚拟化优势
1.提高硬件利用率
2.节能
3.减少运维成本(运维人员少了)
4.操作系统和硬件解耦(比如原来都要根据硬件兼容问题来装操作系统,现在在最底下加了虚拟化层以后,物理硬件和操作系统就不用非得一一对应了)
虚拟化本质
1.分区:一个服务器上可以分出好多虚拟机
2.隔离:分出的好多虚拟机都是相互隔离独立的
3.封装:整个虚拟机都保存在文件中,可以通过移动文件来移动虚拟机
4.相对于硬件独立:迁移虚拟机无需做修改就可以在任何服务器上运行虚拟机
总结:
通过将底层硬件资源池化,再通过虚拟机创建一些逻辑上硬件,将逻辑上硬件与资源池中的资源建立映射关系,从而达到虚拟机的共享资源目的。
前提:
虚拟化技术的实现是建立在物理资源上,虚拟化资源不能超过物理资源(当然采取某些资源技术除外,例如内存复用)。
虚拟化架构
按在系统中位置
1.寄居虚拟化
安装应用程序来实现,像我们的VMware Workstation 那样,使用简单但是耗能大。
2.裸金属虚拟化
虚拟机不依赖操作系统,其和寄居虚拟化有点相似,但是其可以直接调用硬件,比如寄居的如果在虚拟机里再弄虚拟机性能就会下降很多,因为上面那个是通过一些指令集调用外面一层机器的硬件,而裸金属则是可以直接调用硬件功能,就算叠好多层虚拟机,最里面那个性能也不会明显下降(Microsoft Hyper-V做过相关实验),其需要一个服务控制台,代表有FusionSphere(FC是控制台)、ESXi(Client是控制台)。
3.操作系统虚拟化
相当于安装一个虚拟容器,然后在上面安装应用啥的(类似沙盒,或者360里的隔离区那样,里面一个简单化系统),主机是什么系统这个虚拟化操作系统也得是什么操作系统,用的比较少,其简单易于实现,但是隔离性差(多容器共享同一操作系统),因为像这一般实在Linux系统中实现(可以自由选取需要的内容),但是其中的root用户可以对他们都进行操作,所以此时相当于没有隔离。
4.混合虚拟化
相对于寄居虚拟化底层加了个虚拟硬件管理,从而可支持多种操作系统,有种把裸金属和操作系统两种虚拟化方案结合的感觉。
按Hypervisor位置
1.1型虚拟化:Hypervisor直接安装在物理机上,多个虚拟机在 Hypervisor上运行Hypervisor实现方式一般是一个特殊定制的 Linux系统。XEN和 VMWare的ESXi都属于这个类型。
2.2型虚拟化:物理机上首先安装常规的操作系统,比如Redhat、Ubuntu和 Windows.Hypervisor作为OS上的一个程序模块运行,并对管理虚拟机进行管理。KVMVirtualBox和 VMWare Workstation都属于这个类型。
按硬件调用
1.半虚拟化
虚拟操作系统中加入特定虚拟化指令,通过这些指令可以直接向中间层调用底层硬件资源,此时CPU效率最高,代表XEN。
2.全虚拟化
虚拟操作系统与底层完全隔离,不能直接调用底层硬件,有中间层转化后调用底层(由VMM层捕获所有命令,在VMM进行二进制编译),代表:VMware Workstation。
注:
假如全虚拟化和半虚拟化都叠了好多层虚拟机,则全虚拟化因为要中间层转化调用硬件,所以最里面一层如果操作,会往外一层调用,外一层再往更外面一层调用,一直调到最外面一层,所以效果就很差,而半虚拟化直接用通过指令直接向中间层调用,所以效果上和直接在主操作系统上差别不大。
3.硬件辅助虚拟化
当下主流形式,在CPU中加入新的指令集和处理器运行模式,从而虚拟操作系统能直接调用硬件资源(里面有non-root和root两种模式,当non-root要执行特权指令时会从Guest OS转到VMM OS 里,然后才能调用硬件执行,所以对系统来说更加安全),代表:Intel的VI系列。
虚拟化内容
计算虚拟化
CPU虚拟化(例如有通过VMM,即Virtual Machine Monitor 调用硬件CPU,在XEN中VMM和Hypervisor几乎没区别)、内存虚拟化(把物理机内存分块,然后分多个虚拟机用)、I/O虚拟化(VMM截获用户操作系统对设备的访问请求来复用外设资源)。
硬件虚拟化
1.VT-x(处理器辅助虚拟化)
2.VT-d(I/O辅助虚拟化):可以把物理机硬件的PCI硬件,比如显卡、网卡等直接通给虚拟机用
3.VT-c(网络辅助虚拟化)
4.TXT(可信执行技术):给CPU执行指令用的
存储虚拟化
-
存储资源
表示物理存储设备,例如IP SAN、Advanced SAN、NAS等。 -
存储设备
表示存储资源中的管理单元,一个存储资源可以有多个存储设备,并且在FC中,存储设备有五种:LUN、本地磁盘、Advanced SAN存储池、FusionStorage存储池和NAS共享目录。 -
存储分类
(在存储设备上加一层逻辑层,通过逻辑层访问存储资源)
1.裸设备+逻辑卷
功能:
精简置备磁盘:比如给100G存储,但我们一开始只是一个K为单位的小文件,随着使用而增大,直到100G,就像我们平常虚拟机也是这样;全量快照(把虚拟机状态完整的快照存储下来),此时虚拟机存放在通用块层,这种虚拟化用的少。
支持存储类型:
IP SAN(将ISCSI这种快协议封装到IP中);FC SAN(光通道存储,效率高,是在一种无丢包的环境,在FC里他占用的地方别人都不能用,如果没有资源他就不发出去,所以不会丢包);本地存储。
2.存储设备虚拟化
用专门存储服务器并在上面安装存储软件实现,功能主要比上面多了个链接克隆(就是用一个硬盘-母盘,克隆多个虚拟机文件,所有虚拟机文件共用这一个硬盘,但改动内容时就存在自己虚拟机文件-差分盘里,当然你会发现母盘改了,大家也都是一起改的,没改的只有自己的差分盘,适合流动性大的然后用户操作少的,否则用完整复制比较好);差量快照(只会对改变的地方进行快照记录下来,更快更省资源),支持存储类型有FusionStorage。
3.主机存储虚拟化+文件系统
精简置备磁盘;差量快照;存储冷热迁移;磁盘扩容;精简磁盘空间回收;链接克隆,支持存储类型有IP SAN、FC SAN 、NAS和本地存储,此时主机通过文件系统管理虚拟机磁盘文件,并通过虚拟化层提供很多高级业务,业务能力不依赖存储设备。
数据存储
表示系统中可管理、操作的存储逻辑单元,一个数据存储和一个存储设备对应,并且数据存储承载了具体的虚拟机业务,例如创建磁盘等
网络虚拟化
有一个主要的虚拟交换技术(可以在虚拟化的操作系统上添加一个虚拟化二层交换机)
解决方案:
分布式交换机(可以管理很多加入的节点)
主要有三种:
1.服务器内部CPU实现虚拟交换:功能扩展灵活,但消耗的是服务器CPU,性能低
2.网卡实现完整虚拟交换:性能高,也节省服务器CPU资源,但是依赖特殊网卡硬件支持
3.物理交换机实现虚拟交换:可继承交换机二层特性,但规格小,扩展困难
网络的大二层技术
1.SPB
旧的技术,支持在线虚拟机迁移,租户支持24位,收敛速度慢(采用源端集中计算路径,计算工作量大),兼容性好(可以说就是为了兼容旧设备而留着的),带头有华为等。
2.TRILL
支持在线虚拟机迁移,租户支持12位,收敛速度快(采用分布式计算路径,计算工作量小),兼容性差,带头有思科、华为等。
磁盘虚拟化技术
1.RAID0
要求至少两块硬盘,读写是两块同时读写,所以读写速度翻倍,但只要有一块硬盘挂了所有数据丢失,而且无法找回。
2.RAID1
镜像,可以由两块以上的偶数个硬盘组成,一半硬盘作为存储,一半作为备份,所以会损失一半容量,但是数据有备份,安全。
3.RAID5
由三块以上硬盘组成,两块读写,一块写入校验和,不管哪块出问题都可以通过校验和那块恢复另一块的内容,所以允许坏一个,随机读快,写速度低。
4.RAID6
由三块以上硬盘组成,两块写入校验和,比5更安全。
5.RAID10
使用两组RAID0来组成RAID1,安全性更高。
容器技术
容器是操作系统内核自带能力,是一种轻量化的虚拟化技术。
Docker
Docker核心在于实现应用与运行环境整体打包以及打包格式统一。Docker并不是容器技术的唯一选择。
其是一个开源的应用容器(即操作系统内核自带能力)引擎,让开发者可以打包应用以及依赖包到一个可移植的容器中,然后发布到Linux机器上,其需要解决的问题主要是应用部署时面临的各种复杂环境管理的问题。基于Go语言开发,其相比传统容器定义并实现了Portable的标准,并基于该标准的Build和Ship机制。其核心价值有:构建标准化、交付形态标准化、运行环境标准化。
Docker总体组件架构
1.Docker daemon
2.Docker registry
3.Libcontainer
4.Docker container
5.Graph driver
Docker总体技术架构
1.Docker系统使用C/S架构
2.Server端驻守在后台: docker daemon
3.Docker client通过 REST AP|请求 Docker daemon来管理 Docker的镜像和容器等
4.Docker Client是一个C凵程序,可以在命令行中通过 Docker二进制文件进行交互
Docker三组件
1.Docker Client:用户界面,支持用户与 Docker Daemon之间通信
2.Docker daemon:运行于主机上,处理服务请求
3.Docker Registry:支持拥有公有与私有访问权限的 Docker容器镜像仓库
Docker三要素
1.Docker Containers:负责应用程序的运行,包括操作系统、用户添加的文件以及元数据
2.Docker Images:构建容器的只读模板,用来运行 Docker容器
3.Docker File:文件指令集,用来说明如何自动创建 Docker镜像
Docker应用场景
1.Web应用的自动化打包和发布
2.自动化测试和持续集成、发布
3.在服务型环境中部署和调整数据库或其他的后台应用
4.从头编译或者扩展现有的Open Shift或Cloud Foundry平台来搭建自己的PaS环境
Docker优势
1.轻量级虚拟化:Vmware,KM,Xen Server都是重量级虚拟化技术;用户需要高效运行环境,而非整个机器;一次构建、到处运行。
2.Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。