为什么我们需要虚拟化技术?

这个月实在是没有什么好写的, 也没有什么值得发布的成果和笔记, 只好在这里谈一下自己对虚拟化技术的认识和看法, 本人学识有限, 如有歧义, 请不吝赐教.

什么是虚拟化技术?

在计算机技术中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和数据存储。

——来自维基百科

虚拟化技术正在风靡

得益于计算机硬件性能的提升, 封装和模拟技术的不断成熟, 虚拟化技术在今天终于能够大展宏图. 实现很多我们以前想过, 却无法做到的事. 目前, 虚拟化技术几乎可以应用到计算机领域的各个方面, 小到Android开发时使用的Android SDK内置模拟器, 大到服务器云计算中的新兴力量Docker应用容器引擎, 我们的生产力几乎没有一处是未涉及到虚拟化技术的.

可以说, 虚拟化技术在这个”性能过剩”的时代, 大大降低了软硬件的管理成本并增强了系统的安全性, 是一项革命性的技术成果, 这也是虚拟化技术在今天如此流行的主要原因.

我们身边的虚拟化技术

虚拟化技术在IT行业中的使用非常普遍, 由于其模拟的特殊性, 有时我们甚至难以察觉到此时我们正在使用的应用程序是通过虚拟化技术实现的.

我们身边的虚拟化技术实际上有很多, 举几个简单的例子:

软件的开发需要在多种操作系统上进行运行测试, 过去, 我们需要复数的硬件设备或以更麻烦的形式将多种操作系统安装到一台测试机上, 现在, 我们使用虚拟机轻松的搞定这件事.

由于工作需求, 我们临时需要一个局域网络, 而我们需要进行连接的机器来自天南海北, 想要组起局域网是一件非常困难的事情, 而现在, 我们使用VPN(Virtual Private Network)就够了.

有一些所谓的”绿化软件”, 实际上也是对软件程序本身进行了封装, 开发者通过技术手段, 将程序临时映射到正常安装时所在的目录, 达到模拟出”在系统上安装完毕”的效果, 在程序结束运行后, 停止映射并保存运行时产生的数据, 最终, 一切就像这个软件没有在你的机器上运行过一样, 不留痕迹. 我们平常所提到的一些沙盘, 沙箱, 使用的就是类似的虚拟化技术, 同时, 也可以用这种技术进行安全性测试, 用于杀毒软件和防火墙, 可以说是功不可没.

为什么我们需要虚拟化技术?

虚拟化技术的用途实在太多, 它的应用并不是没有理由的, 我们简单的设想以下几种场景:

场景一

由于种种原因我不得不经常重装Windows操作系统, 通常来说, 每一次重装Windows系统, 都会失去我安装的软件的注册表等很多信息, 即使软件程序本身还存在我的硬盘上, 但很可能配置已经丢失了, 或者由于缺失一些被安装到系统盘的文件而导致无法启动, 不得不重装软件来解决. 如果此时我们使用虚拟化技术, 将平时用的软件都封装成虚拟化软件, 并通过特定的平台进行管理, 就可以实现重装系统后软件配置依然完整保留的情况, 从而避免遭遇短时间内反复重装软件的窘境.

场景二

在大多数民间站长都不可能为了运行几个网站而耗尽一台服务器的资源的情况下, 服务器供应商为了将资源分离成多个部分进行分别租借, 同时又要保证与使用单台服务器时的操作方式一致, 使用了基于资源虚拟化技术的虚拟机来对一台服务器的资源进行虚拟, 使一台服务器的资源能够分成多个部分以VPS的形式进行租借. 这么做, 一方面提升了供应商的销量和利润, 另一方面降低了民间站长架设网站的资金门槛, 达到了双赢的局面.

场景三

在云计算场景下, 服务器硬件成为了资源, 并以集群的形式而存在, 在架构云计算应用时, 如果以单台服务器作为单位来计算资源量, 实现应用程序必然要考虑到服务器之间的资源交换和并发时间等问题, 开发与维护都会变得异常痛苦. 此时使用虚拟化技术将服务器集群化整为一个巨大的资源, 将底层的资源交换问题解决, 开发和维护都会变得容易很多, 成本也随之降低, 实际上, 目前大多数的云计算架构, 都是这么做的.

场景四

这可能是普通PC用户最常遇到的场景, 几个小伙伴一起联机打游戏, 该怎么做呢? 基本上, 单机游戏的联机功能仅限于局域网联机, 这意味着小伙伴们在地理上必须离得很近, 通过组建局域网来实现联机功能, 这是很难做到的, 所以, 使用VPN技术的联机软件应运而生, 满足了天南海北的小伙伴们联机玩游戏的需求, 造福了许多人.

以上四个场景, 我们可以轻易的得出结论, 虚拟化并不单单是一个模拟和封装的过程, 它同时还会带来创新, 并创造出新的应用环境, 让人们能在新的平台上自由地施展拳脚.

那些反对虚拟化的声音

虽然虚拟化有很多的好处, 但它对性能的损耗是几乎不可避免的, 所以不少人也提出了质疑和反对的声音. 在大多数计算机管理者的眼中, 管理方便的优先级是远大于高性能的, 虚拟化所带来的安全, 易用, 复用的优势, 应该远大于性能损耗而产生的负面影响, 何况, 虚拟化技术也在不断的进化, 根据不同的应用场景, 所产生的性能消耗已经越来越低, 如今还反对虚拟化技术, 其理由是站不住脚的.

很多PC用户由于机器的性能不够高, 而不使用虚拟化技术, 这是完全合理的, 当你的性能不满足或者很难承受虚拟化所带来的性能损耗的时候, 不应该使用虚拟化技术. 对于使用高性能PC的用户而言, 使用虚拟化绝对是利大于弊, 即是你不主动使用, 你的杀软和防火墙(甚至浏览器)也在帮你用了, 我们能通过一些小的性能牺牲, 带来长久稳定的使用体验, 这应该是一件值得高兴的事情.

实际上, 我也是一个更看重性能的人, 对于自己平常使用的机器, 我不安装杀毒软件, 也不额外安装防火墙, 更不安装某某管家某某卫士之类的软件, 仅仅是随着推送过来的更新, 及时打上补丁而已, 因为我有自信我的使用习惯不会让我的机器感染到病毒程序, 也相信入侵者们不会无聊到在上亿的设备中选择攻击我的计算机而不是那数千万台明显更有价值的服务器. 但对于一些我无法信任的程序和服务, 我仍然会选择默默的打开沙盘或者虚拟机, 这是一种预防措施, 更是一种习惯. 一些更极端的人可能会说自己连沙盘或虚拟机都不会用, 如果系统出了问题, 重装系统就可以了. 也许是因为没有遭遇过环境配置到不允许随意重装系统的情况, 所以他们也不会重视对系统本身的保护, 遇到问题总是通过重新安装操作系统来解决(而且绝大多数还是盗版), 长久下来, 既得不到技术上的进步, 也培养不出克服和解决问题的能力.

虚拟化技术的未来

虚拟化技术仍在不断发展, 为了更好的进行系统化的管理, 为了更好的对资源进行整理, 虚拟化都是不可或缺的. 有越来越多的新模式和新的封装环境进入我们的视野, 虚拟化比起作为一项技术, 更像是一个发明平台, 总有人发明出更好效率更高的东西, 并对应不同的应用场景, 去创造出无限的可能.

虚拟化的步伐不会停止, 对于IT从业人员来说, 学海无涯, 只有紧跟时代潮流, 掌握好常见的虚拟化环境, 才能更好的将这项技术运用于工作与生活.