近两年,SDS挺火。做SDS的厂商也很多,如VMware的vSANNutanix,传统存储厂商EMC也有自己的SDS产品。有调查机构显示,SDS在未来将超过传统存储,看起来SDS的前景还是光明的。

SDS那么火,你家有没有?_java

  既然软件定义存储这么火,红帽有没有?结果当然是有。不仅有,而且有两个。一个是Gluster,一个是Ceph。实际上,gluster作为开源的SDS解决方案,在很多行业都有实际应用的案例,如HPC、广电行业等。而Ceph作为这几年挺火的一个开源项目,适合与OpenStack相结合。

SDS那么火,你家有没有?_java_02

 

     Gluster2011年被红帽收购,随后开源;Ceph2014年被红帽收购,随后也开源。因此有朋友可能质疑红帽会用Ceph替代Gluster,其实不是这样。GlusterCeph的特性不同,适用场景也不同。Gluster可以被认为是基于开源软件的分布式NAS,可以为物理机/虚拟机/容器提供存储空间,而ceph的对象存储和块设备功能则更适合与OpenStack对接。

 SDS那么火,你家有没有?_java_03

   Gluster作为分布式的SDS解决方案,集群节点数最多可到数千,其总容量在PT级。Gluster提供多种连接方式,Samba、NFS、FUSE等,linux原生支持FUSE。Gluster作为存储集群。利用多台X86服务器的本地文件系统,通过服务器之间的以太网络,组成统一对外命名空间(说接地气点就是一个统一mount点,方便用户或应用访问)。本地文件系统类型可以是ext4或者xfs等。文件系统可以位于一整块本地磁盘/一个分区、本地磁盘组成的Lun/一个分区。而服务器这个文件系统(当然是被gluster使用的),我们叫它为BRICK.


  谈到SDS就不能不提到数据平面和控制平面两个层次。数据平面已经介绍。而控制平面,目前gluster能够创建的volume基本类型可以条带化、复制卷、分布式卷、以及纠删码四种。除此之外,还可以进行两两组合,如条带化-复制卷(如果数据有两份,则类似于传统存储的RAID0+1)等。

   下面我对部分类型进行说明。

   分布式卷,说简单点,就是把各个服务器的BRICK空间拼起来,存数据的时候顺序存放。


 复制卷就是对数据做副本,数据的各个副本存放于不同的brick上:

SDS那么火,你家有没有?_java_04


Two-way Distributed Replicated Volumes,就是复制-分布巻。两个卷都是复制卷,各对应两个brick,然后两个卷的空间拼接起来,对外提供空间。数据存放的时候,在拼接卷上顺序存放。

SDS那么火,你家有没有?_java_05
Dispersed卷基于erasure coding(EC)技术。也就是纠删码技术。我们知道在物理存储里,Raid5,raid6都是有校验码的,它们的好处是省空间。SDS那么火,你家有没有?_java_06

 本着“少说教,多上干货”的原则。笔者从头安装配置了一遍Gluster,其配置很简单,方便。虽然使用命令行,但命令行也十分友好。那么gluster配置有多方便呢?“6条命令卷配好,8条命令卷可用(被客户端)”。


  红帽gluster安装有两种方式:1.自行安装linux操作系统,然后通过yum方式在线安装gluster。2.直接使用gluster的iso,里面包含linux操作系统和gluster软件。笔者采用的是第二种方法。


 rhgs-3.1-u3-rhel-7-x86_64-dvd-1大小为891M。它是一个包含gluster的精简linux系统。

SDS那么火,你家有没有?_java_07
  iso的安装和我们装esxi的方式一样。将iso放到u盘里引导服务器启动。如果是个人实验环境,也可以挂载到虚拟机的虚拟光驱里。

  从光盘启动:

SDS那么火,你家有没有?_java_08

选择安装软件,都选上即可。

SDS那么火,你家有没有?_java_09

  过5分钟左右,系统就安装完了。


 接下来,就是配置gluster的步骤,一共是是六步:

 步骤1:配置集群节点的解析。我的实验环境的gluster节点有3个。


 步骤2:启动gluster服务:


  步骤3:创建brick。这里我们需要注意,brick是一个创建好的文件系统路径。它可以是一个独立的文件系统,也可以是一个文件系统的一个目录。但我们推荐用独立的文件系统。而这个文件系统通常在本地盘的一个分区上。由于试验环境资源有限,笔者在已有文件系统中创建一个目录,因此这个brick相当于使用目录所在的文件系统,这在生产上并不推荐。


 步骤4:添加节点到集群:


  步骤5:创建卷:


我们看到,这个卷是一个复制卷,有两份数据。分别存放于gnode2和gnode3的本地brick中(/davidwei)。

  步骤6:启动卷


  到这里,服务器端的gluster卷已经配置好。接下来我们在client挂载gluster的卷。


   步骤7:首先在客户端操作系统中安装gluster的客户端fuse模块:


  步骤8:mount卷:


SDS那么火,你家有没有?_java_10

至此,客户端已经能够看到并使用gluster卷了。


Gluster除了给物理机操作系统使用之外,还可以为虚拟化环境的hypervisor提供共享存储。(类似vSAN为esxi提供datastore)。


在之前的文章中,笔者提到过红帽的KVM虚拟化软件RHEV。RHEV连接存储有两种方案,接SAN存储或者接Gluster。如果应用时基于大量小文件的随机读写,那么建议对接SAN存储。如果是大文件顺序或者随机读写,那么建议使用gluster方案。

SDS那么火,你家有没有?_java_11
SDS那么火,你家有没有?_java_12

RHEV与gluster的对接也很方便:

登录到RHEV-M上,创建存储域,创建的时候,类型选择GlusterFS。

SDS那么火,你家有没有?_java_13


路径指定gluster节点名和逻辑卷名:

SDS那么火,你家有没有?_java_14

过几十秒,就可以看到gluster的lv1已经被rhev创建成了一个datastore,可以供不同的hypervisor之间做共享存储,支持虚拟机的vmotion。

SDS那么火,你家有没有?_java_15


总结:

  至此,gluster的基本配置和与RHEV对接就介绍完了。后续笔者会分享更多的内容。

  最后,笔者放几张图,展示一下gluster比较适用的几个场景,诸位可以作为参考。

SDS那么火,你家有没有?_java_16

SDS那么火,你家有没有?_java_17
SDS那么火,你家有没有?_java_18
SDS那么火,你家有没有?_java_19