なぜrsync自体がフォークするのですか?そして、そのような分岐したプロセスの1つが(iotopで見られるように)ほぼアイドル状態になっているのはなぜですか?


11

これはここ述べ問題を指しているので、私も同じことを経験しています。

私のサーバーの1つで、rsyncを実行し、同じマシンにマウントされた別のディスクに巨大なディレクトリ(サイズが300 Gbを超える)をバックアップしました。rsyncされるディレクトリには、数千のディレクトリとファイルが含まれます。「nohup」を指定して単一のrsyncコマンドを発行し、「&」コマンドを使用してバックグラウンドでプッシュしました。(パテを使用して)リモートbashシェルで指定された完全なコマンドは次のとおりです。

nohup rsync -avh /some/local/dir /backup/ >> /opt/rsync.dec22.log &

次に、データがコピーされる速度を確認するために、「iotop」コマンドを使用しましたが、同じパラメーターで3つのrsyncが実行されていることがわかりました。検索すると、それが正常であると言う上記のリンクを見つけました。

しかし、iotopを実行して、システム上で実行されているrsyncプロセスのみを監視すると、1つのプロセスがファイルを読み取り、1つがファイルを書き込み、1つがアイドル状態であることがわかります。1つのプロセスが一度に1つのことだけを実行するため、動作は良好であるように見えますが、3番目のプロセスは何をしていますか(下の画像の中央のプロセスとして表示)。

私が使用したiotopコマンドは次のとおりです。

iotop -p22250 -p22251 -p22252

iotopコマンド出力のスクリーンショットは次のとおりです。

3つのrsyncプロセスを示すiotopコマンド出力

私はこの原因にrsyncを頻繁に使用し、長期的な利益のためにその動作を理解したいと考えています。私もマニュアルを読みましたが、フォークについては何も言っていません。

回答:


9

rsyncは、クライアントおよびサーバーになるように設計されたプログラムです。サーバーが読み取り、クライアントが書き込みます。単一のコンピューターではなく、ネットワーク経由でコンピューターを使用していると想像してください。そのように考えれば、より明確になると確信しています。

次に、コントローラーがあります。IO操作にはある程度のリスクが伴う傾向があるため、IOの問題が完全なブロッキングやクラッシュを引き起こすことはありません。そのため、接続ごとに分岐を作成し、バックグラウンドで動作します。


知識をありがとう。ネットワーク上の別々のコンピューターのビューでそれを理解し、各コンピューターは同期して作業の一部を行います。しかし、rsyncについて、そして概念についてもそのようなことをもっと読むことができるビヘイビアドキュメントを参照してもらえますか?また、読み取りデータが読み取りプロセスから書き込み中のプロセスにどのように渡されるかを知りたいですか?IPCの概念が使用されていますか?
ゴータムソマニ

3
@GautamSomani公式のrsyncページは、そのための最適なソースになります。rsync.samba.orgはまた、それがどのように動作するか、ここで提供されています:rsync.samba.org/how-rsync-works.htmlあなたはさらに詳細が必要な場合、あなたはおそらく元に掘る必要があります。
気難しい

元の作成者は、ローカルでrsyncを起動します。彼はrsyncdに接続しないため、デーモンがその子を分岐する方法はありません。また、ネットワーク接続もありません。したがって、ローカルで実行したときにrsyncがフォークする理由はまだ疑問です。答えは誤解を招くものであり、間違っています。
ルーキー

@drookieローカルであるかネットワーク経由であるかは関係ありません。同じように機能します。また、コメントのすぐ上にリンクされている公式ドキュメントでこの動作を説明しています。これは、「ローカル転送内、リモートシェル、またはネットワークソケット経由」とも述べています。
気難しい
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.