Ein Betriebssystem auf zwei Computern?

557
atoms118

Ist es möglich, zwei Computer in einem Cluster zusammenzufassen und ein Betriebssystem zwischen ihnen auszuführen? Ich habe von Beowulf & Co. gehört, aber kann ich neben der reinen Rechenleistung auch Cluster, PCI-Geräte (insbesondere Grafikbeschleunigung), Speicher, Netzwerkkarten, USB und Speicher in einem Cluster zusammenfassen? Ich gehe davon aus, dass dies nicht alles möglich ist, aber welche davon sind und wo würde ich anfangen, sie umzusetzen (ich frage nicht nach einer vollständigen Anleitung oder etwas Lächerlichem, nur einen Schritt in die richtige Richtung).

Ich verwende Linux, nur falls das noch nicht klar ist. Ich bezweifle, dass das spezifische System, das ich betreibe, so sehr von Bedeutung ist, aber ich verwende derzeit Ubuntu 17.10

EDIT: Nur um einige Dinge klar zu stellen: Ich bin nicht dagegen, dass alle Cluster-Computer ein vollständiges Linux-System ausführen (wie Ubuntu Server, kein vollständiger Desktop, aber ich denke, dass vieles klar ist) und dass sich das Cluster im Benutzerbereich befindet

2
Sicher kannst du, wenn du genug Zeit hast. Beachten Sie jedoch Folgendes: Latenz, Bandbreite. Das ist nicht praktisch. Daniel B vor 6 Jahren 2
Sie machen einen fairen Punkt, es ist überhaupt nicht praktisch. Angenommen, ich wollte trotzdem weitermachen, wo würde ich anfangen? atoms118 vor 6 Jahren 0
Wenn Sie alle Peripheriegeräte in einem Cluster zusammenfassen, erhalten Sie einfach ein Multi-CPU-System. Es wird billiger und einfacher sein und es wird ohne weiteren Aufwand funktionieren. Ignacio Vazquez-Abrams vor 6 Jahren 1
[Plan 9] (https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs) hatte Dinge wie CPU-Server, daher könnte man argumentieren, es sei "ein Betriebssystem auf mehreren Computern". Ich glaube nicht, dass Sie dies mit Linux auf sinnvolle Weise tun können. dirkt vor 6 Jahren 0
@ IgnacioVazquez-Abrams, ich habe vergessen zu erwähnen, dass ich dies mit ein paar alten Laptops mache, die ich herumliegen habe: D, das hätte ich in der Frage klarstellen sollen. Wenn ich das Geld hätte, würde ich einfach einen besseren Computer kaufen. Abgesehen davon ist dies mehr für die Tritte als wirklich praktisch. atoms118 vor 6 Jahren 0
Es ist möglich, * bestimmte * Aufgaben auf einen anderen Rechner zu verlagern sowie Geräte mit NBD und ähnlichen Technologien verfügbar zu machen. Es gibt jedoch keine einheitliche Schnittstelle, die beide Rechner als Einheit behandelt. Ignacio Vazquez-Abrams vor 6 Jahren 0
Außerdem [daaaaaamn ...] (https://www.supermicro.com/products/motherboard/Xeon/C600/X10QRH_.cfm) Ignacio Vazquez-Abrams vor 6 Jahren 1
@ IgnacioVazquez-Abrams, ich forsche an dieser Stelle auch selbst, aber ist es möglich, xNBD zu verwenden, um PCI-Geräte und nicht nur Speichergeräte gemeinsam zu nutzen? Was meinen Sie auch mit "auslagern von _spezifischen Tasks auf einen anderen Computer"? Meinen Sie damit Cluster-Computing oder einen Prozess, der vollständig auf meinem anderen Computer ausgeführt wird? atoms118 vor 6 Jahren 0
Allgemeine Referenz: [Ist es möglich, die Verarbeitungsleistung von zwei Computern zu kombinieren?] (Https://superuser.com/q/122506/150988), [So teilen Sie sich CPU oder RAM?] (Https://superuser.com/) q / 256521/150988), [Verbinden von Computern zur Leistungssteigerung] (https://superuser.com/q/647132/150988) und wahrscheinlich mehr. Scott vor 6 Jahren 0

1 Antwort auf die Frage

2
Mariusz Zieliński

Die Frage bleibt einige Zeit unbeantwortet, während die Antwort einfach ist. Dies ist natürlich möglich, aber aufgrund von Synchronisationsproblemen nicht praktikabel. Einprozessorsystem kann zu einem SMP-System erweitert werden. Der nächste Schritt ist NUMA (oder ccNUMA, das heute dominiert) und beendet die aktuellen Optionen für ein einzelnes Betriebssystem-Image.

Für akademische Zwecke: Das erste zu lösende Problem besteht darin, eine Verbindung mit niedriger Latenz zwischen Computern herzustellen und Synchronisationsmechanismen zu ermitteln. Überlegen Sie, wie viel Sie in zusätzliche Hardware implementieren möchten. Überlegen Sie sich dann, welche Ressourcen Sie teilen müssen und wie Sie die Entscheidung treffen. Überlegen Sie, wie Sie die Ausführung von Prozessen planen. Wie werden Sie ihnen Speicherplatz (Speicherort) zuweisen? Überlegen Sie, wie DMA (Sie möchten PCI-Ressourcen gemeinsam nutzen), wie es funktionieren soll.

Beachten Sie, dass Sie, wenn Sie alles gefunden haben und alles optimal optimieren, ein Laufgeschwindigkeits-Betriebssystem erhalten.

Ich denke, dass wir beide es verdient haben, für dumme Fragen verdammt zu werden und einen lahmen Versuch, sie zu beantworten :-)