虚拟机(VM)是一个模拟版的物理计算机,它在虚拟环境中模拟各种功能并分配资源。
简言之,你可以在你当前的操作系统中运行另一个操作系统,就像运行媒体播放器或网络浏览器一样。
在 Manjaro Linux 里 VirtualBox 中运行 Windows 10
你可以在 VM 中执行与裸机(例如你的笔记本电脑或个人电脑)相同的操作,例如连接到网络、下载软件、更新操作系统等等。
当然,根据使用场景,VM 的体验可能会与实体计算机有所不同。
让我们来探索虚拟机,它们的应用场景,以及它们的工作原理。
虚拟机:起源
虚拟机是最重要的基于软件的创新之一。它的起源可以追溯到 1966 年的 IBM CP-40 和 CP-67 虚拟机操作系统,那时候人们在研究和测试虚拟内存和资源的概念。
快进到我们发表此文的 2023 年,虚拟机已经无处不在,涵盖从个人电脑,到大型企业,再到小型企业。每个人以某种或其他方式都在使用虚拟机。
考虑到所有这些,显然,虚拟机非常有用。但是,它是如何工作的,我们具体用它来做什么?
💡
- 裸机 = 实体的物理电脑,例如你的 PC 或笔记本电脑
- 宿主操作系统 = 安装在你实体电脑上的操作系统
- 客户操作系统 = 在虚拟机内运行的操作系统
- 虚拟机(VM)= 是虚拟化应用的通用术语
虚拟机如何运作
理解虚拟化的概念会有助于你弄清楚虚拟机是如何运作的。
回顾我们在一篇文章中的描述:
“虚拟化为你提供了计算机硬件的抽象概念,以便你创建虚拟机(VM)、网络、存储等。”
虚拟化允许用户在虚拟环境中利用物理系统的资源。这使得一个进程可以单独地使用资源,而不会影响物理计算机。
而虚拟机就是运用这一能力的过程,在此你会得到以虚拟磁盘、内存,及其他配置文件形式的虚拟资源,让你能在其上运行操作系统。
你或许已经熟悉一些能帮助你创建这些虚拟机的 专为 Linux 的虚拟化软件。
为了详细展示虚拟机和物理计算机之间的技术差异,这里提供一张图帮助你理解:
我们为什么需要使用虚拟机?
虚拟机已经成为一种多功能的概念,对于几乎每一个小任务都十分实用,这也是你应该 在虚拟机中运行 Linux 的其中一个理由。
不仅对个人用户有帮助,虚拟机在云计算的领域中也起着重要的作用,而云计算是构成互联网必不可少的一部分。
下面是虚拟机能够帮助你完成的一些任务:
- 软件测试
- 操作系统测试
- 为临时的网络浏览会话增强你的在线隐私
- 在不影响物理计算机的情况下进行网络安全研究
- 利用虚拟机作为服务器,使同一硬件上可以托管更多的虚拟机,(从而让硬件资源使用更加高效)
- 各种开发活动,拥有了更强大的迁移、复制等功能
- 利用虚拟机在云中复制系统
因此,虚拟机的隔离能力使我们能采用它进行测试和开发,也使其成为服务器可扩展性和灵活性的核心。
建议阅读 📖
无论你是学生、专业人员,还是企业,你都会发现虚拟机在某个时间点会发挥出重要的作用。
虚拟机消耗系统资源吗?
当你创建一个虚拟机在其中运行另一个操作系统时,你会为它分配一些系统资源,主要包括:
- 处理器:只有当在虚拟机中运行操作系统时才消耗
- 内存:只有当在虚拟机中运行操作系统时才消耗
- 磁盘空间:创建虚拟机时预留,无论虚拟机是否运行,都会占据一定的空间。
有些人认为处理器和内存会一直被虚拟机占用,这并不正确。它们只在虚拟机运行操作系统时才会被使用。
然而,无论虚拟机是否在运行,磁盘空间始终会被占用。
使一切成为可能的虚拟化类型
如果你对能够帮助创建虚拟机的虚拟化概念感兴趣,那么我将列举并简要解释所有的不同类型。
管理程序Hypervisor 管理着硬件,并将系统资源从虚拟环境中隔离出来。它在技术上被标记为 “虚拟机监视器Virtual Machine Monitor(VMM)”。
而管理程序就是那个能让我们创建和运行虚拟机的软件。
管理程序有两种类型:
- 一级管理程序 :它直接连接到物理机,用于管理虚拟机的资源。一个很好的例子就是 KVM,它直接集成在 Linux 系统里。
- 二级管理程序 :它存在于操作系统上,在操作系统上运行,让你能够管理虚拟机资源等等。例如 VirtualBox。
虽然管理程序使虚拟化成为可能,但是各种虚拟化类型则能使你在使用虚拟机时带来更多便利和功能。
一些相关的类型包括:
- 存储虚拟化 :这能通过将可用的磁盘空间划分为小块,以被虚拟机使用,从而创建虚拟磁盘。
- 网络虚拟化 :允许物理网络连接通过虚拟网络(或者适配器)路由到虚拟机。
- 桌面虚拟化 :通过该方式,你可以同时向多台物理设备部署多个虚拟桌面环境。可以从一个中心点配置和管理所有虚拟桌面。
为了深入了解所有的技术细节,我建议你查阅 AWS 关于虚拟化的文档。
虚拟机的优势
虽然你已经通过其使用案例了解到了一些虚拟机带给你的好处,但是我还是想再补充一些你需要知道的要点:
- 虚拟机能够让你充分地利用硬件资源,而不影响宿主机
- 有了虚拟机,你可以自由地进行测试或者做任何你想做的事情。无论是一个极老的应用,或是一个有风险的软件,你都可以完全依赖虚拟机来完成一切,并且不会对你宿主机产生影响
- 你可以在一个地方运行多个操作系统,而不需要面对双启动或增加额外的物理驱动器来使用其它操作系统的麻烦。这样可以帮你节省成本,时间,同时避免管理的困扰
- 有了虚拟机,你可以在不需增加任何硬件的情况下快速地克隆你的配置。
虚拟机的劣势
虽然虚拟机在许多场景中都非常有帮助,但是它也有可能带来什么不利影响吗?
嗯,实际上,使用虚拟机并没有直接的缺点,但是你仍然需要对一些虚拟机可能带来的影响持谨慎态度:
- 尽管虚拟机被认为能够有效地利用资源,但是如果你不监控它们或者粗心大意地运行多个虚拟机,它们还是有可能会耗尽系统的资源
- 虚拟机永远无法替代裸机的体验和性能。无论宿主机有多么强大,虚拟机的运行速度总是比你在物理计算机上预期的要慢
- 虚拟机虽然与宿主机隔离,但你必须要注意文件共享可能会将恶意软件暴露给你的宿主机系统
虚拟机的利用广泛
虚拟机的概念让许多事情变得可能。
如果没有虚拟机,你认为云计算行业会如何发展?如果每次尝试不同的操作系统都需要重新安装,这将带来多大的不方便?
无论是哪种形式,每个电脑用户或服务器用户都需要虚拟机。你对虚拟机有什么看法呢?你会如何定义它?