是否可以使用 Vagrant 的 NFS 同步功能将 VM 的目录挂载到本地 Windows 机器?

Posted

技术标签:

【中文标题】是否可以使用 Vagrant 的 NFS 同步功能将 VM 的目录挂载到本地 Windows 机器?【英文标题】:Is it possible to use Vagrant's NFS synching feature to mount VM's directories to local Windows machine? 【发布时间】:2016-04-30 18:46:48 【问题描述】:

我有一个 Ubuntu 14.04 的虚拟机,我想将一些目录挂载到我的本地机器上。有两个问题:

    虚拟机不是由“vagrant up”创建的 我的本地机器上的操作系统是 Windows 10 Home。

所以我不能使用 Windows 默认 NFS 功能,它只打包在 Ultimate 版中。我找不到其他在 Windows 上运行良好的免费可靠安装工具。有一些适用于 Windows 的 SSH Fuse 和 NFS 克隆,但我都遇到了问题。 Vagrant 的 NFS 同步功能能够完全按照我的意愿进行操作,但当然您必须由 Vagrant 自己创建机器。所以我想以某种方式滥用 Vagrant 的 NFS 来挂载目录,但没有成功。这甚至可能吗?

【问题讨论】:

【参考方案1】:

您可以在没有 vagrant 的情况下利用 SMB 功能在 win host 和 ubuntu guest 之间共享文件夹。它使用目录网络共享,但您必须手动使用长命令。

【讨论】:

【参考方案2】:

经过许多小时后,我将我的虚拟机变成了可导出的 Vagrant 盒子,然后它就可以工作了。不幸的是,我不记得我必须做的所有事情,但我确实记得一些。

    我必须创建用户 Vagrant,该用户无需密码即可 sudo,将其设置为不安全的 vagrant 密钥,以便 Vagrant 能够 ssh 并更新密钥 (https://github.com/mitchellh/vagrant/blob/master/keys/vagrant.pub) 安装一些软件包,例如 (virtualbox-guest-utils、virtualbox-guest-dkms、nfs-common) 调整 /etc/network/interfaces,以便 Vagrant 能够更改它

也许还有更多。在 Vagrant 能够将 VM 机器带入生活之前,这是一个反复试验。但我不得不说,2 个月后我明白了 NFS 在 Windows 下是如何工作的,现在我也可以通过 NFS 挂载而无需 vagrant box。你需要:

    来自 Vagrants 插件 vagrant-winnfsd 的 winnfsd.exe,或者您可以从 https://github.com/winnfsd/winnfsd 自己编译它) 创建名为“nfspaths”的文件,并将要挂载到 VM 的路径放入,例如:

C:/var/www/project/app

    使用内容创建 nfsservice.bat:

START "" C:\path\to\winnfsd.exe -log off -pathFile "C:\path\to\nfspaths"

    运行 nfsservice.bat 登录到您的 VM 并通过 nfs 挂载(使用大写驱动器号很重要!): sudo mount -o "vers=3,udp" 192.168.77.1:/C/var/www/project/app /var/www/project/develop/app/ver/init

而且你不再需要 Vagrant 来安装文件夹,这是我的主要目标。

【讨论】:

以上是关于是否可以使用 Vagrant 的 NFS 同步功能将 VM 的目录挂载到本地 Windows 机器?的主要内容,如果未能解决你的问题,请参考以下文章

加快 Vagrant 上主机和来宾之间的同步延迟(NFS 同步文件夹)

Vagrant:如何禁用 Windows 主机的 NFS 同步文件夹?

如果文件中的字符被修改,NFS 不会同步文件

Vagrant 启用 rsync

Vagrant:无法让 NFS 工作

Fedora 22 上的 NFS Vagrant