web-dev-qa-db-ja.com

Linuxでの同期コマンド操作を理解する

LinuxOSでのsyncコマンドの操作を完全に理解しようとしています。

読んだ後: https://en.wikipedia.org/wiki/Sync_(Unix)https://lwn.net/Articles/457667/

syncコマンドが、アプリケーションのバッファから永続ストレージに至るまでデータをフラッシュする役割を果たしていることを理解しました。

  1. linuxは、永続ストレージデバイスとその適切な書き込み要求をどのように追跡しますか? (/ dev内には、すべてが永続ストレージデバイスを表すわけではない多くのデバイスファイルがあります)各デバイスが書き込み要求を待機していることをどこで確認できますか?

  2. sync(具体的にはsyncコマンド)は、要求を書き込むためにすべてのシステムのデバイスをスキャンし、それらすべてを実行しますか?それはいくつかの効率的なリストを維持していますか?

  3. どのように仮想ファイルシステムがsyncコマンドに関連していますか? syncコマンドは各ファイルシステムをスキャンしますか?もしそうなら、なぜですか?

  4. このコマンドとその「舞台裏」操作に関する文献はありますか?

4
hutcruchi

このマンページ 少し明確になるかもしれません。

行間で読んだのは、すべてのファイルシステム実装が同期メソッドを提供する必要があるということです。

したがって、syncコマンドは、カーネルを呼び出すだけです。カーネルは、すべてのsyncメソッドを呼び出します。

おそらく、syncのカーネルコードを調べると、そこで何が起こっているのかについてのより良い説明を見つけることができます。

4
Nils