标签:配置信息 use 通过 fuse 高度 read 本地 hdfs 取数据
分布式存储已经研究很多年,但直到近年来,伴随着谷歌、亚马逊和阿里等互联网公司云计算和大数据应用的兴起,它才大规模应用到工程实践中。如谷歌的分布式文件系统GFS、分布式表格系统google Bigtable,亚马逊的对象存储AWS,阿里的TFS等都是很好的代表,同时也催生了一大批优秀的开源分布式存储系统,包括ceph、swift、Lustre和glusterfs等。3、客户端访问流程
? ? 当客户端访问GlusterFS存储时,首先程序通过访问挂载点的形式读写数据,对于用户和程序而言,集群文件系统是透明的,用户和程序根本感觉不到文件系统是本地还是在远程服务器上。读写操作将会被交给VFS(Virtual File System)来处理,VFS会将请求交给FUSE内核模块,而FUSE又会通过设备/dev/fuse将数据交给GlusterFS Client。最后经过GlusterFS Client的计算,并最终经过网络将请求或数据发送到GlusterFS Server上。
三、GlusterFS集群的模式
? ??GlusterFS 集群的模式只数据在集群中的存放结构,类似于磁盘阵列中的级别。
1、分布式卷(Distributed Volume)
? ? 又称哈希卷,近似于RAID0,文件没有分片,文件根据hash算法写入各个节点的硬盘上,优点是容量大,缺点是没冗余。
2、复制卷(Replicated Volume)
? ? 相当于raid1,复制的份数,决定集群的大小,通常与分布式卷或者条带卷组合使用,解决前两种存储卷的冗余缺陷。缺点是磁盘利用率低。
? ? 复本卷在创建时可指定复本的数量,通常为2或者3,复本在存储时会在卷的不同brick上,因此有几个复本就必须提供至少多个brick,当其中一台服务器失效后,可以从另一台服务器读取数据,因此复制GlusterFS卷提高了数据可靠性的同事,还提供了数据冗余的功能。
3、分布式复制卷(Distributed Replicated?Volume)
? ?分布式复制GlusterFS卷结合了分布式和复制Gluster卷的特点,看起来类似RAID10,但其实不同,RAID10其实质是条带化,但分布式复制GlusterFS卷则没有。
4、条带卷(Striped Volume)
? ? 相当于raid0,文件是分片均匀写在各个节点的硬盘上的,优点是分布式读写,性能整体较好。缺点是没冗余,分片随机读写可能会导致硬盘IOPS饱和。
5、分布式条带卷(Distributed?Striped?Volume)
? ? 当单个文件的体型十分巨大,客户端数量更多时,条带卷已经无法满足需求,此时将分布式与条带化结合起来是一个比较好的选择。其性能与服务器数量有关。
?
?
?
用三个节点搭建一个glusterfs集群,再用一个作为客户端使用
?
hostnamectl set-hostname node1.lq.com
每台机子都要做
关闭防火墙及SElinux
systemctl stop firewalld
setenforce 0
vi /etc/hosts
?
192.168.80.100 master
192.168.80.101 slave1
192.168.80.102 slave2
192.168.80.103 client
?
在80.100上:
ssh-keygen -t rsa
ssh-copy-id -i slave1
ssh-copy-id -i slave2
ssh-copy-id -i client
?
?
?
配置yum源为阿里源(在每个节点中都执行)
yum install wget -y
wget http://mirrors.aliyun.com/repo/Centos-7.repo
执行yum源更新命令
yum clean all
yum makecache
?
安装glusterfs
?
在master、slave1、slave2节点安装glusterfs
yum install centos-release-gluster -y
?
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd
systemctl enable glusterd
?
?
?
在 master节点上配置,将两个slave节点加入到gluster集群中。
?
gluster peer probe master
gluster peer probe slave1
gluster peer probe slave2
?
?
查看集群状态:在master上查看
gluster peer status
?
创建数据存储目录(在三个节点上都运行):
mkdir -p /opt/gluster/data
查看volume 状态:
gluster volume info
?
创建GlusterFS磁盘:
?
gluster volume create models replica 3 master:/opt/gluster/data slave1:/opt/gluster/data slave2:/opt/gluster/data force
?
replica 3表明存储3个备份,后面指定服务器的存储目录
?
?
GlusterFS 几种volume 模式指令:
?
一、 默认模式,既DHT, 也叫 分布卷: 将文件已hash算法随机分布到 一台服务器节点中存储。
?
命令:gluster volume create test-volume server1:/exp1 server2:/exp2
?
二、 复制模式,既AFR, 创建volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。
?
命令:gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
?
三、 条带模式,既Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。
?
命令:gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
?
四、 分布式条带模式(组合型),最少需要4台服务器才能创建。 创建volume 时 stripe 2 server = 4 个节点: 是DHT 与 Striped 的组合型。
?
命令:gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
?
五、 分布式复制模式(组合型), 最少需要4台服务器才能创建。 创建volume 时 replica 2 server = 4 个节点:是DHT 与 AFR 的组合型。
?
命令:gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
?
六、 条带复制卷模式(组合型), 最少需要4台服务器才能创建。 创建volume 时 stripe 2 replica 2 server = 4 个节点: 是 Striped 与 AFR 的组合型。
?
命令:gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
?
七、 三种模式混合, 至少需要8台 服务器才能创建。 stripe 2 replica 2 , 每4个节点 组成一个 组。
?
命令:gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8
?
?
再次查看volume信息
gluster volume info
?
?
启动 models
gluster volume start models
?
gluster 性能调优:
?
开启 指定 volume 的配额: (models 为 volume 名称)
gluster volume quota models enable
?
限制 models 中 / (既总目录) 最大使用 10M 空间
gluster volume quota models limit-usage / 10MB
?
设置 cache 大小(此处要根据实际情况,如果设置太大可能导致后面客户端挂载失败)
gluster volume set models performance.cache-size 512MB
?
开启 异步,后台操作
gluster volume set models performance.flush-behind on
?
设置 io 线程 32
gluster volume set models performance.io-thread-count 32
?
设置 回写 (写数据时间,先写入缓存内,再写入硬盘)
gluster volume set models performance.write-behind on
?
调优之后的volume信息
gluster volume info
?
?
?
在客户端上:
部署GlusterFS客户端并mount GlusterFS文件系统
?
yum install -y glusterfs glusterfs-fuse
?
建立挂载点:
mkdir -p /opt/gfsmount
?
mount命令:
mount -t glusterfs 192.168.80.100:models /opt/gfsmount/
?
df 命令检查:df -h
?
测试:
往该目录写入文件,随后查看gluster服务器的存储情况
time dd if=/dev/zero of=/opt/gfsmount/hello bs=100M count=1
?
查看phn机器上/opt/gfsmount 目录
?
查看master机器上/opt/gluster/data目录
?
查看slave1机器上/opt/gluster/data目录
?
查看slave2机器上/opt/gluster/data目录
?
可以看到gluster服务器的每个节点上都有备份,符合之前设置的3个备份的原则
?
?
?
其他命令
?
查看GlusterFS中所有的volume:
gluster volume list
?
删除GlusterFS磁盘:
gluster volume stop models //停止名字为 models 的磁盘
gluster volume delete models //删除名字为 models 的磁盘
?
注: 删除 磁盘 以后,必须删除 磁盘( /opt/gluster/data ) 中的 ( .glusterfs/ .trashcan/ )目录。
否则创建新 volume 相同的 磁盘 会出现文件 不分布,或者 类型 错乱 的问题。
?
?
卸载某个节点GlusterFS磁盘
gluster peer detach swarm-node-2
?
设置访问限制,按照每个volume 来限制
gluster volume set models auth.allow 10.6.0.,10.7.0.
?
?
添加GlusterFS节点:
gluster peer probe swarm-node-3
gluster volume add-brick models swarm-node-3:/opt/gluster/data
?
配置卷
gluster volume set
?
缩容volume:
先将数据迁移到其它可用的Brick,迁移结束后才将该Brick移除:
gluster volume remove-brick models slave1:/opt/gluster/data slave2:/opt/gluster/data start
?
在执行了start之后,可以使用status命令查看移除进度:
gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status
?
不进行数据迁移,直接删除该Brick:
gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit
注意,如果是复制卷或者条带卷,则每次移除的Brick数必须是replica或者stripe的整数倍。
?
扩容:
?
gluster volume add-brick models swarm-node-2:/opt/gluster/data
?
修复命令:
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit -force
?
迁移volume:
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data start
?
pause 为暂停迁移
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data pause
?
abort 为终止迁移
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data abort
?
status 查看迁移状态
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status
?
迁移结束后使用commit 来生效
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit
?
?
均衡volume:
gluster volume models lay-outstart
gluster volume models start
gluster volume models startforce
gluster volume models status
gluster volume models stop
标签:配置信息 use 通过 fuse 高度 read 本地 hdfs 取数据
原文地址:https://blog.51cto.com/14158288/2355828