是否可以使用 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 同步文件夹)