NoOps

Ops make no ops | Ops的目标是没有Ops,嗯!

ceph VS glusterfs

作者: |   8,209 浏览  | 

11月初有幸去参加了在香港举行的OpenStack Summit,在体验了祖国特别行政区的繁华同时,也体验了ceph如火如荼的势头。ceph提出的统一存储(united storage:file system、block storage、object storage)开始被大家广泛认可。而glusterfs同样也是一款很出色的分布式文件系统,很多公司在生产环境中已经应用了glusterfs。

最近正在对本篇文章主要带大家简单熟悉下ceph和gluster的部署并使用fio对两款文件系统性能进行测试。

1.ceph

下面先来说一下ceph的部署,部署坏境为CentOS 6.4,ceph官方推出了一个部署工具ceph-deploy,我是使用这个来部署ceph的。

ceph

 

如上图所示,我们这次集群规模以3台服务器为例,并额外选取一台作为管理节点。

1)在管理节点上生成公钥,并在管理节点上建立到3台存储节点的信任关系。

2)添加源,在/etc/yum.repos.d/目录中创建ceph.repo文件,并写入如下内容。

其中{}部分需要替换,目前ceph最新版本v0.72.1叫emperor,管理节点系统为centos 6.4。因此修改为的源文件如下所示。

3)更新源并安装

4)搭建存储集群,要搭建集群的架构如下图所示。

ceph1

在搭建集群过程中会生成一些文件,因此我们最好先创建个文件夹,在文件夹当中进行操作。

这里new后面接mon节点主机名称,我们这里在每个存储节点上都运行mon进程,因此执行如下命令。

成功执行该命令后,将会生成集群的配置文件,keyring文件以及日志文件。

接下来,将安装ceph。

安装ceph monitor。

收集各个节点的keyring文件。

当成功执行上面命令的时候,在本地目录下会生成如下文件:

添加3个OSD,使用过程中我把磁盘做成逻辑卷挂载在/opt/ceph目录下。在管理节点上执行如下命令。

最后,激活这些OSD。

至此,ceph共享存储集群就搭建完成。由于我们要使用ceph文件系统,因此我们至少还需要一台metadata服务器。在管理节点上执行如下命令创建一个metadata服务器。

官方建议目前即使在生产环境中只是用一台metadata服务器也是可以的,但并不是不可以使用多台metadata服务器,只不过是那种情况下将缺少商业支持。

接下来,我将挂载ceph文件系统到我们的服务器上,在该服务器上安装ceph-fuse。

安装好ceph-fuse后,执行如下命令进行挂载。如果要使用ceph做OpenStack临时存储的话,就将ceph文件系统挂载到/var/lib/nova/instances目录下即可,这里我们测试就将ceph挂载到/mnt/ceph目录下。

2.glusterfs

在搭建glusterfs的时候出现些问题,给出要搭建glusterfs的同学如下建议。

1)在搭建过程中最好使用节点IP;

2)各个节点版本必须一致,目前最新版为3.4.1。

为了保证各个节点glusterfs版本一致,我们先更新各个节点源。

glusterfs

 

如上图所示,我们也选择三个存储节点组成glusterfs集群。在glusterfs-node01上安装glusterfs-node01。

glusterfs-node02和glusterfs-node03同样执行如上操作。

1)添加节点,在 glusterfs-node01上进行添加节点。

2)创建卷,为了测试和上面ceph类似,我们将逻辑卷挂载到/opt/glusterfs上。

我们这里设置的每份数据存3份。

3)启动卷。

至此服务器端部署完成,下面来部署客户端。

4)安装客户端程序,这里要注意是否与服务器端版本一致。

5)挂载目录

至此ceph和glusterfs部署全部完成,其中ceph参考了官方文档,glusterfs参考了陈沙克老师的文章,在此感谢原作者。

3.性能测试

看了些文章,都说ceph的文件系统性能并不是很好,笔者使用fio对ceph和glusterfs文件系统的读写进行能简单的测试。

使用命令如下:

ceph所得结果如下:

glusterfs所得结果如下:

可以看得出ceph的文件系统读写性能相比glusterfs,还是相差很多。

感觉目前最好的解决方案是文件系统用glusterfs,块存储用ceph,对象存储用swift,但是这么一来ceph的统一存储也荡然无存了,

最后欢迎在生产环境中使用ceph或者gluster的同学给些意见或者一起讨论。

 

 

 

13 Comments

  1. 2013/12/13 at 10:05 上午

    棒!

  2. mileskuo
    2014/01/15 at 11:58 下午

    文中仅仅是用了文件系统挂载的方式,对于块存储如何呢?GlusterFS能够支持块存储么?

    • mtao
      2014/07/14 at 7:59 下午

      glusterfs不支持块设备存储的

  3. Ning Zhou
    2014/01/16 at 9:31 上午

    GlusterFS和Swift也可以集成在一起了

  4. corallove
    2014/01/16 at 10:02 上午

    你这里挂载的是Ceph的fuse文件系统,可以尝试下挂载cephfs,再进行对比测试。

    • wangshuo
      2014/01/16 at 10:16 上午

      好的,后续会对ceph和glusterfs做一次更为详尽的测试,看来大家对ceph和glusterfs都很关注啊

  5. 付浩
    2014/02/12 at 11:03 上午

    想了解下测试环境,测试环境是FIL的闪存卡嘛?网络是万兆吗?glusterfs针对4K小文件随机读写的iometer数值?

  6. lovae
    2014/02/13 at 10:48 上午

    glusterfs 对单文件读写还是很快的,但是大量散文件读写和做列表的时候就很慢了。文件存储的优势其实不比ceph明显啊

  7. xing
    2014/03/19 at 5:29 下午

    HI,最近也在研究ceph,打算用ceph来搭建本地存储,但是目前遇到一个问题:
    使用三台物理机,在每个机器上都开启了mon osd MDS服务,并且同时将三台机器作为客户端挂载,部署的时候没有任何的问题,但是在运行一段时间后,就会出现物理机死机的情况,查看系统日志显示:libceph osd [IP]socket error。不知道你有没有人像我这样尝试过,出现类似的问题,另外本人还想同时使用RBD和CEPHFS。

    regards!

    • wangshuo
      2014/03/19 at 5:36 下午

      我们在简单测试后,觉得glusterfs性能好些,后续使用glusterfs做的共享文件系统,用来存储虚拟机中的内容,ceph没有长时间的使用,不过glusterfs我们在使用过程中发生过文件系统只读的错误
      目前推测出是由于网络连接不畅导致。

  8. Homer
    2014/08/01 at 10:05 上午

    Lustre完爆glusterFS

  9. vida
    2014/10/27 at 6:37 下午

    READ: io=17472MB, aggrb=81667KB/s, minb=81667KB/s, maxb=81667KB/s, mint=219075msec, maxt=219075msec
    WRITE: io=15296MB, aggrb=71496KB/s, minb=71496KB/s, maxb=71496KB/s, mint=219075msec, maxt=219075msec

  10. 2015/04/28 at 11:04 上午

    我在使用glusterfs的过程中碰到一些鸡肋的问题,当在大压力的情况下client端会经常出现Transport endpoint,不知道你们那边是否有这种情况呢

Ning Zhou 进行回复 取消回复