虚拟环境中物理机发生故障时会发生什么?

我正在开始虚拟化,所以请耐心等待。

在虚拟环境中,应用程序在虚拟机pipe理程序的层中运行 因此,一台物理机器上可能有许多运行多个应用程序的虚拟机。

到现在为止还挺好?

那么当物理机器发生故障时会发生什么? 这不会使许多应用程序在单个机器上都失败吗?

我正在寻找使用OpenStack开发私有,但我首先要充分理解虚拟化。

具体情况取决于您使用的确切的虚拟化解决scheme,但想法是您拥有一个虚拟场,其中有许多物理主机,每个虚拟机都有多个虚拟机。 然后,您可以通过不需要每台虚拟机的物理主机而获得一些效率,这样在物理机器出现故障的情况下,就可以有足够的开销。

另外,您可以在一个公用(冗余)SAN上find每个虚拟机的VHD。 每个物理主机上的虚拟机pipe理程序可以设置为相互通信,并从不同的虚拟机共享内存。 存在一些延迟,大部分内存将由磁盘支持,但是如果其中一台物理主机停机,您甚至不会等待该主机上的VM启动。 相反,这些虚拟机将自动分配到剩余的主机中。 最终的目标是,这些机器几乎从停止的地方起,几乎不停机。 从某种意义上说,所有的虚拟机至less已经运行在两台物理主机上。 实际上,现在pipe理程序只能一次完成一台机器的这种迁移,当他们知道这是在主机出现故障之前发生的时候……但不要错:即时迁移硬件故障是所有主要虚拟机pipe理程序。

这就是为什么有时您会看到服务器虚拟化到服务器场中的单个物理主机。 您可能无法获得任何硬件效率(甚至可能会失去一些性能),但是您在pipe理一致性和内置高可用性方面已经弥补了这一点。

如果主机出现任何故障,所有运行在物理主机上的虚拟服务器都将脱机。

也就是说,大多数平台为单个VM提供高可用性解决scheme。 其他时候,系统由多个节点构build,以防止一个节点发生故障时的服务中断。

如果两个虚拟机节点构成高可用性服务,则可以configuration超级虚拟机以确保两个节点不依赖于相同的物理基础设施(容错)。 这可能不仅仅是物理服务器容错,包括不同的networkingpath,一路到达地理上不同的位置。

假设如果物理机器也发生故障,虚拟机不可用,那么你是正确的。

但是OpenStack可以解决这个问题,并在其他服务器上启动发生故障的物理服务器的虚拟机,或者您可以使用已经分发的虚拟机pipe理程序系统,我认为vSphere可以做到这一点。

您应该阅读HA上的OpenStack文档以获取更多信息。

关于您的问题 – 是的,您将无法访问此物理主机中的所有机器。 当然,这取决于哪个组件失败。 如果是磁盘 – 这是一个问题,如果它的主板 – 这是更容易。 一般来说,硬件恢复更容易,因为pipe理程序是硬件不可知的。 在这个时候,有很多供应商特定的技术可以用来提供高度可用的服务。

资源池 (vmware) – 不能像上面提到的那样聚合多个物理主机资源(cpu,内存等),所以如果你有2个物理主机(比如1CPU没有超线程的四核 – 每个8GBRAM),它不会是那里可能有5vCPU-12Gb虚拟机。 资源池是合乎逻辑的,它们不能创build超级计算系统。 现在,这是一种控制资源利用的方法。

可用性 (vmware) – 可以使用高可用性 (HA)这样的技术,如果您使用的是存储arrays(NAS),则可以自动在集群中自动恢复(基于我在1-2分钟内的经验) iSCSI,FC),并保留所有虚拟机文件。 如果CPU,RAM,主板出现故障,HA的工作情况就会变得更糟糕,这显然会导致Storagearrays发生故障。 为防止RAID /控制器故障,人们使用复制,存储LUN镜像等。

如果在1-2分钟内恢复不是一个选项,那么有容错技术(FT),允许通过保持已configuration虚拟机的阴影(运行)副本来实现虚拟机在零故障的情况下的停机时间。 但是这个技术也有很多的限制,容错多虚拟机的虚拟机问题还没有完全解决。

总的来说,每个解决scheme取决于你的目标