GlusterFS 分布式存储部署使用(3)

e. 如果系统不打算将所有磁盘都用于GlusterFS,那么可以在根目录上设置配额。考虑到glusterFS不能充分利用所有的磁盘空间,因此最好将大小设置的比实际空间稍小。

sudo gluster volume quota vol_name limit-usage / 100TB

f. 并且想将这个配额当做磁盘的大小使用,需要执行如下命令,这样df时显示的磁盘大小就是配额了。配额使用的是1024进制的,而非磁盘的1000进制。当配额量超过磁盘量时,df也会显示配额量,因此一定不能这样设置。

gluster volume set vol_name quota-deem-statfs on

以上配额是针对磁盘使用量,另外glusterFS提供文件数量的配额,limit-objects,list-object。可以根据场景使用。

磁盘配额功能gluster volume quota 目录容量达到目标大小时,不是马上生效,而是有一定的时间窗口,(若干秒),在这个时间内,数据还可以写入。这样的特性在配额比较大的时候并不影响,一般不会在短时间内超过太多。

12.raid选型

raid1:适合线上中小文件场景,创建命令如前文。

单磁盘,无raid,raid0三种方式只适合于实验环境,允许数据的丢失,一旦数据丢失,基本上需要从头来过。

raid0:适合大文件实验环境。

sudo gluster volume create vol_name stripe 3 172.17.0.2:/d/disk0 172.17.0.3:/d/disk0 172.17.0.4:/d/disk0 172.17.0.5:/d/disk0 172.17.0.6:/d/disk0 172.17.0.7:/d/disk0

raid10:适合大文件场景。

sudo gluster volume create vol_name replica 2 stripe 3 172.17.0.2:/d/disk0 172.17.0.3:/d/disk0 172.17.0.4:/d/disk0 172.17.0.5:/d/disk0 172.17.0.6:/d/disk0 172.17.0.7:/d/disk0

raid5,raid6等,一般不适合线上环境,但适合geo备份环境,因为是用软件的方式实现raid5等功能,因此cpu开销较大,而且一旦有磁盘损坏,计算的cpu开销更加大,如果在压力较大的线上环境跑,容易造成较大延迟。如果线上的读写压力很小,也可以考虑使用。

raid5:不很推荐,因为不够平衡,容错性太低,而且开销比较大。

sudo gluster volume create vol_name disperse 6 redundancy 1 172.17.0.2:/d/disk0 172.17.0.3:/d/disk0 172.17.0.4:/d/disk0 172.17.0.5:/d/disk0 172.17.0.6:/d/disk0 172.17.0.7:/d/disk0

raid6:可以使用,比raid5平衡,容错性比raid5高很多,开销只是稍大。

sudo gluster volume create vol_name disperse 7 redundancy 2 172.17.0.2:/d/disk0 172.17.0.3:/d/disk0 172.17.0.4:/d/disk0 172.17.0.5:/d/disk0 172.17.0.6:/d/disk0 172.17.0.7:/d/disk0 172.17.0.8:/d/disk0

更为安全的离线geo备份集群raid推荐:(最大可以允许一半的磁盘损坏,具有极高容错性,数据可用性可达10个9)

sudo gluster volume create vol_name disperse 10 redundancy 5 172.17.0.2:/d/disk0 172.17.0.3:/d/disk0 172.17.0.4:/d/disk0 172.17.0.5:/d/disk0 172.17.0.6:/d/disk0 172.17.0.7:/d/disk0 172.17.0.8:/d/disk0 172.17.0.9:/d/disk0 172.17.0.10:/d/disk0 172.17.0.11:/d/disk0

五、    系统特性

1.cache、数据一致性

客户端带有cache,但是该cache并不具备数据一致性,cache的更新是定时更新,默认间隔1秒,也就是说,某个客户端修改或删除一个文件后,需要1秒钟以后,整个集群才能全部感知到,这一秒钟内会存在数据的不一致。因此GlusterFS不适用于数据一致性要求强的数据。对于图片、语音等文件,在应用中做限定,不修改图片,只增加图片,这样数据的一致性问题就不会出现。

客户端的cache会带来性能的提升,因此当集群有一定规模时,合理的规划客户端访问的文件也是有必要的,能够增强cache的利用率。

2.用户、权限

GlusterFS所用的用户是linux自身的用户,linux用户有两个属性,一个是用户名,一个是用户号,linux在文件系统总标识一个文件的权限是用用户号的,而这个用户号可以在GlusterFS之间传递。比如某用户名user1,用户号1001,user1用户创建了文件A,权限是0600。

这时另外一台电脑,有用户名user1,用户号1002,这时该用户不能访问A文件。

但是该电脑有一个用户user3,用户号是1001,该用户号与前面的user1用户号相同,可以访问A文件。

为了让用户名和用户号不冲突,在创建系统用户时,指定一个用户号,并且是不容易被系统自动分配到的区间,这样在集群之间能使用一致的用户权限。

六、    集群规模

客户端或mount进程会跟所有brick连接,并且端口是小于1024的,因此brick数量一定不能超过1024,

在replica模式下,每个服务器有个glusterfs进程会以客户端形式连接每个brick,如果再在这些服务器上要进行mount,那么最大brick数小于500.

由于端口是使用有限的小于1024的端口,因此要注意保留部分常用的端口,如21,22,80,443端口。避免由于端口被占用导致重要服务无法启动。

修改 /etc/sysctl.conf 文件,添加一行,具体端口更据需要设定。

net.ipv4.ip_local_reserved_ports=0-25,80,443

然后执行 sysctl 命令使其生效:

sudo sysctl -p

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/08ea097cd91e49569bd75b94b692f4fe.html