今天,我去参加了一次面试,面试官告诉我,接下来的几个月里,我将负责 Linux 服务器虚拟化。由于我使用 Virtualbox,所以我大概知道虚拟化是什么意思,但我不太清楚它与服务器有什么关系,也不太清楚它在典型的工作场景中是如何使用的。能否就此简单解释一下?请尽量讲得专业一点。
谢谢!
答案1
什么是虚拟化
简而言之,虚拟化就是创建一些虚拟的东西(而非物理或实际的东西),例如操作系统、存储设备、服务器甚至网络设备(例如交换机)。
由于您专门询问有关Linux虚拟化的问题,我假设您引用的是服务器和桌面:
服务器虚拟化是向服务器用户掩盖服务器资源(包括各个物理服务器、处理器和操作系统的数量和身份)。
桌面虚拟化即对桌面用户隐藏桌面资源(包括各个物理桌面机器、处理器和操作系统的数量和身份)。
每个目的都是让用户免于了解和管理服务器/桌面资源的复杂细节,同时提高资源共享和利用率并保持以后扩展的能力。
虚拟化方法(Linux)
虚拟化系统有很多不同的方法,每种方法都有各自的优点和缺点。
半虚拟化:
简而言之,为了更高效地运行,客户操作系统的内核被替换为在虚拟化环境中表现良好的内核。
Xen、lguest 和用户模式 Linux 在 x86 上进行半虚拟化。
硬件虚拟化
Intel VT 和 AMD-V CPU 能够在非特权虚拟机中运行所有指令,并使其运行良好。大多数时候,大部分资源都是模拟的(例如时钟),但是,它允许更清晰地实现完全虚拟化。
Xen 和 KVM 实现硬件辅助完全虚拟化。
操作系统级虚拟化-(容器)
容器根本不运行虚拟机,而只是将多个用户空间环境彼此隔离,而所有内容都在一个内核下运行。(许多系统管理员喜欢这一点的一个主要原因是,他们只需要修补或维护 1 个内核,而不是多个内核。)容器系统往往具有低开销和高密度,但不同容器之间的隔离性也较低。这当然是有代价的 - 因为容器系统只允许运行 1 个内核 - 但是它们确实同时支持不同容器中的各种 Linux 发行版。有许多不同的容器系统 - 例如 Solaris Zones、Linux-VServer 和 OpenVZ/Virtuozzo。OpenVZ 在不同的容器之间具有相对完整的资源隔离,其他两个的控制稍差一些。FreeBSD Jails 可以看作是容器的前身 - 但是 Jails 当然使 BSD 不是 Linux。
希望这有助于您简单了解 Linux 虚拟化。
我建议你看一下 Proxmox 项目http://www.proxmox.com/products/proxmox-ve 它是开源的 - 并且允许您在同一系统上同时测试 KVM 和基于容器的虚拟化。
请务必对本文进行评论并投票。
答案2
格伦向您提供了虚拟化的技术描述,但没有提供太多有关虚拟化的好处的信息。
IME,主要有以下几点:
- 可用性 - 因为它是虚拟机,所以所有配置(通常是大部分配置)都独立于底层硬件。因此,如果发生硬件故障,可以简单地在其他地方启动映像。这对于业务连续性规划尤其重要。
- 容量管理 - 例如,你不需要专门的服务器来运行应用程序,该应用程序每个月只用于工资单 2 天 - 它可以与内部网服务器放在同一个物理机箱上
- 开发 - 您可以离线构建服务器、应用补丁、在替换现有服务器之前进行测试,而无需拥有相同配置的备用物理机
- 硬件整合 - 从总体拥有成本 (TCO) 来看,大型服务器可能比小型服务器便宜(尤其是在电力成本不断上涨的情况下) - 但出于上述原因,使用虚拟机可以使应用程序的管理更加灵活
- 支持 - 继续开发主题,当您可以访问导致问题的系统时,调查中断、性能和功能问题会容易得多 - 能够在精确的副本上工作的好处是您不需要让实时系统脱机。