我有一个在 Windows XP 机器上运行 Fedora 15 的 virtualbox 实例。Windows 机器 (Z8GQ9439) 正在共享一个文件夹 (rlevesq)。
我正在 /etc/fstab 中安装该驱动器,如下所示:
//Z8GQ9439/rlevesq /mnt/rlevesq cifs uid=500,gid=500,rw,exec,file_mode=0755,dir_mode=0755,credentials=/home/rlevesq/.cifscred 0 0
我可以正常安装驱动器。我可以写入和读取它。
问题是,最终挂载将无法从 Linux 访问。当我在 Windows 中执行 I/O 密集型操作(例如编译 C++ 代码)时,似乎会发生这种情况。
发生这种情况时,我无法运行ls /mnt/rlevesq
。即使sudo umount /mnt/rlevesq
不起作用。事实上,当我运行这些命令时,它们会锁定运行它们的 shell。
dmesg 给出以下错误
[63823.762680] CIFS VFS: Server Z8GQ9439 has not responded in 300 seconds. Reconnecting...
[64070.860398] CIFS VFS: Unexpected lookup error -512
[64101.643986] CIFS VFS: did not end path lookup where expected namelen is 0
此时,无论我等待多长时间,该文件夹仍然无法访问。我发现的唯一解决方案是重新启动虚拟机。
- 有没有办法可以在不重新启动 Linux 系统的情况下恢复?
- 有什么办法可以防止这种情况发生吗?我错过了什么安装选项吗?
答案1
当我们丢失主域控制器时,类似的设置给我们带来了很多麻烦。cifs 安装突然消失,我们需要重新启动。
解决方案是创建一个本地 winxp 用户进行挂载,而不是使用域用户。
注意:我们使用了 vmware。我们已经不再使用 cifs,现在使用 vmware 工具和 hgfs 进行共享。如果您可以不再使用 cifs,那就这样做吧。我看到 vbfs 可以与之媲美。您试过吗?
答案2
我猜测这个问题是由 VirtualBox 中创建的客户端的默认 NAT 网络引起的。有了这个 NAT 网络,主机操作系统无法自由地与客户端通信(无法 ping,无法发起会话),因此出现了这个问题。
我的解决方案是在客户机中创建一个仅主机网络,这样我的客户机操作系统就有两个网络:用于互联网连接的 NAT 和用于共享文件的仅主机网络。这很简单,通常你只需要启用客户机操作系统的网络适配器 2 并让它连接到“仅主机适配器”。重新启动客户机后,你应该能够像以前一样挂载主机的共享目录,并且挂载应该是可靠的。要验证仅主机网络是否真的有效,你可以尝试从主机 ping 客户机。