1.Glusterfs简介
GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。
说起glusterfs可能比较陌生,可能大家更多的听说和使用的是NFS,GFS,HDFS之类的,这之中的NFS应该是使用最为广泛的,简单易于管理,但是NFS以及后边会说到MooseFS都会存在单点故障,为了解决这个问题一般情况下都会结合DRBD进行块儿复制。但是glusterfs就完全不用考虑这个问题了,因为它是一个完全的无中心的系统。
2.Glusterfs特点
扩展性和高性能
GlusterFS利用双重特性来提供几TB至数PB的高扩展存储解决方案。Scale-Out架构允许通过简单地增加资源来提高存储容量和性能,磁盘、计算和I/O资源都可以独立增加,支持10GbE和InfiniBand等高速网络互联。Gluster弹性哈希(ElasticHash)解除了GlusterFS对元数据服务器的需求,消除了单点故障和性能瓶颈,真正实现了并行化数据访问。
高可用性
GlusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。自我修复功能能够把数据恢复到正确的状态,而且修复是以增量的方式在后台执行,几乎不会产生性能负载。GlusterFS没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT3、ZFS)来存储文件,因此数据可以使用各种标准工具进行复制和访问。
弹性卷管理
数据储存在逻辑卷中,逻辑卷可以从虚拟化的物理存储池进行独立逻辑划分而得到。存储服务器可以在线进行增加和移除,不会导致应用中断。逻辑卷可以在所有配置服务器中增长和缩减,可以在不同服务器迁移进行容量均衡,或者增加和移除系统,这些操作都可在线进行。文件系统配置更改也可以实时在线进行并应用,从而可以适应工作负载条件变化或在线性能调优。
(以上部分内容来源互联网)
3、glusterfs的安装
rpm包安装
官方站点:http://download.gluster.org/pub/gluster/glusterfs/
源码包位置:http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.2/
rpm包:http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.2/RHEL/epel-6.5/x86_64/
glusterfs-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 1.4M | 基础包,server,client都需要 |
|
glusterfs-api-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 63K | api访问是需要安装 |
|
glusterfs-api-devel-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 32K | ||
glusterfs-cli-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 143K | 客户端需要安装的管理工具 |
|
glusterfs-debuginfo-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 8.0M | ||
glusterfs-devel-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 133K | ||
glusterfs-extra-xlators-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 49K | ||
glusterfs-fuse-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 91K | 挂载点 |
|
glusterfs-geo-replication-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 168K | 远程复制 |
|
glusterfs-libs-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 281K | 公共库,需要 |
|
glusterfs-rdma-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 52K | InfiniBandRDMA网络传输协议需要安装的 | |
glusterfs-server-3.6.3-1.el6.x86_64.rpm | 24-Apr-2015 07:49 | 718K | server需要安装 |
测试环境:
192.168.21.18 rhel6.5
192.168.21.19 rhel6.5
yum源配置:
wget -P /etc/yum.repos.d/ http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.3/RHEL/glusterfs-epel.repo
配置好之后就可以很悠然的yum -y install 了
这里呢,因为我只有两台所以不分server和client端,安装的rpm包如下:
glusterfs-libs-3.6.2-1.el6.x86_64
glusterfs-3.6.2-1.el6.x86_64
glusterfs-cli-3.6.2-1.el6.x86_64
glusterfs-api-3.6.2-1.el6.x86_64
glusterfs-fuse-3.6.2-1.el6.x86_64
glusterfs-server-3.6.2-1.el6.x86_64
同时呢我们还安装了两个检测工具:
atop:ftp://rpmfind.net/linux/epel/6/x86_64/atop-1.27-2.el6.x86_64.rpm
fio:ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/fio-2.0.10-1.el6.rf.x86_64.rpm
源码安装:
http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.3/glusterfs-3.6.3.tar.gz
解压:tar zxf glusterfs-3.6.3.tar.gz && cd glusterfs-3.6.3
安装依赖:
yum -y install flex bison openssl openssl-devel libxml2-devel gcc
编译安装:# ./configure && make && make install
4、初体验
先创建一个数据目录,用于存储数据
# mkdir -p /data0/gluster1
glusterfs的配置管理一般有两种方法,直接修改配置文件,这个不推荐,因为它的配置可都是用bison进行解析的,不是那么好写的;一般用的更多的都是直接使用提供的命令管理工具进行,glusterfs会自动的为我们创建出文件的。
# gluster help 可以查看gluster当前支持的所有的命令
# gluster volume hlp 指定查看volume配置的相关命令信息
[root@lvs glusterfs-3.6.3]# /etc/init.d/glusterd start
Starting glusterd: [ OK ]
[root@lvs glusterfs-3.6.3]# gluster volume info
No volumes present
默认情况没有任何的volume
下面我们创建一个:
[root@lvs glusterfs-3.6.3]# gluster volume create help
Usage: volume create
stripe
replica
disperse:哈希卷 默认
redundancy:冗余卷
transport
[root@lvs glusterfs-3.6.3]# gluster volume create testglustervol 192.168.21.19:/data0/gluster1/brick1 192.168.21.19:/data0/gluster1/brick2
volume create: testglustervol: failed: The brick 192.168.21.19:/data0/gluster1/brick1 is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want to override this behavior.
发现报错了,这是因为我们创建的brick在系统盘,这个在gluster的默认情况下是不允许的,生产环境下也尽可能的与系统盘分开,如果必须这样请使用force
[root@lvs glusterfs-3.6.3]# gluster volume create testglustervol 192.168.21.19:/data0/gluster1/brick1 192.168.21.19:/data0/gluster1/brick2 force
volume create: testglustervol: success: please start the volume to access data
[root@lvs glusterfs-3.6.3]# gluster volume info
Volume Name: testglustervol #卷的名称
Type: Distribute #类型是哈希卷
Volume ID: 3a6ed7fe-bfdb-4a9c-a85e-dba2afaefd0b #卷ID
Status: Created #状态还是刚创建,还不能使用,我们需要启动它
Number of Bricks: 2 #brick数量
Transport-type: tcp
Bricks:
Brick1: 192.168.21.19:/data0/gluster1/brick1
Brick2: 192.168.21.19:/data0/gluster1/brick2
启动:
# gluster volume start testglustervol
再看状态会是Started
挂载:# mount -t glusterfs 192.168.21.19:testglustervol /mnt/
现在可以使用了:# cd /mnt/ && touch testfile{1,2,3,4,5,6}
[root@lvs mnt]# ls
testfile1 testfile2 testfile3 testfile4 testfile5 testfile6
[root@lvs mnt]# ls /data0/gluster1/brick1/
testfile5
[root@lvs mnt]# ls /data0/gluster1/brick2
testfile1 testfile2 testfile3 testfile4 testfile6
这里我们创建了6个文件,可以看见被分开存储在了两个brick之中;如果是复制卷,那么两个brick之中都会有一份完整的数据