坑边闲话:作为一个浸淫计算机世界多年的老萌新,经常产生现实世界与计算机世界的冲突感。有时把周遭环境弄得一团乱,此时就幻想能 Ctrl Z 回退一下。在现实世界中,这自然不太可能,在管理很多计算机设备、系统、软件的时候也很难做到。但是借助虚拟化技术,上述的“幻想”将变得很好操作,今天就让我们来探索一下虚拟化技术。

软件版本

本教程适用于 ESXi 7.0 和 8.0 版本。

VMware 是现在虚拟化技术做得比较好的公司之一,该公司有完整的一整套企业级云服务解决方案。但是直接上来就介绍 VMware 的各种产品未免有点打广告的嫌疑。本着授人以渔的思想,我准备先从管理(运维管理、个人计算机管理)中的痛点入手,然后顺着这条线讲讲为何要做虚拟化。

1. 告别管理的痛苦·

如果你对计算机比较熟悉,那么肯定遇到过以下这些问题:

  • P1: 计算机软件环境好不容易配置好了,然后一个错误操作导致环境崩溃
  • P2: 多台计算机不方便集中管理
  • P3: 做工作需要多种计算机环境,这时候需要用双系统乃至多系统来解决;不差钱的话甚至可能已经动了买多台电脑的想法

针对上述的几个问题,大部分老鸟有以下几种解决方案:

  • A1: 用创建系统还原点的方法来一键重置系统
  • A2: 通过计算机自带的远程管理软件,如 iDrac、ilo、IPMI、vPro 等进行多台计算机的集中管理,从而避免使用多套鼠标、键盘、显示器来管理多台电脑
  • A3: 双系统就双系统吧,大不了在电脑上装几个虚拟机,或者大不了多买几台电脑。

确实,我们一开始提到的几个问题都可以用上面的这几种做法来避免,但是其中的某些方法也有缺陷,并不能很好地发挥整台计算机的计算存储潜力。

2. 入坑虚拟化技术·

最开始,我与大部分大学生一样,入学时买了一台性能中上游的游戏笔记本(Dell inspiron 7557)。电脑本身性能不算很高,散热也比较一般。

后来本科做实验需要用到 Linux 系统,这时候不得不在小得可怜的 128GB 固态硬盘上划出一部分空间做双系统。后来也装过 VMware Workstation 的虚拟机以及 VirtualBox 虚拟机,但此类方案因为虚拟机图形界面卡顿问题,被我早早放弃了。放弃的同时,我对 VMware 公司也失去了兴趣,以为这家公司就是做垃圾软件的(天大之误!)。等我受够了一台电脑装多个系统的不方便之后,我花了点钱配置了一个老掉牙的 LGA1156 二奶机,专门用来跑 Linux.

这里必须提一句,当时 VMware 的虚拟机也是可以令人接受的,只是当时主流的 intel Core i5 还是双核四线程处理器,能分给虚拟机的性能实在是捉襟见肘。

再到后来,我终于买了 UNIX 内核的 MacBook Pro,所以双系统、虚拟 Linux 等操作终于不再是困扰我的问题了。

等我读了研究生,环境悄然发生了改变。实验室里有庞大的服务器,运行着一种名为 ESXi 的操作系统。

这个系统我曾有所耳闻,但是从未使用过。在 YouTube 上看了若干大佬的讲解,我才知道这个系统是专门用来做虚拟化的,它直接安装在物理机上,然后再在 ESXi 上安装各种虚拟机。ESXi 相当于是虚拟机与物理机之间的一个“中间件”,也就是术语里面的 Hypervisor,中译名“管理程序”。

3. 源起 OpenWRT 软路由·

说来也是讽刺,虚拟化本是高效利用已有的庞大算力的一种手段,在中国竟因特殊的网络环境而变成了一种玩 OpenWRT 的工具。所以这里有必要说一下,对虚拟化支持得比较良好的平台,一般都是服务器产品。这类服务器产品经过 vSphere 的专业认证,在拥有庞大计算力的同时,其硬件与 ESXi 系统的兼容性也特别好,所以在虚拟化之后不会遇到问题。但是,用来玩 OpenWRT 的宿主机多是一些工控机,或者专门为玩软路由而打造的小型工控设备,它们与 ESXi 的兼容程度还算可以,但是 ESXi 所支持的一些高级特性,比如 SR-IOV 等基本上是无缘的。

尽管 YouTube 上这些玩工控机、软路由的玩家的目的与 vSphere 的目的有点背离,但是这丝毫不影响这些玩家们展示 vSphere 的能力。

为了下文好解释,这里先说明一下几个 VMware 的术语的内涵。从现在开始,我们要逐步熟悉 VMware 那套略微有点晦涩的术语系统了。

图 1:VMware 的 vSphere Enterprise 版本总共有这么多子产品,vSphere 的 Essential 和 Stanard 版本基本属于这个企业版的阉割(不过现在的 7.0 版本貌似没有这种区别了,Essential 和 Enterprise 的 ESXi 是一样的)。

3.1 vSphere·

VMware 家的产品一般以字母 v 开头,然后接上一个正常的英文实词,意思是指这是一个虚拟化产品。英文实词会反映出这个产品的功能。

