我目前有2个networking服务器(CentOS 5.5),并使用GlusterFS作为客户端/服务器都使用自动文件复制。
对于这两个networking服务器:
GlusterFS挂载点是:
/mnt/glusterfs/site1
当地GlusterFS砖是
/export/sdb1/glusterfs/site1
我正在使用绑定挂载来指向Apache中的GlusterFS挂载:
/var/www/site -> /mnt/glusterfs/site1
dynamic页面(caching页面本身不是一个选项)需要很多小文件才能在页面呈现之前被读取,GlusterFS的性能至less比使用本地文件系统慢5倍。 即当地的GlusterFS砖。
请注意,我正在使用option read-subvolume选项,以便从本地GlusterFS块中读取文件,但是我知道在networking上的其他块上检查元数据,这是我认为会减慢速度的原因。
不幸的是,我不能让Apache使用本地GlusterFS砖,因为Apache本身做了一些写操作。
由于/mnt/glusterfs/site1和/export/sdb1/glusterfs/site1实际上是相同的文件系统,Apache有没有办法直接从本地砖中读取,但写入到GlusterFS挂载?
这将显着提高性能。
我知道NFS,OCFS,GFS2,Lustre和DRBD,但是如果有可能做到这一点,这将是最简单的解决scheme。
也许是Apache指令,Apache模块(甚至自定义模块)甚至是在系统级别?
我将不胜感激任何build议/意见/方向。
如果你直接写,它不会被glusterfs复制。 如果直接读取,则如果驱动器出现故障,则可能会导致修复无法正常工作。 读取文件时,会检查元数据,如果文件不在本地,则复制文件,而不是在驱动器联机时复制文件系统。
如果这些文件是定期创build的,你可以将它们写入非分布式安装并将其用于文件?
你可以做你想做的事,但是可能会以一些非常奇怪的方式解决。 一种情况是,如果您在一个节点上修改文件,另一个节点将不知道元数据已更改,并且会读取旧文件。 你可以在GlusterFS邮件列表中停下来,他们非常有帮助。