Gluster FS分布式文件系统_java

Gluster FS分布式文件系统_java_02

       在大数据、互联网和云计算时代,分布式文件系统得到迅速发展,在每个行业都有至少一款被青睐文件系统,如HPC中的GPFS、Lustre,媒资行业的StroNext,大数据中的HDFS、Google  FS,商用SDS的后起之秀Ceph  FS等等,它们都继承了SDS的传统,采用商用X86硬件部署,支持Scale  Out扩展,提供丰富服务接口满足不同场景的应用需求。

       今天我们讨论下来自遵循GNU开源文件系统GlusterFS,它具备是Scale-Out能力,  通过扩展能够支持数PB存储容量和处理数千客户端。  支持X86部署,支持文件和Block服务。基于弹性Hash算法管理数据,  Gluster FS和Ceph一样被RadHat所收购。GlusterFS支持IP或InfiniBand  RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。
 

       Gluster FS架构简介
       Gluster  FS由Brick  Server、Client和NAS网关组成(用来访问存储服务,但是Client只支持Linux,其他系统需要NAS网关提供存储服务),三者可以部署到同一个物理服务器上。NAS网关通过启动GLFS  Client提供存储服务。
       每个文件通过一定策略分不到不同的Brick  Server上,每个Brick  Server通过运行不同进程处理数据请求,文件以原始格式以EXT、XFS和ZFS文件系统的保存在本地。
       卷(Block)通过位于Client或NAS网关上的卷管理器来提供服务,由卷管理器管理集群中的多个Brick  Server。存储节点(Brick  Server)对外提供的服务目录称作Brick,一个Brick对应一个本地文件系统,Gluster  FS以Brick为单位管理存储。
Gluster FS分布式文件系统_java_03
       GlusterFS采用模块化、堆栈式的架构,可通过灵活的配置支持高度定制化的应用环境,比如大文件存储、海量小文件存储、云存储、多传输协议应用等。每个功能以模块形式实现,然后以积木方式进行简单的组合,即可实现复杂的功能。比如,Replicate模块可实现RAID1,Stripe模块可实现RAID0,通过两者的组合可实现RAID10和RAID01,同时获得高性能和高可靠性。

       各个功能模块就是一个Xlator(translator),不同的xlator在初始化后形成树,每个xlator为这棵树中的节点动态加载,同一个xlaror可以同时在Client/Brick  Server上加载。


       Gluster FS扩展性和高性能
       GlusterFS利用双重特性来提供几TB至数PB的高扩展存储解决方案。Scale-Out架构允许通过简单地增加资源来提高存储容量和性能,磁盘、计算和I/O资源都可以独立增加,支持10GbE和InfiniBand等高速网络互联。Gluster弹性哈希解除了GlusterFS对元数据服务器的需求,消除了单点故障和性能瓶颈,真正实现了并行化数据访问。
 
       Gluster FS高可用性
        GlusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。自我修复功能能够把数据恢复到正确的状态,而且修复是以增量的方式在后台执行,几乎不会产生性能负载。GlusterFS没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT、XFS和ZFS)来存储文件,因此数据可以使用各种标准工具进行复制和访问。
 
       Gluster FS全局统一命名空间
       全局统一命名空间将磁盘和内存资源聚集成一个单一的虚拟存储池,对上层用户和应用屏蔽了底层的物理硬件。存储资源可以根据需要在虚拟存储池中进行弹性扩展,比如扩容或收缩。当存储虚拟机映像时,存储的虚拟映像文件没有数量限制,成千虚拟机均通过单一挂载点进行数据共享。虚拟机I/O可在命名空间内的所有服务器上自动进行负载均衡,消除了SAN环境中经常发生的访问热点和性能瓶颈问题。


        Gluster FS数据卷管理
       逻辑卷可以从虚拟化的物理存储池进行独立逻辑划分而得到。存储服务器可以在线进行卷的增加和移除,不会导致应用中断。这些操作都可在线进行。文件系统配置更改也可以实时在线进行并应用,从而可以适应工作负载条件变化或在线性能调优。支持对卷进行快照操作,快照位于卷的根目录Snap/目录下面,用户可以直接访问。
 
       Gluster FS丰富的服务协议
       Gluster存储服务支持NFS,  CIFS,  HTTP,  FTP以及Gluster原生协议(私有协议),完全与POSIX标准兼容。

Gluster FS分布式文件系统_java_04

       这在公有云环境中部署Gluster时非常有用,Gluster对云服务提供商专用API进行抽象,然后提供标准POSIX接口。


      Gluster FS读写IO流

       在客户端应用程序侧,用户通过GlusterFs的mount point 来读写数据,用户的这个操作被转化成系统调用递交给本地linux系统的VFS来处理。VFS 将数据递交给FUSE内核处理(在启动 GlusterFs 客户端以前,需要注册一个实际的文件系统FUSE,该文件系统与ext3在同一个层次), 而FUSE文件系统则是将数据通过/dev/fuse 这个设备文件递交给了GlusterFs client端。实际上 FUSE文件系统理解为一个代理。

Gluster FS分布式文件系统_java_05

       数据被FUSE递交给GlusterFs client 后,GlusterFs client 对数据进行一些指定的处理(按照client 配置文件据来进行的一系列处理),通过GlusterFs client的处理之后,通过网络将数据递交给 Glusterfs Server,并且将数据写入到服务器所控制的存储设备上,完成整个数据流的处理。


       Gluster FS弹性哈希算法
       GlusterFS采用弹性哈希算法(文件采用EC跨节点切片)在存储池中定位数据,而不是采用集中式或分布式元数据服务器索引。GlusterFS中,所有在Scale Out存储配置中的存储系统都可以智能地定位任意数据分片,不需要查看索引或者向其他服务器查询。卷在Brick  Server之间采用RAID5来保证可靠性,可以允许一个Brick Server故障。