ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# GlusterFS 4.1 深入使用 [TOC] ## 1 基本命令 ```sh gluster peer probe 添加节点 gluster peer detach 移除节点 gluster volume create 创建卷 gluster volume start $VOLUME_NAME 启动卷 gluster volume stop $VOLUME_NAME 停止卷 gluster volume delete $VOlUME_NAME 删除卷 gluster volume quota enable 开启卷配额 gluster volume quota disable 关闭卷配额 gluster volume quota limitusage 设定卷配额 ``` ## 2 增加副本及磁盘平衡 ### 2.1 动态增加副本 glusterfs可以动态的增加副本,但是由于采用的hash方式动态计算出的数据存储位置,因而新增加的副本并不会有数据,需要手动执行磁盘数据平衡才行 ```sh # 添加新副本,要是3的倍数 gluster volume add-brick gv1 replica 3 \ gf-node01:/data/brick3/gv1 \ gf-node02:/data/brick3/gv1 \ gf-node03:/data/brick3/gv1 \ force # 查看资源池信息 [root@gf-node01 ~]# gluster volume info gv1 Volume Name: gv1 Type: Distributed-Replicate Volume ID: e1e004fa-5588-4629-b7ff-048c4e17de91 Status: Started Snapshot Count: 0 Number of Bricks: 3 x 3 = 9 Transport-type: tcp Bricks: Brick1: gf-node01:/data/brick1/gv1 Brick2: gf-node01:/data/brick2/gv1 Brick3: gf-node02:/data/brick1/gv1 Brick4: gf-node02:/data/brick2/gv1 Brick5: gf-node03:/data/brick1/gv1 Brick6: gf-node03:/data/brick2/gv1 Brick7: gf-node01:/data/brick3/gv1 Brick8: gf-node02:/data/brick3/gv1 Brick9: gf-node03:/data/brick3/gv1 Options Reconfigured: transport.address-family: inet nfs.disable: on performance.client-io-threads: off # 查看数据情况 [root@gf-node01 ~]# ls /data/brick*/* /data/brick1/gv1: test1 test2 test4 test5 test8 test9 /data/brick2/gv1: test1 test2 test4 test5 test8 test9 /data/brick3/gv1: ``` ### 2.2 磁盘平衡原因及操作 布局结构是静态的,当新的 bricks 加入现有卷,新创建的文件会分布到旧的 bricks 中,所以需要平衡布局结构,使新加入的 bricks 生效。 布局平衡只是使新布局生效,并不会在新的布局中移动老的数据,还需要对卷中的数据进行平衡。 #### 2.2.1 布局平衡前写入数据并查看位置 ```sh [root@gf-node01 ~]# touch /mnt/aaa{1..9} [root@gf-node01 ~]# ls /data/brick*/* /data/brick1/gv1: aaa2 aaa5 aaa8 test1 test2 test4 test5 test8 test9 /data/brick2/gv1: aaa2 aaa5 aaa8 test1 test2 test4 test5 test8 test9 ``` /data/brick3/gv1: #### 2.2.2 磁盘布局平衡后再写入 ```sh [root@gf-node01 ~]# gluster volume rebalance gv1 fix-layout start volume rebalance: gv1: success: Rebalance on gv1 has been started successfully. Use rebalance status command to check status of the rebala nce process.ID: eeec5c76-88c7-4793-8074-25565270c128 [root@gf-node01 ~]# touch /mnt/bbb{1..9} [root@gf-node01 ~]# ls /data/brick*/* /data/brick1/gv1: aaa2 aaa5 aaa8 bbb3 bbb8 bbb9 test1 test2 test4 test5 test8 test9 /data/brick2/gv1: aaa2 aaa5 aaa8 bbb3 bbb8 bbb9 test1 test2 test4 test5 test8 test9 /data/brick3/gv1: ``` #### 2.2.3 进行磁盘存储平衡后再次查看 ```sh [root@gf-node01 ~]# gluster volume rebalance gv1 start volume rebalance: gv1: success: Rebalance on gv1 has been started successfully. Use rebalance status command to check status of the rebala nce process.ID: 5189b20c-6120-40d7-8e74-0ba114130a24 [root@gf-node01 ~]# ls /data/brick*/* /data/brick1/gv1: aaa1 aaa2 aaa3 aaa5 aaa8 bbb3 bbb5 bbb8 bbb9 test2 test3 test4 test8 /data/brick2/gv1: aaa1 aaa2 aaa3 aaa5 aaa8 bbb3 bbb5 bbb8 bbb9 test2 test3 test4 test8 /data/brick3/gv1: aaa2 aaa4 aaa5 aaa6 aaa7 aaa8 aaa9 bbb1 bbb2 bbb3 bbb4 bbb6 bbb7 bbb8 bbb9 test2 test4 test6 test7 test8 ``` >每做一次扩容后都需要做一次磁盘平衡。数据量大的话平衡很浪费性能,需要提前规划好平衡时间 ## 3 glustefs分布式存储优化 [可以参考](https://blog.51cto.com/dangzhiqiang/1837817) ```sh 命令格式: glustervolume set <卷><参数> 例如: #打开预读方式访问存储 [root@node01 ~]# gluster volume set gv2 performance.read-ahead on #调整读取缓存的大小 [root@mystorage gv2]# gluster volume set gv2 performance.cache-size 256M Auth_allow #IP访问授权;缺省值(*.allow all);合法值:Ip地址 Nfs.disabled #关闭NFS服务;缺省值(Off);合法值:Off|on Network.frame-timeout #请求等待时间;缺省值(1800s);合法值:1-1800 Network.ping-timeout #客户端等待时间;缺省值(42s);合法值:0-42 Cluster.min-free-disk #剩余磁盘空间阀值;缺省值(10%);合法值:百分比 Performance.cache-size #读缓存大小;缺省值(32MB);合法值:字节 Performance.quick-read #优化读取小文件的性能 Performance.read-ahead #用预读的方式提高读取的性能 Performance.io-cache #缓存已经被读过的、 Performance.write-behind #先写入缓存内,在写入硬盘,以提高写入的性能。 Performance.io-thread-count #IO线程数;缺省值(16);合法值:0-65 Performance.cache-refresh-timeout #缓存校验时间;缺省值(1s);合法值:0-61 ```