基于网络上的多篇文章,做了一些调整。
gluster安装
### Installing Glusterwget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo
yum install glusterfs{-fuse,-server}
启动服务
service glusterd start
chkconfig glusterd on
add rule into iptables file on each gluster server:
vi /etc/sysconfig/iptables:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24008 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 49152:49162 -j ACCEPT
service iptables restart
建立peer关系
gluster peer probe bluejoe6
gluster peer probe bluejoe7
gluster peer status
创建并启动volume
gluster volume create gv0 bluejoe6:/data/gfs bluejoe7:/data/gfs force
# 启动卷
gluster volume start gv0
# 查看卷
gluster volume info gv0
客户端挂载
mount -t glusterfs bluejoe0:/gv0 /mnt/gfs
===================================
部分命令
volume create <NEW-VOLNAME> [stripe <COUNT>] [replica <COUNT>] [transport <tcp|rdma|tcp,rdma>] <NEW-BRICK>?<vg_name>... [force]
# 五种类型的volume可以被创建:
Distributed:分布式卷,文件通过hash算法随机的分布到由bricks组成的卷上。
Replicated:复制式卷,类似raid1,replica数必须等于volume中brick所包含的存储服务器数,可用性高。
Striped:条带式卷,类似与raid0,stripe数必须等于volume中brick所包含的存储服务器数,文件被分成数据块,以Round Robin的方式存储在bricks中,并发粒度是数据块,大文件性能好。
Distributed Striped:分布式的条带卷,volume中brick所包含的存储服务器数必须是stripe的倍数(>=2倍),兼顾分布式和条带式的功能。
Distributed Replicated:分布式的复制卷,volume中brick所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。
# 创建分布卷
gluster volume create gv0 fs-server-1:/data/gfs fs-server-2:/data/gfs
# 创建复制卷
gluster volume create gv0 replica 2 fs-server-1:/data/gfs fs-server-2:/data/gfs
# 创建条带卷
gluster volume create gv0 stripe 2 fs-server-1:/data/gfs fs-server-2:/data/gfs
gluster volume create volume2 stripe 3 replica 2 bluejoe6:/data/gfs-rep1 bluejoe6:/data/gfs-rep2 bluejoe7:/data/gfs-rep1 bluejoe7:/data/gfs-rep2 bluejoe8:/data/gfs-rep1 bluejoe8:/data/gfs-rep2 force
# gluster volume info gluster-volume1 Volume Name: gluster-volume1 Type: Distributed-Replicate Volume ID: 7bed32e1-3ec1-4d67-975e-5ac07f99f481 Status: Created Number of Bricks: 3 x 2 = 6 Transport-type: tcp Bricks: Brick1: bluejoe6:/data/brick1 Brick2: bluejoe7:/data/brick1 Brick3: bluejoe6:/data/brick2 Brick4: bluejoe8:/data/brick1 Brick5: bluejoe7:/data/brick2 Brick6: bluejoe8:/data/brick2
查看volume列表
gluster volume list
查看volume的具体信息(包含bricks的信息)
# gluster volume info
Volume Name: gv0
Type: Distribute
Volume ID: 8bde2ba4-7777-49ff-8b2b-763089017759
Status: Started
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: bluejoe6:/data/gfs
Brick2: bluejoe7:/data/gfs
Brick3: bluejoe8:/data/gfs
#如果以后要添加服务器,可以使用add-brick命令:
gluster volume add-brick gv0 fs-server-3:/data/gfs fs-server-4:/data/gfs
gluster volume remove-brick VOLNAME BRICK
注意:当你给分布式复制卷和分布式条带卷中增加bricks时,你增加的bricks的数目必须是复制或者条带数目的倍数,例如:你给一个分布式复制卷的replica为2,你在增加bricks的时候数量必须为2、4、6、8等。
当移除分布式复制卷或者分布式条带卷的时候,移除的bricks数目必须是replica或者stripe的倍数。例如:一个分布式条带卷的stripe是2,当你移除bricks的时候必须是2、4、6、8等。
============================
常见故障解决方案
问题1
[root@localhost ~]# gluster peer status
Connection failed. Please check if gluster daemon is operational.
原因:未开启glusterd服务
解决方法:开启glusterd服务
/etc/init.d/glusterd start
问题2
[root@localhost ~]# gluster peer probe 192.168.230.130
peer probe: failed: Probe returned with unknown errno 107
原因:日志中打印[2014-05-15 15:55:25.929461] I [glusterd-handler.c:2836:glusterd_probe_begin] 0-glusterd:Unable to find peerinfo for host: 192.168.230.130 (24007)
防火墙没开启24007端口
解决方法:开启24007端口或者关掉防火墙
/sbin/iptables -I INPUT -p tcp --dport 24007 -j ACCEPT # 开启24007端口
/etc/init.d/iptables stop # 关掉防火墙
注:
也可以使用主机名来代替IP,修改/etc/hosts文件实现
gluster peer probe server-130
问题3
volume create volume1 192.168.230.135:/tmp/brick1
volume create: volume2: failed
不能只使用一个server上的brick创建volume,需要至少两个brick,或者在client主机(这里为192.168.230.134)上使用一个brick创建volume。
- gluster> volume create volume1 192.168.230.134:/tmp/brick1 force
- volume create: volume1: success: please start the volume to access data
- gluster> volume info
- Volume Name: volume1
- Type: Distribute
- Volume ID: b01a2c29-09a6-41fd-a94e-ea834173a6a3
- Status: Created
- Number of Bricks: 1
- Transport-type: tcp
- Bricks:
- Brick1: 192.168.230.134:/tmp/brick1
- gluster>
- gluster> volume create volume2 192.168.230.134:/tmp/brick2 192.168.230.135:/tmp/brick2 force
- volume create: volume2: success: please start the volume to access data
- gluster> volume info
- Volume Name: volume1
- Type: Distribute
- Volume ID: b01a2c29-09a6-41fd-a94e-ea834173a6a3
- Status: Created
- Number of Bricks: 1
- Transport-type: tcp
- Bricks:
- Brick1: 192.168.230.134:/tmp/brick1
- Volume Name: volume2
- Type: Distribute
- Volume ID: 4af2e260-70ce-49f5-9663-9c831c5cf831
- Status: Created
- Number of Bricks: 2
- Transport-type: tcp
- Bricks:
- Brick1: 192.168.230.134:/tmp/brick2
- Brick2: 192.168.230.135:/tmp/brick2
问题4
创建一个volume后删除,再使用同名的brick创建volume失败。
gluster> volume create test 192.168.230.134:/tmp/brick1 force volume create: test: success: please start the volume to access data gluster> volume info Volume Name: test Type: Distribute Volume ID: c29f75d2-c9f5-4d6f-90c5-c562139ab9cd Status: Created Number of Bricks: 1 Transport-type: tcp Bricks: Brick1: 192.168.230.134:/tmp/brick1 gluster> volume delete test force Usage: volume delete <VOLNAME> gluster> volume delete test Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y volume delete: test: success gluster> volume create test 192.168.230.134:/tmp/brick1 force volume create: test: failed: /tmp/brick1 or a prefix of it is already part of a volume
因为volume delete时并未删掉create时创建的目录,需要手动删除后再使用。