CentOS5.8glusterfs安装手册

 

 

 

 

 

 

 

 

 

 

 

版本历史

时间

版本

说明

编写者

2014-11-19

1.1

CentOS 5glusterfs安装手册

csc









 

 

 

 

 

 

 

武汉****技术有限公司

 

 

 

 

 

 

 

 

 

前提:centos 5.8 标准系统安装,必须安装开发包和开发库

如果没有bison flex 则需要安装。

yum install bison flex 

 

一、安装篇

源代码安装方案:

1. 安装python2.6.5

 

 wgethttp://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2

tar jxvf Python-2.6.5.tar.bz2

cd Python-2.6.5

./configure --enable-shared  支持64bit

make 

make install

 

将系统默认的python指向到2.6版本

    #mv/usr/bin/python /usr/bin/python.bak (或者rm -rf /usr/bin/python

    #ln -s/usr/local/bin/python2.6 /usr/bin/python

 

vi /etc/ld.so.conf 添加

   /usr/local/lib   

    执行:

    ldconfig -v

   

# python -V

 Python 2.6.5

   

python 升级后,yum 不能使用,请修改如下:

# vi /usr/bin/yum   

 #!/usr/bin/python2.4

  。。。  

 

 

 

2. 安装fuse

tar xvzf fuse-2.8.7.tar.gz

cd fuse-2.8.7

./configure

make

make install

 

fuse测试并检查

lsmod | grep fuse

假如没有, 使用命令

modprobe fuse

lsmod | grep fuse

echo  "modprobefuse" >>/etc/rc.local

 

 

 

3. 安装glusterfs

tar xvzf glusterfs-3.5.3.tar.gz

cd glusterfs-3.5.3

./configure --prefix=/usr/local/glusterfs

 

######################################################

make之前更改/glusterfs-3.5.3/contrib/qemu/util/oslib-posix.c

175行增加:

#undef CONFIG_PIPE2

 

1行增加:

#define UTIME_OMIT   ((1l << 30) - 2l)

#define UTIME_NOW    ((1l << 30) - 1l)

 

备注:centos 6.X 版本不需要执行以上操作。

#######################################################

 

 

然后makemake install

make

make install

 

4. 添加环境变量

更改文件/etc/profile

export PATH=$PATH:/usr/local/glusterfs/sbin

 

5. 启动服务

查看glusterfs的版本号:

glusterfs --version

glusterfs 3.5.3 built on Nov 17 2014 15:10:35

 

启动gluster服务:/etc/init.d/glusterdstart

 

