创建要在主机上运行的虚拟机的过程称为虚拟化。主机的硬件运行主机操作系统。虚拟化软件在主机操作系统内运行,并为每个来宾分配资源。每个来宾都有自己的操作系统以及运行所需应用程序所需的一组库和二进制文件。来宾操作系统的行为就像一台配备了处理能力、内存、存储空间和其他分配给其的计算资源的物理计算机。
有两种类型的虚拟机:进程虚拟机和系统虚拟机。它们之间的主要区别在于其规模和预期用例。
什么是进程虚拟机?
进程虚拟机是一种专用虚拟机,旨在允许单个进程在主机上作为应用程序运行。Java 虚拟机就是一个常见示例。用 Java 编写的应用程序独立于平台,可以在支持 Java VM 的任何硬件和操作系统上运行。开发人员不必担心硬件和操作系统的兼容性,他们只需为 Java VM 编写代码,从而解决任何特定于主机的问题,并使 Java 代码能够在任何支持的操作系统上运行,就像它是为该操作系统原生编写的一样。
什么是系统虚拟机?
系统虚拟机是一种更大规模的虚拟化形式。系统虚拟机是物理机的完整副本。可以在功能强大的主机上运行多个虚拟机,每个来宾都运行自己的操作系统。为此,主机必须运行虚拟机管理程序。
一些虚拟机管理程序软件在主机操作系统上运行。这些虚拟机管理程序称为第 2 类管理程序,以牺牲一些延迟和额外资源消耗为代价提供便利性和可用性。其他解决方案可以直接在主机硬件或“裸机”上运行。这种虚拟机管理程序称为第 1 类虚拟机管理程序。由于第 1 类虚拟机管理程序直接在主机硬件上运行,因此它们是一种低延迟、高性能的解决方案,在必须高效利用资源的企业环境中很受欢迎。
虚拟机管理程序允许每台计算机独立运行,并且会动态分配内存、网络吞吐量、存储和处理器资源,同时将来宾虚拟机彼此隔离以防止安全问题。
虚拟机管理程序可以根据需要轻松启动新的虚拟机并有效利用主机硬件。为特定虚拟机管理程序(如 VMware ESXi 或 Oracle VM VirtualBox)创建的虚拟机映像具有高度可移植性,因为它们可以部署到支持虚拟机管理程序软件并且具有充足的可用系统资源的任何硬件上。这种可移植性结合着复制软件的强大功能,使虚拟化成为任何业务连续性计划的重要组成部分。Veeam Backup and Replication 可用于管理内部和云托管的虚拟机,保护贵组织的数据并帮助您在发生中断或硬件故障时快速恢复正常。
虚拟机有许多用例,包括:
虚拟机有几个关键优势。它们使在一台设备上运行多个操作系统环境成为可能。这使得它们成为启动多台服务器、测试基于各种不同操作系统配置的应用程序构建或运行传统应用程序的一种低成本且高效的方式。例如,一家企业依赖为版本非常旧的 Windows 所编写的客户帐户系统,那么该企业可以提供包含该应用程序的虚拟机,而不必使用专用的旧硬件来运行该软件。
虚拟机管理程序为每个来宾提供了一个沙盒环境。这使得 VM 在安全性方面非常有用,因为来宾无法直接访问彼此的文件系统或内存。如果病毒感染了虚拟机,则任何损害都应受到抑制。如果虚拟机由于程序错误而崩溃,主机和其他虚拟机应该不受影响。
虚拟机的另一个有用的功能是易于备份、移动和恢复。创建虚拟机备份只需备份配置文件和磁盘映像即可。在灾难恢复场景中,将这些文件还原到新主机并重新打开虚拟机,可帮助组织更轻松地恢复正常运行。由于虚拟机独立于硬件,因此可将备份还原到具有足够资源运行该来宾的任何服务器。
然而,虚拟机的沙盒化、高度可移植性确实是有代价的。每个来宾虚拟机都运行一个完整的操作系统副本。如果服务器功能不够强大,在一台物理服务器上运行多个虚拟机可能会导致稳定性问题。根据虚拟机的预期用途,可能会有一种更有效的方式来实现您的目标,例如容器。
容器是虚拟化技术的一种形式,它与虚拟机有许多相似之处,但用途略有不同。虚拟机模拟整个计算机,包括操作系统和硬件层,而容器仅虚拟化操作系统上运行的软件层。IEEE 将容器 描述为虚拟机的轻量级替代方案 。
虽然虚拟机在可直接在硬件上也可在操作系统内运行的虚拟机管理程序上运行,但是容器在容器引擎中运行。每个容器都有运行其所包含的软件所需的任何二进制文件和库的副本,但容器不需要自己的操作系统副本。容器共享运行它们的硬件,尽管它们对文件系统的访问将受到限制。
流行的容器管理软件包括 Docker、Google Kubernetes Engine、LXC 和 Portainer。容器通常用于云计算平台,作为快速部署运行脚本或微服务所需的所有内容的一种方式。
容器的一些优点包括:
容器的缺点是:
容器安全问题是一个复杂的问题,正确配置的容器可提供强大的安全性。容器中的应用程序彼此隔离,这使得它们比直接在主机上运行单个应用程序更安全。此外,与全面的虚拟机相比,每个容器的攻击面更小。某些容器是无状态的,因此每次启动它们时,容器都是具有相同配置的“全新状态”。无状态容器对于某些类型的微服务器很有用,在某些情况下,缺乏持久性存储可以被视为一种安全特性。
但是,无状态容器不太适合运行更复杂的服务,或者在从中断中恢复时能够保留应用程序状态的服务。此外,容器共享一个操作系统,因此,如果一个容器遭到入侵,攻击者就有机会入侵在同一台计算机上运行的其他容器。对于虚拟机,如果一个虚拟机遭到入侵,则攻击者无法利用该访问权限来破坏同一主机上的其他虚拟机。
何时选择容器还是虚拟机
一般来说,如果您需要在一台机器上运行多个操作系统,或者需要能够拍摄不同状态的机器快照以进行备份,那么使用虚拟机是个好主意。拥有可随时部署的虚拟机有助于轻松扩展操作系统,从灾难恢复的角度来看,这是有益的。
容器可用于部署较小的微服务,或作为 DevOps 管道的一部分。在《今日 EPR》的一篇文章中,Daniel Riedel 将哲学上的差异解释为“宠物与牛”。容器是牛,被视为商品并按需启动,而单体服务更有可能在虚拟机中运行,并像宠物一样得到精心照料。
一些流行的虚拟机软件包括:
虚拟机的设置过程因所使用的虚拟化软件而异。VMware 和 Oracle VM VirtualBox 等工具提供引导式设置,可帮助用户通过图形用户界面(GUI)配置硬件并安装虚拟机操作系统。作为基于云的解决方案,Azure 的一系列专用虚拟机和 Spot 虚拟机还提供了相对简单的设置选项。
通过命令行配置 Linux KVM 需要更深入地了解网络和机器硬件。Kimchi 和 Proxmox 等工具可帮助系统管理员更轻松地在单个主机上管理多个虚拟机的部署。
配置虚拟机时的一些重要注意事项包括:
如果您已经配置了物理机,使虚拟机是自己想要的虚拟机,则可以使用所谓的物理到虚拟 (P2V) 转换,将该虚拟机硬盘的副本创建为 Hyper-V 虚拟机磁盘。在您复制了驱动器后,就可以将其加载到配置了相同类型硬件虚拟化的虚拟机中,并按需启动。然后,您可以运行 Veeam 虚拟备份来保护虚拟机的数据。
一旦设置好了虚拟机,它就可以在主机操作系统内运行,就像它是另一个应用程序一样。然后,如果服务器以无头模式运行,则可以通过主机的键盘和鼠标或通过 SSH/远程 KVM 控制虚拟机。
如要详细了解 Veeam 虚拟机备份解决方案以及我们可如何帮助您保护数据,不妨亲自试用一下 Veeam Backup and Replication?立即下载免费试用版。