私が知っている限り、すべてのLinuxプロセスは実際にはファイルです。実行中のプロセスをあるコンピュータから別のコンピュータにコピーできますか?
例:サーバーを再起動せずに、実行中のTomcatサーバーをあるコンピュータから別のコンピュータにコピーします。
ベストアンサー1
私が知っている限り、すべてのLinuxプロセスは実際にはファイルです。
このたとえ話を文字通り受け入れてはいけません。 Linuxプロセスは実際にはデバッグ、監視、分析の目的で擬似ファイルシステムを介してアクセスできますが、プロセスは単純なファイル以上であり、ソースホストファイルシステムからターゲットファイルシステム/proc
に「コピー」されます/proc
。
マシン間で実行中のプロセスをコピーできますか?
ホスト間で実行中のプロセスを移動するときに発生する深刻な問題の1つは、プロセスが使用している開いているファイル記述子をどのように処理するかです。プロセスがファイルを読み書きする場合は、そのファイル(または正確なレプリカ)をターゲットホストで使用可能にする必要があります。ソケットに関連するファイル記述子は、バインドされたIPアドレスがホストごとに変更される可能性があるため、処理が難しいです。他のプロセスとメモリセグメントを共有するプロセスは、移行後にこのタスクの実行を停止します。 PID 衝突も発生する可能性があります。実行中のプロセスに着信プロセスと同じpidがある場合は、そのうちの1つを変更する必要があります。親子関係がなくなり、根本的な問題を発見しただけです。
これらの問題にもかかわらず、この機能を提供する技術ソリューションがあります。と呼ばれる」アプリケーションチェックポイント「いいねDMTCPそしてクリウ。これは、VMWare、VirtualBox、Oracle VMなどのハイパーバイザーが仮想マシンを作成するときに使用するのと似ています。リアルタイム移行/吹く。仮想マシンを使用すると、ファイルディスクリプタ、ファイルシステム、メモリ、ネットワーク、その他のデバイスなど、オペレーティングシステム全体が移動するため、操作は実際には「より簡単です」。