2012-04-26 59 views
0

我有apache的虚拟主机:在NFS分区的Apache 404错误时符号链接的DocumentRoot

<VirtualHost IP_WAN:80> 
    ServerName test.localnet 
    DocumentRoot /srv/http/localnet/test/trunk/docroot 
    <Directory /srv/http/localnet/test/trunk/docroot> 
    Options Indexes 
    </Directory> 
</VirtualHost> 

分区/ SRV是NFS3安装的文件系统:

172.16.0.2:/srv /srv nfs nodev 0 0 

在服务器侧它是由出口:

/srv 172.16.0.0/255.255.255.240(rw,sync,no_subtree_check,no_root_squash) 

directory/srv/http/localnet/test/trunk是/ srv/http/localnet/test/exports/trunk-v的绝对符号链接2

在/ SRV/HTTP/localnet的/测试/出口我已出口SVN树(树干-V1,躯干-V2,躯干-V3)

当我问及Apache的为http://test.localnet,它提供200 OK和/ SRV/HTTP/localnet的/测试/出口/后备箱-V2 /文档根目录索引

但是:

如果我删除符号链接/ SRV/HTTP/localnet的/测试/主干,并创建一个新的另一版本(ln -s/srv/http/localnet/test/exports/trunk-v3/srv/http/localnet/test/trunk),apache给了我404 Not Found。它大约需要几秒/分钟,然后一切都会自行恢复正常。

如果我在这种情况下执行ls -la/srv/http/localnet/test/trunk /,它会立即恢复正常。我认为NFS高速缓存存在一些问题,但我无法找到问题发生的位置以及如何防止出现问题。符号链接占据与前一个相同的inode,两个目标(旧的和新的)都存在。

在服务器端,我有/ SRV分区挂载这种方式:

/dev/xvda7 on /srv type xfs (rw,nosuid,nodev) 

我也用这个参数:

echo 262144 >/proc/sys/net/core/rmem_max 
echo 262144 >/proc/sys/net/core/rmem_default 
echo 262144 >/proc/sys/net/core/wmem_max 
echo 262144 >/proc/sys/net/core/wmem_default 
echo noop >/sys/block/xvda7/queue/scheduler 
echo 0 >/sys/block/xvda7/queue/read_ahead_kb 

我也想给网络接口向上调整MTU到9000,但没有成功。

有人知道,有什么问题吗?为什么apache在'手动'刷新目录结构(ls)之前找不到符号链接?非常感谢

Ondra

+0

请编辑您的文章与您更正的内容。 – 2012-04-26 09:47:03

+0

编辑..对不起,我找不到'编辑'按钮.. – tloudev 2012-04-26 10:27:29

+0

有每次第一次。弄明白了如何将代码格式化为代码,无法理解faq ... – 2012-04-26 10:40:07

回答