我在一家运行 PHP-web应用程序的公司工作.我们在几个Web服务器上通过NFS安装了一个存储后端.今天我们遇到的问题是,如果一个Web服务器通过NFS写入文件,有时该文件在几分钟之后才出现在其他已安装的客户端上.它也没有多余,所以我们不能进行任何“隐形”维护.
我一直在寻找迁移到GlusterFS解决方案(两个或三个复制的砖/机器以实现冗余).现在,使用XFS作为存储文件系统“落后”Gluster工作得非常好,性能明智. Gluster似乎也没有上面提到的同步问题.
但是,我想使用ZFS作为后端文件系统,原因是;
>廉价压缩(目前存储1.5TB未压缩)
>非常容易扩展存储量“直播”(一个命令,比较
LVM一塌糊涂)
>快照,位腐蚀保护和所有其他ZFS荣耀.
在我的解决方案的演示设置中,我有三个服务器,每个服务器上有一个ZFS后端池和一个ZFS后端池.我在Linux(0.6.2)GlusterFS 3.4上使用CentOS 6.5和ZFS.我也试过Ubuntu 13.10.一切都在VMware ESX中.
为了测试这个设置,我已经将卷安装在Gluster上,然后运行BlogBench(http://www.pureftpd.org/project/blogbench)来模拟加载.我遇到的问题是,在测试结束时,ZFS存储似乎陷入了僵局.所有三台机器都有“zfs_iput_taskq”,运行在90-100%cpu,测试冻结.如果我中止测试,死锁不会消失,只有选项似乎是硬重启.
我试过了:
>禁用atime
>禁用调度程序(noop)
>不同的压缩/无压缩
>直接在ZFS上的Blogbench工作正常
>作为后端的Gluster XFS上的Blogbench工作正常
想法?我应该放弃ZFS并使用别的东西吗?备择方案?
关心奥斯卡
对于CentOS系统,请尝试以下操作:
创建/etc/modprobe.d/zfs.conf配置文件.在模块加载/引导期间读取.
options zfs zfs_arc_max=40000000000 options zfs zfs_vdev_max_pending=24
其中zfs_arc_max大约是RAM的40%(以字节为单位)(编辑:尝试zfs_arc_max = 1200000000). zfs_vdev_max_pending的编译默认值为8或10,具体取决于版本.对于SSD或低延迟驱动器,该值应该很高(48).对于SAS来说可能是12-24.否则,请保留默认值.
您还希望在/etc/sysctl.conf中也有一些楼层值
vm.swappiness = 10 vm.min_free_kbytes = 512000
最后,使用CentOS,您可能希望安装tuned和tuned-utils,并使用tuned-adm profile virtual-guest将您的个人资料设置为virtual-guest.
试试这些,看看问题是否仍然存在.
编辑:
运行zfs set xattr = sa storage. Here’s why.您可能需要擦除卷并重新开始(我绝对建议这样做).