VirtualBox重新启动后,重新连接Vagrant中的同步文件夹

时间:2014-07-11 08:39:51

标签: windows ubuntu vagrant virtualbox puppet

我创建了一个在Windows主机上运行的木偶/流浪汉/ VirtualBox生成的Ubuntu安装;有关详细信息,请参阅https://bitbucket.org/dmenne/rstudio-shiny-server-on-ubuntu。这允许用户在Windows上运行RStudio和Shiny服务器。在Vagrantfile,我有

config.vm.synced_folder "shiny-server", "/srv/shiny-server", create:true

创建共享文件夹。当我使用vagrant upvagrant reload启动VM时,一切正常。

一位客户不想安装vagrant等,并要求在Windows上使用VirtualBox Manager启动/停止独立VM。但是,在我关闭enter image description here流浪汉启动的VM Box后,我的同步文件夹在VM重启时不会再次连接/挂载,即使它们在VirtualBox Manager的共享文件夹对话框中正确显示。

如何收缩包装Vagrant生成的VM,以便可以在没有Vagrant的情况下启动/停止?

2015年3月编辑:

我仍然无法解决这个问题。当我强制自动挂载时,恢复media/sf_<folder>时会同步,而不是所需的文件夹。如何在重启后强制VirtualBox使用Vagrantfile的同步模板?

如果不手动操作,我如何在流浪汉中强制执行automount。

2 个答案:

答案 0 :(得分:7)

经过一些进一步调试并且对google / vagrant论坛上的类似查询缺乏响应:

  • 在puppet中使用同步文件夹时,必须使用vagrant upvagrant reload
  • 重新启动VirtualBox
  • 如果使用VirtualBox GUI停止/重启,automount会错误地恢复同步文件夹,即/ media / sf_;如果不使用vagrant reload
  • ,则无法更正此问题
  • 没有vagrant的唯一选择是将状态保存在VirtualBox(CTRL-V)中。重新启动后,正确恢复已同步的文件夹。但是,可能无法强制最终用户始终手动保存状态。

要使用持久同步文件夹,您必须使用upstart或类似方法;仅使用Vagrantfile无法完成。

另见阿尔瓦罗的回应: https://groups.google.com/forum/#!topic/vagrant-up/oBU0kqPLzYk

答案 1 :(得分:4)

让这个工作有两个部分。首先,我们需要从主机上自动安装同步文件夹,Linux客户端的情况有点用词不当,因为它更“自动安装”或“自动共享”。对于每个共享文件夹(gemainsame ordner),您必须打开自动挂载(automatische einbinden)

为此,请单击每个共享的编辑共享文件夹图标

The edit shared folder icon

并检查自动挂载(automatische einbinden)

Check the auto mount option

最后你应该在“automatische Einbinden”下面看到“Ja”,因为所有的股票应该自动同步

enter image description here

如果guest虚拟机系统是Ubuntu(或任何Linux系统),那么完成此操作后,所有已同步的文件夹现在应该在guest虚拟机中可见,但guest虚拟机不会自动挂载它们。您需要在/ etc / fstab中为您希望自动挂载在guest虚拟机中的每个文件夹添加一个条目。

由于您使用的是VirtualBox,Vagrant可能会选择使用VirutalBox的共享文件夹配置方法来实现同步文件夹。对于Linux中的来宾系统,根据您的Guest Additions版本,这看起来像是一个smb / cifs共享,其名称(默认情况下)为// vboxsrv /,或者类型为“vboxsf”的文件系统。

vboxsf来自最新版本的访客添加(至少4.1.18起),automount选项“正常”。在使用名为“bob”的自动挂载设置共享启动Linux来宾VM时,系统应自动挂载Bob(不带fstab条目)/media/sf_Bob。来自mount的相关行的完整输出是

none on media/sf_Bob type vboxsf (rw,nodev,relatime)

如果这不起作用,请检查您是否可以使用smbclient或smbtree在来宾系统中查看samba网络共享。它应该看起来像//vboxsrv/Bob。然后,在你的fstab中,你会添加一行这样的

#share name         #mount point in guest   #fstype   #options   #dump/pass
//vboxsrv/Bob       /mnt/Bob                cifs      auto,rw    0 0

您可能希望阅读mount.cifs的手册页,以调整每个装载的选项,尤其是文件所有权和权限(相关的调查选项为forceuiduidforcegidgidfile_modedir_mode