过去 5 - 8 年来,我一直与世隔绝,现在才开始熟悉虚拟化、虚拟机和 VMware 或 VirtualBox 等平台。我思考我开始了解它们了,但是由于某种原因,有两个关于虚拟机的概念让我难以理解;一个与它们对企业的内在利益有关,另一个与它们在使用时的实用性有关。
所以我理解你可以在同一台物理机器上运行多个虚拟机,它们都像独立的机器一样做自己的“事情”。假设我想在我的家庭办公室中创建一个不错的小型虚拟服务器网络,这样我就可以在里面为我的所有项目创建一个大沙箱。我设置了 2 台物理机器作为服务器,在每台机器上我运行了 4 台虚拟机(1 台可能是应用服务器,1 台可能是 RDBMS,1 台可能是消息代理,等等)。
除了帮我省钱(因为我只需要提供 2 台物理机,而不用购买 8 台服务器)之外,这些虚拟机还能带来什么内在好处/用途呢?我不在乎虚拟机有多聪明,如果我的电脑只有 8GB 内存,而我上面运行着 4 台虚拟机,那么这些虚拟机只能共享 8GB 内存。在我的服务器上安装 4 台虚拟机并不能让它拥有 4 倍的内存!所以,据我所知,虚拟机可以节省硬件成本,但由于多台机器争夺同一资源池,最终会导致硬件陷入困境。我在这里遗漏了什么?
VM 能否使用 TCP/IP、HTTP、FTP 等高级协议通过网络相互通信?否则,如果您必须向这些 VM 提供单独的独立数据块/请求以供处理,那么实现所有这些 VM 就没有意义了。
答案1
(1) 除了帮我省钱(因为我只需要提供 2 台物理机器,而不必购买 8 台服务器)之外,这些虚拟机还能带来什么内在好处/目的?
是的,它们确实共享资源。虚拟机通常在启动时分配特定数量的内存。因此,可以将 8GB 内存以 2GB 的块形式分配给 3 台机器。(剩下最后 2GB 内存,以便主机操作系统可以使用。)
其他好处包括保存状态。许多(如果不是全部)VMM 都允许您克隆虚拟机,即使在“运行”时也是如此。因此,您可以在启动后立即克隆状态,如果崩溃,您可以恢复它,而不是从崩溃的系统启动。在某些情况下,这也可以用于节省启动时间,因为虚拟机可以恢复到运行状态。
另一个优点是能够在物理机之间交换正在运行的虚拟机,即使主机系统由于某种原因需要离线,也能实现 100% 的正常运行时间。
(2)虚拟机是否可以通过使用高级协议(如 TCP/IP、HTTP、FTP 等)通过网络相互通信?
这取决于您使用的 VMM 及其网络仿真的具体实现。但一般来说,是的。虚拟盒例如支持多种方式模拟网卡,包括直通或 NAT。
答案2
VM 的一个好处是能够在最新硬件上运行旧版操作系统。较旧的操作系统(或较旧的版本)可能没有适用于当前硬件的驱动程序。虚拟化为客户操作系统提供了客户支持的虚拟化 NIC、磁盘控制器等,而不管实际硬件是什么。
另一个是能够独立于现场测试新的操作系统或应用程序版本,而无需购买太多的暂存和部署硬件。
许多其他好处归结为灵活性。虚拟硬件可以随意调整大小以适应特定任务,同时保留与其他应用程序的隔离,而这之前是通过单独的硬件实现的 - 如果您的 Web 数据库服务器崩溃,也不会影响您的会计系统。
我所知道的所有 VM 系统都支持托管操作系统中的网络,有几种模式,但例如,可以为客户机分配与主机相同范围内的单独 IP 地址,并且看起来与单独的物理计算机没有什么不同。