是否可以将两台计算机集群在一起并在它们之间运行一个操作系统?我听说过 Beowulf 等,但除了计算能力之外,我是否可以将 PCI 设备(特别是图形加速)存储、网卡、USB 和内存等东西集群起来?我预计并非所有这些都是可能的,但其中哪些是可能的,以及我应该在哪里开始实施它们(我不是在寻求完整的指南或任何荒谬的东西,只是朝着正确的方向迈出了一步)
我正在使用 Linux,以防万一还不清楚。我怀疑我运行的具体系统并不重要,但我目前使用的是 Ubuntu 17.10
编辑:只是为了澄清一些事情,我并不反对我所有的集群计算机都运行完整的 Linux 系统(比如 Ubuntu Server,而不是完整的桌面,但我认为这是很清楚的),并且将集群放在用户空间中
答案1
问题在一段时间内没有得到解答,而答案很简单 - 这是可能的(当然),但由于同步挑战而不切实际。单处理器系统可以扩展到 SMP 系统。下一步是 NUMA(或目前占主导地位的 ccNUMA),这将结束单个操作系统映像的当前选项。
出于学术目的:您需要解决的第一个问题是在计算机之间创建低延迟连接并找出同步机制。考虑一下您想在附加硬件中实现多少。然后考虑您需要共享哪些资源以及如何仲裁。接下来考虑如何安排进程运行。如何为它们分配内存(局部性)。考虑一下 DMA(您想要共享 PCI 资源)您希望它如何工作。
请注意,在您弄清楚一切并以最佳方式优化一切之后,您将获得爬行速度操作系统。
我认为我们都应该因为愚蠢的问题和蹩脚的回答尝试而被贬低:-)
答案2
不确定如何在两台电脑上运行一个操作系统,但您可能能够远程运行应用程序,给人一种在电脑之间共享一个操作系统的印象。
假设您的笔记本电脑性能较弱,而台式机性能较强,并且台式机上装有 blender - 3d 软件。您应该能够从笔记本电脑远程访问 blender,并在单独的窗口中运行它,就像运行笔记本电脑上安装的任何应用程序一样。
如果你正确设置了 ssh,那么你可以使用它。为了启动这种会话,我认为你需要执行以下操作:
ssh -X me@myDesktopAddress
然后运行应用程序。假设:
blender
这就是远程访问 PC 的概念。您可以在 Google 上搜索类似 ssh gui 的内容,这是来自 stack overflow 的链接https://askubuntu.com/questions/886313/what-is-the-simplest-way-to-have-remote-gui-access-to-ubuntu-16-04-server-from
您也可以使用应用程序 X2Go 执行此操作。我只尝试过通过 vpn 执行此操作,虽然体验不是最佳,但确实有效。您可以通过网络连接两台电脑,或者以某种方式直接连接以获得更好的体验。我不确定如何直接连接电脑,或者是否比您的局域网连接更有效,但这可能可以直接使用网络/wifi 卡来完成(我知道我可以将笔记本电脑连接到手机以共享手机的互联网),或者您可以使用 usb 3.x 连接它们并设置某种隧道(我也知道可以选择使用 usb 将您的电脑连接到手机,然后共享互联网连接)。这种直接连接可能会提高速度。
再次强调,这个概念不是在两台电脑上运行相同的操作系统,因此没有中央资源管理。但您仍然可以获得比仅使用一台电脑更多的功能,并且用户界面体验将接近在一台机器上使用一个操作系统的体验。
答案3
是的,这是可能的。目前有几种这样的解决方案,但开源解决方案大多已被弃用且无人维护。以下是一些比较值得注意的例子:
专有:Mosix:https://en.m.wikipedia.org/wiki/MOSIX
开源:OpenMosix:https://en.m.wikipedia.org/wiki/OpenMosix 克里吉德:https://en.m.wikipedia.org/wiki/Kerrighed OpenSSI:https://en.m.wikipedia.org/wiki/OpenSSI
开发逐渐远离这种技术的真正原因是,随着 CPU 开始拥有越来越多的核心,服务器开始拥有越来越多的插槽,这种技术变得越来越不重要。这种集群在 90 年代末之前是有意义的,当时 CPU 只有一个核心,而拥有多个插槽的服务器非常奇特且昂贵。在如今可以轻松且经济地获得具有 64 个核心的 CPU 和具有两个这样的插槽的服务器(能够驱动数 TB 的 RAM)的时代,这种技术有多大用处值得怀疑。作为一种研究玩具,它很有趣,但如今实际用途有限。