VirtualBox 具有共享文件夹(由 Linux VM 中的内核模块提供vboxsf
)。当 VM 保存时,如果已挂载的共享文件夹中的文件处于打开状态,则稍后恢复 VM 时该文件句柄会丢失(显示为(deleted)
)/proc/nn/fd
。持有打开文件句柄的进程会继续运行,就像在本地文件系统上处理已删除的文件一样。
此行为不同于 NFS 文件句柄,NFS 文件句柄在由于某种原因(可能是 VM 状态保存/恢复)与 NFS 服务器的连接丢失后由 NFS 驱动程序自动重新打开。
我能做些什么吗?
我如何检测虚拟机内部的恢复事件以便重新打开相关文件(通过重新启动该过程或向其发出信号等)?
编辑:
我使用的是 VirtualBox 6.0.22 版,其中包含作为 Linux 内核一部分的 Guest 附加功能(此处为具有默认内核的 Ubuntu 18 LTS 桌面),但不是随 VirtualBoxVBoxGuestAdditions.iso
文件一起提供的版本。我没有使用任何 GUI 集成功能,而只使用基本的系统级功能,例如共享文件mount -t vboxsf ...
。