vSphere 对应的英文实词是 Sphere,这个词的意思有三个,分别是

  1. 球体
  2. the sphere of sth. 某物的影响范围、活动范围、势力范围
  3. 某种阶层,如社会阶层、圈子等

在这里我认为可以把 vSphere 中的 Sphere 理解为一种闭包,即在这个闭包里,所有的东西都是可以虚拟化的

回到 vSphere 本身,这其实不是一个独立的产品,而是一套产品的总称。这与 Office365 类似,Office365 本身并不是一个软件,而是 PPT\Word\Excel 等软件的集合。所以我们可以把 vSphere 理解为 VMware 这家公司的招牌产品。

3.2 vSphere Hypervisor (ESXi)·

VMware ESXi: The Purpose-Built Bare Metal Hypervisor

大家对于 ESXi 应该是非常熟悉了,这本质上是一个操作系统。

VMware 官方是如此定义的:The Purpose-Built Bare Metal Hypervisor. 这大概就是说,ESXi 是一个专用的裸机管理程序。

在正式介绍 ESXi 之前,先把这句话里的 Hypervisor 讲明白。笔者并没有在柯林斯英汉双解学习词典中找到 Hypervisor 这个单词,所以只能引用一下网络释义。Hypervisor 可以追溯到 1970 年代,当时正值计算机大规模发展的时候,而那时的两位大佬就提出了这个 Hypervisor 这个概念,并对此做了分类。据笔者理解,我们可以把 Hypervisor 理解为一种可以支撑虚拟化的中间件,但是在中文里貌似没有能在语义上与之完全匹配的词汇。维基百科中文版把 Hypervisor 翻译为虚拟机监控器,我个人认为不是很合适。

这里还有必要解释一下 Bare 裸机的意思。上文说到提出 Hypervisor 这个概念的两位大佬也对 Hypervisor 进行了分类。他们将之分为了两个类型:Type-I 和 Type-II. 前者像 ESXi 一样,直接运行在物理裸机上,直接面对硬件;后者像 VMware Workstation Pro,需要安装在某个操作系统上,面对的是用户态的空间,并不能直接接触到硬件。

笼统地看,I 和 II 型 Hypervisor 都可以创建、运行虚拟机,但是 Type-I 是个操作系统,Type-II 是个程序。

如前文所述,笔者大学时代曾用过的 VMware Workstation Pro 等软件是运行在 Windows 或者 Linux 上面的虚拟机程序,都不是裸机 Hypervisor;换言之,他们属于 II 型,而非 I 型。

  • I 型的 Hypervisor 在内核层面进行了专门构建,其使命就是为了创建、运行、管理虚拟机,所以效率更高,而且支持很多 II 型没有的特性。
  • II 型的 Hypervisor 在软件层面进行构建,它没有内核,所以像是硬件直通等功能在 II 型 Hypervisor 上面无法使用,这也正是 VMware Workstation Pro 上面的虚拟机图形化很卡的一个原因(显卡厂商也要背锅)。

最后要特别强调,VMware vSphere Hypervisor (ESXi) 必须运行在一台独立的操作系统上,它要独占一台机器。

3.3 vCenter Server·

vCenter Server: Simplified and Efficient Server Management 简化和高效的服务器管理

Center 的意思想必大家已经非常了解了,那就是中心。

回到问题本身,现在我们有了 ESXi 这个很强大的 Hypervisor,它兼容性很好,消耗的资源很少,调度策略和直通支持都很不错,而且 ESXi 提供了一个 web 端界面,可以在这个 web 上创建、管理虚拟机。

然而我们还面临一个严峻的问题。如果我们一次性购买了 100 台服务器,每台服务器上都安装一个 ESXi 倒是不难,但是如何集中管理这 100 台 ESXi 服务器呢?这是一个很麻烦的事情。

这时候,我们可以让这 100 台服务器的 ESXi 管理网卡都接入网络,然后在另外一台机器 C 上与这 100 台设备通信,以实现我们管理所有服务器的目的。而这个机器 C 其实就是一个中心化的管理软件。

vCenter 是一个软件,可以安装在 Windows Server 上面,也可以安装在 Linux 上面。这儿的 Windows Server / Linux 就是我们上文说的那台机器 C.

vCenter 提供了很多强大的功能,集中管理所有 ESXi 机器和这些机器上的虚拟机只是 vCenter 的一个很基础的功能。据我浅显的尝试,我发现创建虚拟机、删除虚拟机、配置虚拟机、开关虚拟机等常规操作,与原先在 ESXi web 界面操作相比,在 vCenter 里也能做,而且基本一致。

图 2:在 ESXi web 管理页面里可以看到,如果这台 ESXi 设备是孤立的、没有被链接到任何 vCenter Server 管理程序的话,系统会提示你当前的状态,并在某些时候提醒你下载 vCenter.

就笔者的体验而言,一般一台 ESXi 虚拟机是用不着再找台机器装 vCenter 服务的,用 ESXi 界面直接管理就挺方便。但是如果你有一个计算机集群,那么上 vCenter 就变得很有用了,否则你要在数个 ESXi 界面里分别控制每台 ESXi 主机,这无疑是很麻烦的。

总结·

虚拟化的一些知识,老萌新我也是在不断学习,这篇博客将持续更新,敬请期待。

To be continued