OSX:使用NFS在Ubuntu来宾中锁定无业游民

标记

在使用VirtualBox 4.3.26和vagrant 1.7.2的OSX 10.10.3上,当对Ubuntu 14.04 LTS guest虚拟机中的共享文件夹使用NFS时,PHP应用程序将ins guest虚拟机尝试在共享文件夹上使用LOCK_EX永久锁定(或:太长)才能使用)。

此设置过去可以工作几个月。大约两天前,在主机启动后,Vagrant计算机无法使用,此后,该VM的新版本出现了此问题(也许最初的问题已经与此相关)。

最近几天没有安装任何新软件。OSX升级是在上周左右进行的,但是该计算机上的所有内容仍可以正常工作。

经过长时间的搜索,我们发现罪魁祸首是NFS共享文件夹。我们已经使用了很长时间了:

config.vm.synced_folder ".", "/vagrant", type: nfs

一个strace客人看起来像这里面:

[pid 26767] open("/vagrant/some/file", O_RDWR|O_CREAT, 0666) = 5
[pid 26767] fstat(5, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
[pid 26767] lseek(5, 0, SEEK_CUR)      = 0
[pid 26767] chmod("/vagrant/some/file", 0777) = 0
[pid 26767] flock(5, LOCK_EX

它挂在这一点上。我什至可以自己复制:

<?php
$f = fopen('lock.test', 'w');
echo "Trying to get lock on file ...\n";
var_dump(flock($f, LOCK_EX));
echo "Got lock, unlocking\n";
var_dump(flock($f, LOCK_UN));
echo "Exiting\n";

不幸的是,它挂在第一flock行。

我检查了/etc/expoerts系统,并确保它是干净的文件,并且一旦关闭VM,就不会有残破/旧的残留。

使用相同的其他软件在另一个10.10.3上进行的完全相同的设置可以正常工作(尽管硬件有所不同)。我确实一天多次在其他硬件上构建VM,并且一切正常。

显然,由于性能下降,绝对希望再次使NFS正常工作(目前根本不选择不使用共享文件夹)。

蒂斯·里兹贝克(Thijs Riezebeek)

我有同样的问题。我读到某处的内容,更改为以下选项可解决其问题:

config.vm.synced_folder ".", "/vagrant", mount_options: ["rw", "tcp", "nolock", "noacl", "async"], type: "nfs", nfs_udp: false

对我来说,我要做的就是缩小范围以添加以下选项:

mount_options: ["nolock"]

因此,您的行应类似于:

config.vm.synced_folder ".", "/vagrant", mount_options: ["nolock"], type: "nfs"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章