我在我的服务器上运行的虚拟机上发现了一个奇怪的问题。我设置了一个小测试场景来说明我遇到的问题的症状,但我不知道该看什么。
所以我有以下标准
- Virtiofs 模式为“/mnt/user/Backup/Logs/”(主机) => “logs”(虚拟机 debian)
- fstab 条目“logs /mnt/logs virtiofs ro,relatime,sync 0 0”
- 测试文件的完整 rwe
我从左到右来回执行命令。
- root“ls -l”显示 unraid os 上的当前目录
- alexander“ls -l”显示虚拟机上的当前目录
- root“cat testfile”在unraid上显示文件内容
- alexander “cat testfile” 在虚拟机上显示文件内容
- root“sudo nano testfile”并在nano中附加一个字符串
- root “cat testfile”显示nano修改后的新内容
- alexander“cat testfile”仍然保留着文件的旧内容
- alexander“ls -l”重新列出目录并刷新一些缓存
- alexander“cat testfile”现在拥有来自 unraid drive 的新内容。
我不太清楚到底发生了什么,因为看起来虚拟机有该文件的旧副本,只有当我执行“ls -l”(或执行刷新它的等效操作)时,文件才会正确更新。
整个事情源于我尝试使用 filebeat 转发日志文件,结果发现日志是从主机写入的,但虚拟机实际上从未注意到文件发生变化,直到在该日志文件的目录中运行“ls -l”。