Ubuntu VM 与 Windows 7 之间的文件共享

Ubuntu VM 与 Windows 7 之间的文件共享

我在 Windows 7 主机上的虚拟化 VMware Workstation 9 会话中以 Guest 身份运行 Ubuntu 12.04。Windows 计算机通过 CIFS 与 Ubuntu 计算机共享一个文件夹,Ubuntu 计算机在启动时会自动挂载共享文件夹,这要归功于/etc/fstab文件中的以下行:

//<remotehost>/<sharename> <localsharepath> cifs soft,uid=1000,username=<remoteusername>,password=<remotepassword> 0 0

通过挂载进行文件共享可以正常工作,直到需要在暂停后恢复 Ubuntu 虚拟机或从快照恢复它为止。这通常发生在 Windows 主机重新启动后或在夜间关机后启动后。

Ubuntu 恢复后,包含共享文件夹挂载的文件夹未列出任何项目。Nautilus 窗口长时间挂起,右下角显示“正在加载...”,完全是空的,尽管该文件夹中还有许多其他文件夹和文件要显示。

重启 Ubuntu 机器确实有帮助,但并不实用:Ubuntu 需要很长时间才能关闭,它只是挂在最后一个命令行屏幕上,绝望地等待着某些东西(当挂载可访问时,就不会出现这样的问题)。目前,唯一的选择是粗暴地关闭 Ubuntu,然后重新打开,以便能够访问挂载,当然,这也不实用。

我的猜测是,当某些 CIFS/Samba 通信参数发生变化时(在 Windows 重新启动后),Ubuntu 虚拟机的恢复映像不知何故无法跟上。

即使在 Ubuntu 机器上安装了 VMware Tools,VMware 的共享文件夹功能(可以作为替代方案)也不适用于 Ubuntu 12(以及许多其他 Linux 发行版)。但即使可以,与其他虚拟机共享文件仍需要 CIFS/Samba 共享。

答案1

我建议使用autofs而不是静态fstab条目。请参阅:https://help.ubuntu.com/community/Autofs

答案2

1.umount -f

这不是一个解决方案,也不是解决办法,而是一个程序(一个令人讨厌的程序)。

VM 恢复后,请勿尝试使用 Nautilus 或任何程序查看共享驱动器。不要这样做ls。任何类型的访问都会触发 5 分钟超时并使共享变得繁忙。只需执行umount -f之前的操作即可。

    umount -f <localsharepath>

-f 强制卸载(在服务器无法访问的情况下)。

只要共享不忙,这将立即卸载共享,而不会触发 5 分钟 cifs 超时。

这肯定不是理想的,但它不需要重新启动并且可以立即再次挂载共享。

2. 改变系统韋斯defaults

//<remotehost>/<sharename> <localsharepath> cifs defaults,uid=1000,username=<remoteusername>,password=<remotepassword> 0 0

官方宣布 smbfs 不再维护

smbfs 在过去几年中一直没有得到维护。相反,开发一直专注于内核中 CIFS 协议的另一种实现。有关更多信息,请参阅 CIFS VFS。

根据评论这个博客(找不到更权威的参考资料)

stintel 2008 年 5 月 9 日星期五:CIFS 的另一个优点是,它能够经受住网络中断甚至系统重启的考验,即使您正在挂载共享

3. 禁用机会锁定和查找缓存(对减少 5 分钟连接超时没有效果)

echo '0' > /proc/fs/cifs/OplockEnabled
echo '0' > /proc/fs/cifs/LookupCacheEnabled

4. 检查打开文件(根据评论不适用)

Ubuntu VM 恢复后,检查是否有任何用户/进程使用任何文件/目录在共享文件夹中

lsof | grep '<localsharepath>'

如果任何用户/进程正在使用 < localsharepath > 中的文件/目录,您将获得device busy(无论它是如何安装的,本地的还是远程的)。

答案3

如果您经常在主机和客户机之间共享文件,请使用 FTP 或 SFTP,甚至 Git 等修订控制软件。与那些挂载软件相比,它们更稳定、更有用。

如果没有,请在客户机 Ubuntu 上安装 VMTools。然后,您可以在主机和客户机之间拖放文件。

相关内容