Nach meinem besten Verständnis sind alle Linux-Prozesse tatsächlich Dateien
Sie sollten die Metapher nicht zu wörtlich nehmen. Auf Linux-Prozesse kann zwar über ein Pseudo-Dateisystem zum Debuggen, Überwachen und Analysieren zugegriffen werden, aber Prozesse sind mehr als nur diese Dateien, und das "Kopieren" von einem Quell-Host- /proc
Dateisystem in ein Zieldateisystem /proc
ist zum Scheitern verurteilt.
Ist es möglich, einen laufenden Prozess zwischen Maschinen zu kopieren?
Eines der schwerwiegenden Probleme beim Verschieben eines laufenden Prozesses zwischen Hosts ist die Behandlung der von diesem Prozess verwendeten offenen Dateideskriptoren. Wenn ein Prozess eine Datei liest oder schreibt, muss genau diese Datei (oder ein genauer Klon) auf dem Zielhost verfügbar sein. Dateideskriptoren in Bezug auf Sockets wären schwierig zu verarbeiten, da sich die IP-Adresse, an die sie gebunden sind, wahrscheinlich von einem Host zum anderen ändert. Prozesse, die Speichersegmente mit anderen teilen, werden nach einer Migration nicht mehr ausgeführt. PID-Konflikte können auch auftreten, wenn ein laufender Prozess dieselbe PID hat wie der eingehende. Einer von ihnen muss geändert werden. Die Eltern-Kind-Beziehung geht verloren, und ich habe gerade die potenziellen Probleme gekratzt.
Trotz dieser Probleme gibt es technische Lösungen, die diese als " Application Checkpointing " bezeichnete Funktionalität wie DMTCP und CRIU bereitstellen . Dies ähnelt dem, was mit Hypervisoren wie VMWare, VirtualBox, Oracle VM und anderen verwendet wird, wenn sie Live-Migration / Teleportation von virtuellen Maschinen durchführen . Bei virtuellen Maschinen ist der Job tatsächlich "einfacher", da das gesamte Betriebssystem verschoben wird, einschließlich der Dateideskriptoren, der Dateisysteme, des Speichers, des Netzwerks und anderer Geräte usw.