一,分布式文件系统
GluterFS概述
1.5GlusterFS企业主要应用场景
Glushter优点:不会出现单点,容量可以扩展,读写性能非常好(具体数据64个节点吞吐量是32GB/S),小文件(小于1M的交给CDN)
缺点:读写速度是32GB/S,但是一般平常使用千兆网卡(1000Mb/8=125MB/S),这样网卡无法承受,但是我们可以将网卡进行bond0绑定,但是无法解决带宽问题
NFS缺点:处理小文件性能不佳,单点问题,磁盘插槽满了磁盘不能扩容
二,部署安装
GlusterFS安装准备
使用本地yum安装createrepo
cd到rpm包里面使用createrepo -v .
将各个节点映射本地文件
vim /etc/hosts
cat /etc/yum.repos.d/CentOS-Media.repo
制作本地yum源
yum -y clean all
yum makecache
yum -y install glusterfs-server glusterfs-cli glusterfs-geo-replication
加入出现一下情况(版本冲突)
测试Glusterfs服务的状态和启停
确保所有的虚拟机的glusterd服务都处于开启状态,并做如下操作
gluster peer probe glusterfs02(主机名)
gluster peer probe glusterfs03(主机名)
以下相同····结果如下所示
我们看它的状态
从存储池中删除节点
[root@node1 ~]# gluster peer detach glusterfs02
peer detach: success
[root@node1 ~]# gluster peer probe glusterfs02
peer probe: success.
可以通过本地光盘源安装xfs支持包(Centos7不需要安装)
yum -y install xfsprogs
xfs是将数据盘的格式弄成xfs的格式,目前式ext4的格式
格式化硬盘
mkfs.ext4 /dev/sdb
基本卷特点:
分布式卷(哈希卷):相当于raid0的读写速度
复制卷:相当于raid1
条带式卷:针对大文件才会用
复合卷特点
分布式复合卷:相当于raid1+raid0
分布式条带卷:针对大文件才会用(例如视频类公司),会将整个文件分成两份平均分给两个节点
复制条带卷:------------
分布式复制条带卷:最安全的,结合分布式复合卷和分布式条带卷特点
以下是分布式卷
volume的两种挂载方式
1.以glusterfs的方式挂载
挂载卷到目录(在glusterfs01上操作)前提条件式本机要安装glusterfs
我们在glusterfs01和glusterfs02上查看/gluster/brick1/目录:
首先gluster01上的/gluster/brick1
gluster02上的/gluster/brick1
2.以NFS的方式进行挂载
挂载之前我们如何打开glusterfs的NFS挂载方式
在主机WebClient上查看挂载情况
df -hT
以下是分布式复制卷
创建分布式条带卷
特点:将挂载之后存储的内容平均分配给两个节点
四,存储卷中brick块设备的扩容
1.分布式复制卷的扩容
[root@WebClient ~]# mount -o nolock -t nfs 192.168.40.148:/gs2 /mnt
[root@WebClient ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 18G 987M 16G 6% /
tmpfs tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 ext4 485M 33M 427M 8% /boot
/dev/sdb ext4 9.9G 151M 9.2G 2% /gluster/brick1
/dev/sdc ext4 9.9G 151M 9.2G 2% /gluster/brick2
192.168.40.148:/gs2 nfs 20G 301M 19G 2% /mnt
我们查看gluster03和gluster04服务器的/gluster/brick1和/gluster/brick2文件内容
再次在WebClient 服务器/mnt创建文件
[root@WebClient ~]# touch /mnt/{11..20}
[root@WebClient ~]# ls /mnt/
1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 9 lost+found
再查看gluster03和gluster04服务器的/gluster/brick1和/gluster/brick2文件内容
我们需要对磁盘平衡操作
队gs2做磁盘平衡
[root@glusterfs04 ~]# gluster volume rebalance gs2 start
volume rebalance: gs2: success: Rebalance on gs2 has been started successfully. Use rebalance status command to check status of the rebalance process.
ID: e9efa11e-6c52-4fa2-9530-49a3a99f4d49
注意:平衡以后需要重新挂载
之后的结果
[root@glusterfs04 ~]# gluster volume heal gs2 full
Launching heal operation to perform full self heal on volume gs2 has been successful
Use heal info commands to check status
常见问题
问题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。
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
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时创建的目录,需要手动删除后再使用。