tail -f /usr/local/glusterfs/var/log/glusterfs/*.log

 

####################

RPM 安装方案

RPM 服务端安装

 

官网:http://www.gluster.org/download/下载对应系统的RPM 包,

我下载的是centos 5.X 系列的 3.4.6 版本

-rw-r--r-- 1 rootroot 1378938 Nov 21 17:42 glusterfs-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot   72832 Nov 21 17:42glusterfs-api-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot   27477 Nov 21 17:42glusterfs-api-devel-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot  119818 Nov 21 17:42glusterfs-cli-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot 6655452 Nov 21 17:42 glusterfs-debuginfo-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot  111666 Nov 21 17:42glusterfs-devel-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot   ×××3 Nov 21 17:42glusterfs-fuse-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot  186723 Nov 21 17:42glusterfs-geo-replication-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot  268844 Nov 21 17:42glusterfs-libs-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot   52953 Nov 21 17:42glusterfs-rdma-3.4.6-1.el5.x86_64.rpm

-rw-r--r-- 1 rootroot  577486 Nov 21 17:42glusterfs-server-3.4.6-1.el5.x86_64.rpm

-rw-r--r--1 root root   45551 Nov 21 17:42libibverbs-1.1.3-2.el5.x86_64.rpm

-rw-r--r--1 root root   23367 Nov 21 17:42librdmacm-1.0.10-1.el5.x86_64.rpm

-rw-r--r--1 root root   20786 Nov 21 17:42openib-1.4.1-6.el5.noarch.rpm

-rw-r--r--1 root root 1408260 Nov 21 17:42 xfsprogs-2.9.4-1.el5.centos.x86_64.rpm

 

其中最后4个包是YUM  download only 下载的依赖包,

glusterfs-resource-agents-3.4.6-1.el5.x86_64.rpm不需要安装,已被剔除

 

1.安装方法:

直接上传以上RPM Centos 5.8  64 bit 系统,

执行 rpm -ivh*.rpm  glusterfs 客户端 、服务器端 都已经安装完毕

 

 

2.查看glusterfs的版本号:

[root@gluster1gluster_3.4.6_RPM]# gluster --version

glusterfs 3.4.6built on Nov 13 2014 12:38:38

Repositoryrevision: git://git.gluster.com/glusterfs.git

Copyright (c)2006-2011 Gluster Inc. <http://www.gluster.com>

GlusterFS comeswith ABSOLUTELY NO WARRANTY.

 

3.加载 fuse

modprobe fuse

lsmod | grep fuse

echo  "modprobefuse" >>/etc/rc.local

 

4.启动服务:

 

/etc/init.d/glusterd   start

3.RPM客户端安装:

客户端不需要启动glusterd 服务,只需要有挂载命令,安装的RPM包为:

 

1.安装gluster client RPM

只需要安装以上包中的4个:

rpm -ivhglusterfs-libs-3.4.6-1.el5.x86_64.rpm

rpm -ivhglusterfs-cli-3.4.6-1.el5.x86_64.rpm

rpm -ivhglusterfs-3.4.6-1.el5.x86_64.rpm

rpm -ivhglusterfs-fuse-3.4.6-1.el5.x86_64.rpm

 

 

2.加载 fuse

modprobe fuse

lsmod | grep fuse

echo  "modprobefuse" >>/etc/rc.local

 

 

3.挂载GlusterFS卷到指定目录(/res)

# mkdir /res

# mount -t glusterfs 192.168.20.233:/gv0/res

 

二、配置篇(replica模式)

1、服务器信息:

测试服务器:4ip:192.168.1.1-192.168.1.4

服务端、客户端都需要进行《一、安装篇》部署,

客户端不需要启动glusterd 服务

2、建立分区或磁盘挂在目录

4台服务器都需要创建:

mkdir-p /brick1

3、挂在分区或磁盘到目录

mount  /dev/sda1  /brick1(所有节点执行挂载,分区或磁盘容量要尽量一致(对于replica模式的卷尤为重要,这种模式下会以容量小的分区或磁盘为准))

加入开机启动挂载(例子):

vi  /etc/fstab                                              

......

/dev/sda1              /brick1                 ext3     defaults        0 0

 

也可直接在本地创建目录,不过不好控制磁盘的大小

mkdir  /brick1   

 

4、修改/etc/hosts文件(可省略)

加入各节点机器名与IP对应关系

test01 192.168.1.1

test02 192.168.1.2

test03 192.168.1.3

test04 192.168.1.4

在其他节点做相同操作

 

5、建立peer关系(192.168.1.1上操作)

gluster

gluster>peer probe 192.168.1.2  

gluster> peer probe 192.168.1.3  

gluster> peer probe 192.168.1.4

(以上操作在一台服务器上操作即可,状态将同步到其他服务器)

 

gluster>peerprobe (ip)(后续增加节点时使用)

gluster>peerdetach (ip) (后续删除节点时使用可以使用参数 force

gluster>peer status对等体状态

NumberofPeers: 3

Hostname:192.168.1.2

Uuid:67d37243-4332-4324-b497-92cf3d4fa2c1

State:Peerin Cluster (Connected)

Hostname:192.168.1.3

Uuid:0e8f17ba-c061-4537-ac3a-f625600c6663

State:Peerin Cluster (Connected)

Hostname:192.168.1.4

Uuid:66149333-6235-4bcc-82ae-b2fd011794db

State:Peerin Cluster (Connected)

 

6、建立卷(192.168.1.1上操作)

 

gluster

gluster>volume create gv0 replica 2 192.168.1.1:/brick1  192.168.1.2:/brick1

建立卷时有三种模式:StripeRAID0)、ReplicateRAID1)和DHT(分布式Hash),默认是DHT,  后边跟的数字意思是几个为1组,此示例中为2个为一组建立replica卷,类似RAID1

 

##如果直接在/分区建立的文件夹,会提示/root 分区警告,则需要加上force

gluster>volume create gv0 replica 2 10.8.9.13:/brick1  10.8.9.107:/brick1  force

 

7、向卷中添加brick(192.168.1.1上操作)

gluster>volumeadd-brick gv0 192.168.1.3:/brick1  192.168.1.4:/brick1

可在动态在线增加brick

若是副本卷,则一次添加的Bricks 数是replica 的整数倍;stripe 具有同样的要求

我的动态增加方法(指定两个IP做主备)

gluster>volume add-brick gv0 replica 2 10.8.9.115:/brick1 10.8.9.118:/brick1 force

 

在线增加brick后,还需重新平衡各节点数据。

gluster>volume rebalance gv0 start开始平衡

startingrebalanceon volume gv0 has been successful

gluster>volume rebalance gv0 status

rebalancestep1: layout fix in progress

gluster>volumerebalance gv0 status

rebalancecompleted重新平衡完成

查看卷信息:

gluster> volume info

 

8、启动卷

gluster>volumestart gv0

 

查看卷信息:

       gluster>volume info

卷停止

       gluster>volume stop gv0

 

将创建的卷启动,才能进行客户端挂载;stop能够将系统卷停止,无法使用;此外gluster未提供restart的重启命令

#gluster>volume delete gv0  #删除卷

//删除卷操作能够将整个卷删除,操作前提是需要将卷先停止

 

9、客户端挂载

由于安装包时,安装了gluster客户端,所以测试机同时担当客户端/服务器的角色,

也建议在分布式文件系统这样使用。

mount-t glusterfs  192.168.1.1:/gv0  /data

备注:客户端可任意挂载各节点IP地址,gv0 的数据都是一样的

各节点均可挂载自己ip地址,这也符合gluster的设计思想,无元数据服务器,无单点故障。

 

Mount failed. Please check the log file for more details.

如果报错,则要加载fuse

 

至此,gluster的配置及初期使用已经介绍完毕,配置使用极为简单,理念及步骤清晰,但要想提升性能及在生产环境中使用,还需进一步的测试及优化。

三、测试篇

我的实际环境部署:

在原有的4台节点上,再增加两节点,互为replica 模式,一共6节点:

gluster> volumeinfo

 

Volume Name: gv0

Type:Distributed-Replicate

Volume ID: caa12bc8-31eb-49ca-bd86-cbd31771b010

Status: Started

Number of Bricks: 3 x 2 = 6 

#3Bricks ,每个bricks还有一个备bricks互为replica 2模式

Transport-type:tcp

Bricks:

Brick1:10.8.9.13:/brick1

Brick2:10.8.9.107:/brick1

Brick3:10.8.9.115:/brick1  #新增加

Brick4: 10.8.9.118:/brick1  #新增加

Brick5:10.8.9.112:/brick1

Brick6:10.8.9.114:/brick1

 

测试一:

客户端挂载glusterfs  10.8.9.115 节点,上传总共5G小文件

发现5G小文件被均匀打散,分布在以上六台服务器的/brick1 目录

查看每个节点的/brick1目录,发现:

10.8.9.1310.8.9.107 /brick1 每个文件目录大小一样1.2G

10.8.9.11510.8.9.118 /brick1 每个文件目录大小一样2G

10.8.9.11210.8.9.114 /brick1 每个文件目录大小一样1.8G

以上3组服务器/brick1 目录文件合计5G

测试二:

客户端挂载glusterfs  10.8.9.115节点,上传一个5G的大文件test.img

发现 test.img 只存在10.8.9.11510.8.9.118  /brick1目录

其他服务器没有该文件。

总结:

 replica模式下,增加节点,可以增加整个分布式文件系统的存储总量,并且提升整个文件存储系统的性能,其中的replica模式还能实现数据的高可用性。

replica模式下,不进行对大文件的切割,而是存放在其中一组节点(客户端连接的节点优先)。

 

 

 

四、节点删除、修复篇

 

10.8.9.11510.8.9.118  节点互为 replica 模式

 

移除其中一节点测试:

gluster>peerdetach (ip) (后续删除节点时使用可以使用参数 force

报错:

gluster> peer detach 10.8.9.115

peer detach: failed: Brick(s) with the peer 10.8.9.115exist in cluster

可使用force 删除。(正常环境下,不建议强制删除,这里为了测试所以用force)

gluster> peer detach 10.8.9.115 force

gluster> peer status 

Hostname: 10.8.9.115

Uuid: cef74bc3-64ba-4f74-8a56-113e63eb467d

State: Peer in Cluster (Disconnected)

 

利用命令移除10.8.9.115节点后,客户端执行命令 du -sh  /data 挂载的数据大小不变。

客户端上传数据后,10.8.9.118 /brick1目录数据比 10.8.9.115  /brick1 10M

重新添加节点10.8.9.115 ,

gluster> peer probe 10.8.9.115

查看连接状态正常:gluster> peer status

过一段时间后,10.8.9.118 /brick1目录数据 10.8.9.115  /brick1 数据一样

另外:

如果在10.8.9.115 服务停掉后,rm -rf  /brick1/* 发现 /brick1/ 下面有个

.glusterfs  是用来恢复数据用的,启动节点后,数据直接从.glusterfs里面恢复。

 

 

删除一组节点测试

关闭两台服务器系统 10.8.9.115   10.8.9.118节点。

或者强制删除两个节点。

客户端执行du -sh /data 挂载的数据总大小减少50G。客户端挂载的目录里面文件一部分丢失。

该步骤主要测试:其中一组(主备)服务器丢失后,数据的完整性。

 

重新增加这两台节点,或者系统重启,打开cluster服务,

gluster> peer status 显示的节点数都正常连接后,客户端执行:du -sh /data  挂载的数据总大小恢复。

 

客户端连接节点测试()

客户端连接 10.8.9.115

直接关闭节点10.8.9.115 系统,

查询节点状态出于失效状态:

Hostname: 10.8.9.115

Uuid:2886b235-0983-42a9-a7dc-8b27c5813625

State: Peer inCluster (Disconnected)

 

客户端df -h查询:

glusterfs#10.8.9.115:/gv0  148G 7.5G  133G   6% /data

上传1G的数据,发现数据尽然能上传,并且数据已经分布到其他的节点。

说明,客户端利用glusterfs 挂载目录,连接的节点不存在单点故障。

 

 

五、扩容、缩减篇

缩减节点步骤:

系统的扩容及缩容可以通过如上节点管理、Brick 管理组合达到目的。

(1) 扩容时,可以先增加系统节点,然后添加新增节点上的Brick 即可。

(2) 缩容时,先移除Brick ,然后再进行节点删除则达到缩容的目的,且可以保证数据不丢失

1.移除brick

若是副本卷,则移除的Bricks 数是replica 的整数倍;stripe 具有同样的要求。

因此,副本卷replica 2模式)需要移除一对brick数据会移动到其他的节点上。

 

gluster> volume remove-brickgv0 10.8.9.112:/brick1 10.8.9.114:/brick1

查看状态

gluster> volume remove-brickgv0 10.8.9.112:/brick1 10.8.9.114:/brick1 status

 

2.移除节点:

gluster>peer detach 10.8.9.112

gluster>peer detach 10.8.9.114

 

 

 

###############################################################

替换 /brick1

 

1、先增加一个节点

gluster>peer probe  10.8.9.112

2、替换步骤

 10.8.9.115:/brick1替换到 10.8.9.112:/brick1

 

替换前状态:

 gluster>volume info

Volume Name: gv0

Type: Distributed-Replicate

Volume ID: caa12bc8-31eb-49ca-bd86-cbd31771b010

Status: Started

Number of Bricks: 2 x 2 = 4

Transport-type: tcp

Bricks:

Brick1: 10.8.9.13:/brick1

Brick2: 10.8.9.107:/brick1

Brick3: 10.8.9.115:/brick1

Brick4: 10.8.9.118:/brick1

 

2.1、开始替换

我挂载的目录是一级目录所以提示报错,需要加force

volume replace-brick gv0 10.8.9.115:/brick110.8.9.112:/brick1 start force

 

2.2、查看状态:

gluster> volume replace-brick gv010.8.9.115:/brick1 10.8.9.112:/brick1 status

volume replace-brick: success: Number of filesmigrated = 218   Migration complete

 

2.3commit 提交替换任务

gluster> volume replace-brick gv010.8.9.115:/brick1 10.8.9.112:/brick1 commit

volume replace-brick: success: replace-brick commitsuccessful

 

替换后状态:

gluster> volume info

 

Volume Name: gv0

Type: Distributed-Replicate

Volume ID: caa12bc8-31eb-49ca-bd86-cbd31771b010

Status: Started

Number of Bricks: 2 x 2 = 4

Transport-type: tcp

Bricks:

Brick1: 10.8.9.13:/brick1

Brick2: 10.8.9.107:/brick1

Brick3: 10.8.9.112:/brick1

Brick4: 10.8.9.118:/brick1

 

客户端上传数据,新节点  10.8.9.112  10.8.9.118   /brick目录数据一样,说明2台节点互为主备。

移除掉的节点10.8.9.115 /brick 数据大小,没有发生变化,说明已经被剔除。

这个时候可以删除节点10.8.9.115服务器了

gluster>peer detach 10.8.9.115

       peerdetach: success

 

 

六、系统运维篇

1、系统配额

1.1开启/关闭系统配额

# gluster volume quota VOLNAME enable/disable

//在使用系统配额功能时,需要使用enable将其开启;disable为关闭配额功能命令。

1.2设置(重置)目录配额

# gluster volume quota VOLNAME limit-usage /directorylimit-value

#gluster volume quota dht_vol limit-usage /quota 10GB

//如上,设置dht_vol卷下的quota子目录的限额为10GB

PS:这个目录是以系统挂载目录为根目录”/”,所以/quota即客户端挂载目录下的子目录quota

1.3配额查看

# gluster volume quota VOLNAME list

# gluster volume quota VOLNAME list /directory name

//可以使用如上两个命令进行系统卷的配额查看,第一个命令查看目的卷的所有配额设置,第二个命令则是执行目录进行查看。

//可以显示配额大小及当前使用容量,若无使用容量(最小0KB)则说明设置的目录可能是错误的(不存在)

1.4地域复制、灾备(geo-replication)

# gluster volume geo-replication MASTER SLAVE start/status/stop

地域复制是系统提供的灾备功能,能够将系统的全部数据进行异步的增量备份到另外的磁盘中。

#gluster volume geo-replication dht_vol192.168.2.104:/mnt/sdb1 start

//如上,开始执行将dht_vol卷的所有内容备份到2.104下的/mnt/sdb1中的task,需要注意的是,这个备份目标不能是系统中的Brick

1.5 I/O信息查看

 Profile Command 提供接口查看一个卷中的每一个 brick  IO 信息。

#gluster volume profile VOLNAME start

//启动profiling,之后则可以进行IO信息查看

 

#gluster volume profile VOLNAME info

//查看IO信息,可以查看到每一个BrickIO信息

 

# gluster volume profile VOLNAME stop

//查看结束之后关闭profiling功能

1.6 Top监控

Top command 允许你查看bricks 的性能例如:read, write, file opencalls, file read calls, file write calls, directory open calls, and directoryreal calls

所有的查看都可以设置top 数,默认100

 

# gluster volume top VOLNAME open [brickBRICK-NAME] [list-cnt cnt]

//查看打开的fd

 

#gluster volume top VOLNAME read [brick BRICK-NAME][list-cnt cnt]

//查看调用次数最多的读调用

 

#gluster volume top VOLNAME write [brick BRICK-NAME][list-cnt cnt]

//查看调用次数最多的写调用

 

# gluster volume top VOLNAME opendir [brickBRICK-NAME] [list-cnt cnt]

# gluster volume top VOLNAME readdir [brickBRICK-NAME] [list-cnt cnt]

//查看次数最多的目录调用

 

# gluster volume top VOLNAME read-perf [bsblk-size count count] [brick BRICK-NAME] [list-cnt cnt]

//查看每个Brick的读性能

 

# gluster volume top VOLNAME write-perf [bsblk-size count count] [brick BRICK-NAME] [list-cnt cnt]

//查看每个Brick的写性能

 

 

 

 

gluster 性能优化、报错解决:

peer 节点从一个集群,加入到另外一个集群的时候,节点不能启动 glusterd 报错解决方法:

 

[root@server114 glusterfs]# vi/usr/local/glusterfs/etc/glusterfs/glusterd.vol

volume management

    typemgmt/glusterd

    option working-directory /var/lib/glusterd

    optiontransport-type socket,rdma

    optiontransport.socket.keepalive-time 10

    optiontransport.socket.keepalive-interval 2

    optiontransport.socket.read-fail-log off

#   optionbase-port 49152

 

/var/lib/glusterd  里面有记录信息,删除下面的所有信息,清空历史记录配置文件,服务即可启动

 

 

 

性能调优示例:

gluster volume start file-backup
gluster volume quota file-backup enable
gluster volume quota file-backup limit-usage /800TB
gluster volume set file-backup auth.allow192.168.10.31,192.168.12.27
gluster volume set file-backupperformance.cache-size 4GB
gluster volume set file-backupperformance.flush-behind on
gluster volume info file-backup