「ls -l」がトリガーされない限り、仮想マシンはホストマシン上で変更されたファイルの変更を認識しません。

「ls -l」がトリガーされない限り、仮想マシンはホストマシン上で変更されたファイルの変更を認識しません。

私のサーバーで実行されている仮想マシンで奇妙な問題が発生しています。私が経験している症状を示す小さなテスト シナリオを以下に設定しましたが、他に何を調べればよいのかわかりません。

そこで私は次のような基準を持っています

  1. 「/mnt/user/Backup/Logs/」(ホスト) の Virtiofs モード => 「logs」(仮想マシン debian)
  2. 「logs /mnt/logs virtiofs ro,relatime,sync 0 0」の fstab エントリ
  3. テストファイルの完全なrwe

コマンドを左から右へ実行しました。

  1. root "ls -l" で unraid os の現在のディレクトリを表示します
  2. alexander "ls -l" 仮想マシン上の現在のディレクトリを表示します
  3. root「cat testfile」を実行して、unraid上のファイルの内容を表示します。
  4. alexander "cat testfile" 仮想マシン上のファイルの内容を表示します
  5. ルート「sudo nano testfile」を実行し、nanoに文字列を追加します。
  6. root「cat testfile」を実行してnano変更後の新しいコンテンツを表示します。
  7. alexander "cat testfile" にはファイルの古い内容が残っています
  8. alexander "ls -l" はディレクトリを再リストし、キャッシュを更新します
  9. alexander「cat testfile」に、unraid ドライブからの新しいコンテンツが含まれるようになりました。

コマンド例

仮想マシンにファイルの古いコピーがあり、「ls -l」(または更新する同等のもの) を実行した場合にのみファイルが正しく更新されるように見えるため、何が起こっているのか正確にはわかりません。

この問題は、Filebeat を使用してログ ファイルを転送しようとしたときに、ログがホスト マシンから書き込まれているのに、そのログ ファイルのディレクトリで「ls -l」が実行されるまで仮想マシンはファイルの変更に気付かなかったことに起因しています。

関連情報