![启动另一个操作系统与另一个系统并行运行](https://linux22.com/image/228026/%E5%90%AF%E5%8A%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E4%B8%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%B3%BB%E7%BB%9F%E5%B9%B6%E8%A1%8C%E8%BF%90%E8%A1%8C.png)
因此,在工作中,我们有一些系统在自己的硬件上运行,这些硬件与所有系统都相同。如果其中一个硬件发生故障,正在运行的系统之一将接管并启动发生故障的系统,完成两者的工作。所有基于 Linux 和 Intel cpu。
如何让一个操作系统启动另一个操作系统一起运行?它不仅仅是运行一个程序,它还运行整个程序。
我听说过一些事情,比如如何让 Windows 让另一个操作系统使用 cpu 上的一个核心进行并行计算。但我很好奇一个系统如何立即接管另一个系统。这太酷了,不幸的是我的同事也不明白它是如何完成的。
答案1
如何让一个操作系统启动另一个操作系统一起运行?它不仅仅是运行一个程序,它还运行整个程序。
你所描述的东西叫做虚拟机。过去 15 年的 X86 处理器已经过大幅优化,可以在几乎不降低性能的情况下运行此类虚拟化系统,因此在任何数据中心中,您管理的计算机都默认启动您的操作系统,但实际上并不是您的硬件,但只是你的虚拟机。
所以,这都是非常成熟的技术!
虚拟化功能是 Linux 内核的一部分(查看 kvm 是什么),对于实际运行的虚拟机,有许多前端可以做到这一点。存在哲学上的差异,以及您可能需要或可能不需要的解决方案的大小 - 从在手动声明的 Qemu 中运行的 KVM 支持的 VM,使用 libvirt/virsh/virtmmager 使用更可编程的方式运行此类 VM,到不考虑您的具有常规主 Linux 的机器,但所有工作始终在 VM 中完成(更像 Xen 的工作方式),管理充满服务器的机架,这些服务器除了运行多个 VM 外什么也不做,这些 VM 可以在运行时在计算机之间转移(您通常可以在其中找到 proxmox 和 VMware 的 ESXI 之类的东西。
实际上没有一种尺寸适合所有人,或者取决于您的需要:
如果其中一个硬件发生故障,正在运行的系统之一将接管
这简单的一部分是在多台机器上运行虚拟机,作为随时可用的储备。更困难的部分,以及取决于这些机器实际在应用方面做什么的部分,是弄清楚所谓的故障转移这些都会发生。
对于静态文件 http 服务器之类的东西,这可能很简单,只需自动更改反向代理中的条目,或将故障系统的 IP 地址分配给备份系统即可。
对于更复杂的情况,事务可能会更改数据库中的数据,您可能需要连续复制活动服务器所做的所有数据库更改,以便在出现问题时做好准备。
对于其他事物,例如冗余存储集群访问服务器,您实际上可能需要实际的专用硬件(例如可以同时从两台不同计算机访问的硬盘驱动器控制器)。这在很大程度上是个例外。
一般来说,为了能够注意到何时发生故障,您需要一种机制来知道这一点 - 这又因应用程序空间而异。
因此,看到在您的工作场所发生的情况:如果您想知道您的系统具体是如何工作的,请询问设置系统的 IT 人员。