CentOS 5.8上glusterfs 3.5.3 安装手册

CentOS5.8glusterfs 3.5.3 安装手册

 

 

 

版本历史


时间


版本


说明


编写者


2014-11-19


1.1


CentOS 5上glusterfs安装手册


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 版本不需要执行以上操作。

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

然后make和make 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

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

二、配置篇(replica模式)

1、服务器信息:

测试服务器:4台ip: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

建立卷时有三种模式:Stripe(RAID0)、Replicate(RAID1)和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的设计思想,无元数据服务器,无单点故障。

至此,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

#3个Bricks ,每个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.13和10.8.9.107 的 /brick1 每个文件目录大小一样1.2G

10.8.9.115和10.8.9.118 的 /brick1 每个文件目录大小一样2G

10.8.9.112和10.8.9.114 的 /brick1 每个文件目录大小一样1.8G

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

测试二:

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

发现 test.img 只存在10.8.9.115和10.8.9.118  的/brick1目录

其他服务器没有该文件。

总结:

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

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

四、节点删除、修复篇

10.8.9.115和10.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.3、commit 提交替换任务

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 SLAVEstart/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信息,可以查看到每一个Brick的IO信息

# 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的写性能

时间: 2024-08-28 02:01:35

CentOS 5.8上glusterfs 3.5.3 安装手册的相关文章

在Linux CentOS 6.6上安装Python 2.7.9

在Linux CentOS 6.6上安装Python 2.7.9 CentOS 6.6自带的是Python 2.6.6,而编译llvm需要Python 2.7以上. checking for python... /usr/bin/python checking for python >= 2.7... not found configure: error: found python 2.6.6 (/usr/bin/python); required >= 2.7 yum中最新的也是Python

阿里云CentOS Linux服务器上搭建邮件服务器遇到的问题

参考文章: 阿里云CentOS Linux服务器上用postfix搭建邮件服务器 Linux系统下邮件服务器的搭建(Postfix+Dovecot) 本来想自己搭建邮件服务器,但是看到一篇资料表示阿里云为了禁止垃圾邮件,禁用了25端口. 可以使用阿里云的邮件推送服务. SMTP之PHP调用示例 email.class.php下载

CentOS系统安装(上):图形/文本界面安装

1. 安装程序:anaconda anaconda是RedHat Enterprise Linux.CentOS.Fedora等系统的安装程序,它支持两种安装方式:图形界面(GUI)方式安装和基于curses图形函数库的文本配置方式安装.这里以安装CentOS为例. 之前在"CentOS系统启动流程"博客中提到,CentOS系统的启动流程大致路线为:POST --> BIOS --> bootloader --> Kernel(有可能借助ramdisk加载驱动) --

在CentOS 6.4上安装Puppet配置管理工具

在CentOS 6.4上安装Puppet配置管理工具 linux, puppetAdd comments 五052013 上篇说了下在ubuntu12.04上安装puppet,安装的版本为puppet2.7.11版本,今天尝试了下在CentOS6.4系统上安装puppet 3.1.1版本,本文参考chenshake的文章 ? 1 2 3 4 OS:centso 6.4 X64 Puppet 3.1.1 Puppet master: master.canghai.com Puppet client

CentOS 6.3上搭建PPTP VPN

系统版本:CentOS 6.3_x86_64 eth0:172.16.10.72(实验环境当公网IP使用) eth1:192.168.100.50 1.检测是否支持ppp模块 # cat /dev/ppp cat: /dev/ppp: No such device or address 如出现上面的结果,表明PPP模块开启,可以继续安装过程. 2.安装ppp # yum -y install ppp iptables 3.安装pptp 下载pptp的rpm包并安装: # wget http://

CentOS 6.5上安装docker与docker对中文字符集的支持

一.CentOS 6.5上安装docker 在CentOS 6.5 还不能够直接通过yum install -y docker 来安装docker服务 在一些文档中有看到说是因为内核太低的原因导致的,因为docker至少要做3.8以上的版本才能安装, 但是我发现其实并不需要升级内核就可以实现docker的安装不过,也有可能我的安装存在偶然性, 但是我还是记录一下,以防日后忘记. 1.先查看下你的系统内核是多少 # uname -r 2.6.32-431.el6.x86_64 我的是CentOS

CentOS 6.9上安装mysql-5.6.37

CentOS 6.9上安装mysql-5.6.37 1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/data,而后需要创建/data/mysqldata目录做为mysql数据的存放目录. [[email protected] /]# mkdir -p /data/mysqldata 2.新建用户以安全方式运行进程: [[email protected] ~]# useradd mysql -s /sbin/nologin -

CentOS 6.5上部署Haproxy

环境说明: 主机名 角色 IP地址 mylinux1.contoso.com Haproxy eth0:192.168.100.121 eth1:172.16.100.121 mylinux3.contoso.com ssh server(做tcp实验用) eth0:192.168.100.181 mylinux4.contoso.com ssh server(做tcp实验用) eth1:192.168.100.182 一.环境准备 以下配置基本上是每一次都要提前准备的,所以准备的命令我就不详细

CentOS 6.5上部署drbd

下面开始在CentOS 6.5上安装并配置drbd,环境的话继续使用之前安装完heartbeat的两台主机,同时也是为后面实现heartbeat存储和数据库高可用做准备,所以如果需要单独操作,请按照之前安装heartbeat的准备工作进行配置,然后根据下面的步骤进行也可以. 1.环境准备 这里我以其中一台为例,介绍准备工作包括哪些点: #检查防火墙是否关闭(或者开启7788端口) [ ~]# iptables -L -n Chain INPUT (policy ACCEPT) target