如何让共享文件夹与 Vagrant 和 Hyper-V 一起使用?

Posted

技术标签:

【中文标题】如何让共享文件夹与 Vagrant 和 Hyper-V 一起使用?【英文标题】:How to get shared folders working with Vagrant and Hyper-V? 【发布时间】:2019-06-13 08:04:07 【问题描述】:

之后:

    启用 Microsoft Hyper-V,如下所述:

https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

    暂时禁用我的防病毒软件 (Avast)

    以管理员模式启动我的命令行程序(例如“以管理员身份运行”),

    使用 Hyper-V 实例启动 Vagrant (2.2.3):

$ vagrant up

使用以下示例 Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.provider "hyperv"
  config.vm.network "public_network"
  config.vm.synced_folder ".", "/vagrant", type: "smb"
  config.vm.provider "hyperv" do |h|
    h.enable_virtualization_extensions = true
    h.linked_clone = true
  end
end

    switch to attach to the Hyper-V instance 选择External Virtual Switch

    在 Hyper-V 实例启动期间 Vagrant 提示时输入我的 Windows(管理员)用户的用户名和密码

我收到以下错误:

Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t cifs -o uid=1000,gid=1000,sec=ntlm,credentials=/etc/smb_creds_e706...e431 //10.124.157.30/e706...e431 /vagrant

The error output from the last command was:

mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

如何解决?

【问题讨论】:

您可能希望摆脱 config.vm.network "public_network",因为“Hyper-V 完全忽略 Vagrantfile 中的网络配置”vagrantup.com/docs/hyperv/limitations.html 【参考方案1】:

只有在我进去之后:

Settings > Apps & Features > Programs and Features > Turn Windows features on or off

并启用:

SMB Direct(对 SMB 3.x 文件共享协议的远程直接内存访问 (RDMA) 支持)

Vagrant 是否使用我的共享文件夹成功启动了 Hyper-V 实例。

我还没有回去尝试跳过我所做的一些操作(例如,暂时禁用防病毒软件),但成功地完成了上述所有操作。

在无法在任何地方(不在 Vagrant 的网站、Hyper-V 网站、***、大量的 Google 搜索上)找到这个明确记录的文件并且在这个问题上苦苦挣扎了无数小时之后,我只想分享这个以拯救其他人我经历过的痛苦。希望这会有所帮助!

【讨论】:

【参考方案2】:

我终于找到了适合我的东西并想分享。我在一台装有 Windows 10 Pro 1909 的加入域的计算机上。我的 Vagrant 文件中有这个:

config.vm.synced_folder "C:/projects", "/projects", type: "smb", mount_options: ["domain=mydomain", "user=myusername", "vers=3.0"]

在“vagrant up”期间,它仍会提示输入凭据,以便它可以创建/修剪文件共享。在这个提示下,我以这种格式输入用户名: 我的域名\我的用户名

它现在成功地将我的本地驱动器安装在 VM 中。

【讨论】:

以上是关于如何让共享文件夹与 Vagrant 和 Hyper-V 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

win10 Hyper-V 如何实现主宿机与虚拟机 文件共享?

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

让Vagrant在Windwos下支持使用NFS/SMB共享文件夹从而解决目录共享IO缓慢的问题

Win10如何读写Hyper-V CentOS下的Samba共享文件夹

Vagrant 共享/同步文件夹权限

如何与 https 共享 vagrant 机器