Laravel Homestead/Vagrant/Virtualbox 在 Windows 上运行缓慢

22

我已经按照官网上的说明,在Windows上安装了Laravel Homestead/Vagrant/Virtualbox

但是,它非常慢。页面更新需要约5秒钟。

而且这不仅是我的观察结果, Laracast有一个关于此问题的讨论。

laracast论坛有一些有趣的想法,但那里很混乱(对不起Jeffery),很难理解哪些想法被接受,哪些被拒绝。

在Stackoverflow上,我们有一个良好的投票系统来投票支持的解决方案,并要求作者为每个解决方案单独提供更多详细信息。请发布您的解决方案和经验。

从我的经验来看,有一次Windows运行更新并强制关闭了我的系统,当它重新启动时,速度非常快(至少快10倍),但在下一次重启后,速度又变慢了。现在我知道可以做一些事情来加速它,这不是一个“缓慢的硬件案例”,而是一个软件配置案例!

我正在使用Intel-Core-i7上的Windows-10,带有Oracle Virtualbox-5.2.12... (一切都是最新的,没有什么需要更新的)


1
我尝试为Oracle虚拟机创建一个固定大小的虚拟驱动器,但速度并没有显著提高。 - Yevgeniy Afanasyev
3个回答

43

NFS代表“网络文件系统”,你需要它来提高速度。

Laravel homestead教程没有介绍NFS是什么以及为什么需要它,这就是我在初始安装时忽略它的原因。

1) 在您的Windows主机上,安装添加NFS支持到vagrant的插件。

$ vagrant plugin install vagrant-winnfsd

2) 转到 Homestead.yaml,通常位于 C:\Users\username\Homestead\Homestead.yaml

3) 在文件夹部分添加 type: "nfs",如下所示:

folders:
    - map: ~/code
      to: /home/vagrant/code
      type: "nfs"

4)运行vagrant up --provision

结果:

速度提高了,就像@phazei的答案中所述,每个请求从8秒减少到2秒,但工作量要少得多。@phazei的答案澄清了一些后台进程。

我在Windows 10上测试了Oracle Virtualbox-5.2.12、vagrant version-2.1.1。

请注意:Vagrant NFS页面说:

Windows用户:NFS文件夹在Windows主机上无法使用。 Vagrant将忽略您对Windows上NFS同步文件夹的请求。

但如果您安装了插件,则可以忽略此消息。


7

laracasts 论坛上,名为 @phazei 的作者在3年前回答了这个问题。

他说:

1)在您的 Windows 主机上安装一个插件,该插件为 Vagrant 在 Windows 上添加了 NFS 支持。

$ vagrant plugin install vagrant-winnfsd

2) 找到你的 homestead.rb 文件

我在这里找到了它:

C:\Users\用户名\Homestead\scripts

尽管他建议我们在这里查找:

C:\Users\用户名\AppData\Roaming\Composer\vendor\laravel\homestead\scripts

3)

找到已经循环遍历 settings["folders"] 的部分,并用 nfs 代码替换它。

对于我来说,它大约在第 140 行左右。

所以,我注释掉了所有的语句 if settings.include? 'folders' ... end

并改为添加以下内容:

    # EDIT:
    # Reorder folders for winnfsd plugin compatilibty
    # see https://github.com/GM-Alex/vagrant-winnfsd/issues/12#issuecomment-78195957
    settings["folders"].sort! { |a,b| a["map"].length <=> b["map"].length }

    # Register All Of The Configured Shared Folders
    if settings.include? 'folders'
        settings["folders"].each do |folder|
          config.vm.synced_folder folder["map"], folder["to"], 
          id: folder["map"],
          :nfs => true,
          :mount_options => ['nolock,vers=3,udp,noatime']
        end
    end

4) 然后使用halt/up重新启动vagrant,我的页面加载速度从8秒提高到了2秒。

感谢@phazei。您的答案在3年后仍然有效。

PS

我在Windows 10上测试了Oracle Virtualbox-5.2.12和vagrant版本-2.1.1。

PPS

您可以运行vagrant up --provision,它不会影响您在homestead.rb中所做的更改。


0

另一个可能的问题是Avast杀毒软件。

事实证明,需要禁用特定的虚拟化选项,然后重新启动计算机以使更改生效。

选项是:

Avast > 设置 > 故障排除 > 取消勾选启用硬件辅助虚拟化

加载时间大大缩短了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接