对于普罗大众而言,云计算已经慢慢地从“云端”逐渐“落地’了,云计算不再是那个虚无缥缈的概念,越来越多的人享受到了云计算技术的便利。云主机作为云计算的基础设施,同样也是最早将云计算技术具象化的产品之一,云主机的那些年其实就是云计算的那些年。
一、共享单车与云主机
云主机该怎么定义和解释呢?
官方解释是这样的:整合了计算、存储与网络资源的IT基础设施能力租用服务,提供基于云计算模式的按需使用和按需付费能力的服务器租用服务。
这样的解释太拗口,我们换个角度,从共享单车来类比了解云主机的特点。
1、方便快捷
共享单车为什么方便呢?因为这是公共设施,无需自己花钱买辆车,也不用担心买了自用单车后面临的被偷、维修等问题,只需扫码付钱即可使用。
云主机也是同理。在云计算这个大空间下,遵循按需使用、按需付费的原则来租用服务器,这对于中小企业来讲是非常实用的,省去了自建服务器的巨额花销,同时还不必担心自建服务器的技术搭建、后期运维等种种问题,可以说是非常省心了。
2、经济灵活
与朋友一起出门时,马路边有足够的单车可供多人选择使用。对于云主机来讲,对应的就是弹性可扩展这个概念了。在正常业务流量下只需租用对应流量的云主机,如果面临突发活动或者流量突增,也可以实现云主机的按需升级。同时,云主机之间是互相物理隔离的,一台云主机宕掉可以快速实现故障的平滑迁移,不会引起其他云主机的连锁故障。
图:多云场景
3、安全可靠
不同于共享单车,云主机具备更加安全可靠的特性。和自建硬件安全设备一样,云上同样提供包括主机入侵检测、网站漏洞检测、DDoS攻击防护、安全审计等全方位的安全保护。
最后补充一个脑洞,每台共享单车上安装有GPS等感应定位仪器,甚至可以做到以每台车为单位实现各项功能的实现。换个说法,这不就是边缘计算吗?
图:算力下沉
边缘计算可以理解为将数据的处理、应用程序的运行甚至一些功能服务的实现,由网络中心下放到网络边缘的节点上。在网络边缘结点去处理分析数据,会大大提高与用户的交互效率。
介绍完云主机的基本特性后,接下来,我们继续聊聊云主机的两个关键性技术:虚拟化、在线迁移。
二、云主机关键技术之虚拟化
因虚拟化本质是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式、地域或物理组态所限制。
应用虚拟化技术后,甚至能够将服务器虚拟出十倍以上的云主机,这样的话资源优化效率明显,还可以通过租用的方式来把资源池中的源主机分配给用户。而对于传统的物理服务器而言,通常只能达到20%的使用率,在峰值的时候也只能达到60%到80%的比例,存在着资源浪费的情况。
现在市场上最常见的虚拟化软件有VMWare workstation(VMWare)、VirtualBox(Oracle)、Hyper-V(Microsoft)、KVM(Redhat)、Xen等,这些软件使用不同的虚拟化技术实现,虚拟化实现的方式可以分为两类:全虚拟化、半虚拟化。
在介绍虚拟化技术之前,我们需要先普及一下CPU的基础知识。
1、CPU的运行等级划分
电脑上平时运行着很多程序,包括办公程序、视频影音程序、浏览器等等,每个程序都需要使用CPU和内存。在此背景下,就必须存在各个程序事项的执行状态区分,协调调度整体的资源。在CPU中将区分后的执行状态分为内核态、用户态。
- 内核态:系统中既有操作系统的程序,也有普通用户程序。为了安全性和稳定性,操作系统的程序不能随便访问,这就是内核态。即需要执行操作系统的程序就必须转换到内核态才能执行,内核态可以使用计算机所有的硬件资源。
- 用户态:不能直接使用系统资源,也不能改变CPU的工作状态,只能访问这个用户程序自己的存储空间。
在x86的CPU中,采用Ring0-Ring3作为更细化的运行等级划分。
应用程序的代码运行在最低运行级别上Ring3上,不能做受控操作。如果要做,比如要访问磁盘、写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从Ring3到Ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就完成了设备访问,完成后再从Ring0返回Ring3。这个过程也称作用户态和内核态的切换。
在虚拟化出现之前,用户态和内核态的切换一直都是正常进行的。但是在虚拟化出现后,事情变得奇怪起来。
举个例子,当我们用虚拟化软件创建虚拟机时,客户操作系统(Guest OS)可以是和宿主操作系统(Host OS)同样的环境。这时,就会产生矛盾:
(1)对于Host OS来讲,Guest OS只是一个普通的应用,应该运行在用户态;
(2)但是对于虚拟机中的程序而言,按照执行状态的逻辑,Guest OS应该运行在内核态。而虚拟机中的程序需要进行访问磁盘等操作时,Guest OS却无法执行正常的系统调用,因为按照(1)中的描述,Host OS才是唯一应该运行在内核态的,因此Guest OS无法拥有相应权限。
图:Guest OS内心“我是谁?我在哪??”
全虚拟化和半虚拟化是如何分别解决这个问题的呢?
2、全虚拟化
在全虚拟化的虚拟平台中,Guest OS并不知道自己是一台虚拟机,它会认为自己就是运行在计算机物理硬件设备上的Host OS。因为全虚拟化的VMM(虚拟机管理程序)会将一个OS所能够操作的CPU、内存、外设等物理设备逻辑抽象成为虚拟CPU、虚拟内存、虚拟外设等虚拟设备后,再交由Guest OS来操作使用。这样的GuestOS会将底层硬件平台视为自己所有的,但是实际上,这些都是VMM为Guest OS制造的假象。
在此状态下,Guest OS执行特权指令时便会触发异常,VMM捕获异常后,在异常处做翻译、模拟,返回处理结构到Guest OS内。对此全虚拟化分为两种实现方式:基于二进制翻译的全虚拟化与基于扫描和修补的全虚拟化。典型的全虚拟化软件有 :VMWare、Hyper-V、KVM-x86(复杂指令集)。
全虚拟化的优点在于兼容性强,但是由于VMM在异常处理过程中需要做大量复杂的工作,由此会带来较大的性能损耗。
3、半虚拟化
半虚拟化需要对Guest OS的内核代码做一定的修改,才会将GuestOS运行在半虚拟化的VMM中。与全虚拟化不同的是,修改内核后的Guest OS知道自己就是一台虚拟机,所以能够很好的对核心态指令和敏感指令进行识别和处理,半虚拟化的优点在于性能更加优越,几乎可以接近裸机上的性能。
Xen是一款经典的半虚拟化软件,但是只支持Linux虚拟化,不支持Windows系统,原因就在于微软不支持修改内核代码,这也是半虚拟化在应用上的局限性。
三、云主机关键技术之在线迁移
在了解在线迁移技术之前,首先来看下离线迁移技术。
1、离线迁移
离线迁移就是在云主机关机的情况下从一台物理机迁移到另一台物理机。云主机的操作系统建立在云主机镜像上面,所以在云主机关机的情况下,只需要迁移云主机镜像到另外一台物理主机上,然后根据云计算平台数据库中该云主机的规格重新启动即可。
图:离线迁移
在使用共享存储云平台上,云主机镜像在各个物理机上都可以访问,因此可以极大节省镜像拷贝时间,从用户角度看,只需要经过一次关机和开机时间,即可完成迁移操作。这种迁移方式简单易行,对物理机的兼容性良好,可以跨CPU型号甚至厂商迁移云主机,但是由于需要将云主机进行关机操作,对于部分业务连续性要求较高的用户,大大影响其业务高可用性。
2、在线迁移
在线迁移可以在不影响云主机业务正常运行的情况下,将云主机从一台物理机迁移到另一台物理机。该功能可以极大的提升业务连续性,使得系统管理员能够在不中断用户业务的情况下,对物理服务器进行停机维护、升级、下线等离线操作。
图:在线迁移
与离线迁移不同的是,为了保证迁移过程中云主机的正常运行,在线迁移的目标物理机需要与源物理机具备相同的配置,例如内存与设备状态一致。在线迁移能够满足业务的高可用性,适用于对云主机服务业务连续性要求很高并且物理机配置比较统一的场景。
五、结语
云计算概念提出距今已有10年,云主机作为关键内容之一,从云主机技术的更迭便可窥见云计算发展的滚滚浪潮。此外,作为云计算的基石产品,云主机的核心特性决定了云上其它能力的拓展,也直接关乎于用户的使用体验,因此云主机也是云厂商综合技术实力的佐证之一。
来源:freebuf.com 2020-07-16 17:57:09 by: serene33
请登录后发表评论
注册