除非觸發“ls -l”,否則虛擬機器在主機上更改檔案時無法識別檔案更改

除非觸發“ls -l”,否則虛擬機器在主機上更改檔案時無法識別檔案更改

我在我的伺服器上運行的虛擬機器上看到一個奇怪的問題。我在下面設定了一個小測試場景,說明了我所經歷的症狀,但我不知道我還應該看什麼。

所以我有以下標準

  1. Virtiofs 模式為「/mnt/user/Backup/Logs/」(主機)=>「日誌」(虛擬機器 debian)
  2. fstab 條目“logs /mnt/logs virtiofs ro,relatime,sync 0 0”
  3. 測試文件上的完整 rwe

我從左到右來回執行命令。

  1. root "ls -l" 顯示 unraid 作業系統上的目前目錄
  2. alexander "ls -l" 顯示虛擬機器上的目前目錄
  3. root "cat testfile" 在 unraid 上顯示檔案內容
  4. alexander "cat testfile" 在虛擬機器上顯示檔案內容
  5. root「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”中運行該日誌文件的目錄。

相關內容