ファイルが延期状態にあるかどうかをどのように検出しますか?

ファイルが延期状態にあるかどうかをどのように検出しますか?

bash を使用して、ファイルが遅延状態にあるかどうかをどのように確認すればよいですか? これを検出する方法はありますか?

サンプル:

ファイルを保存すると、カーネルはファイルをキャッシュしますが、まだディスクに書き込まれません。これは D 状態または遅延状態です。遅延状態のときに、のようにファイルを確認するとphp -r "var_dump(file_exists($filename));"、カーネルは、確かにファイルは存在しますと応答します。しかし、実際には、ファイルはまだディスクに書き込まれていません。サーバーが再起動されると、ファイルは消えてしまいます。

このイベントが発生したので、それを防ぐか、それを検出して通知する監視ツールを作成して、再起動する前にファイルを他のサーバーにコピーできるようにしたいと考えています。

答え1

間違った「問題」を見ていると思います。システムが正しく再起動されると、シャットダウン プロセスによってすべてのデータが永続的なストレージに書き込まれるようになります。

したがって、ここでの問題は、再起動が間違った方法で実行され、データが失われることです。shutdown -r nowまたは同様のコマンドを使用するように再起動を変更する必要があります。

答え2

ツールを見つけたと思います。探していたものとは違いますが、うまく機能させるつもりです。

これはvmtouchコマンドです。https://github.com/hoytech/vmtouch

ありがとう。

関連情報