glusterfs

常用命令

列出所有卷

gluster volume list  

查看volume和brick 状态,如果为Y表示正常

gluster volume status

存储卷的停止和删除

gluster  volume stop  volume-name

gluster volume  delete  volume-name

删除brick

gluster volume replace-brick models 192.168.10.220:/data/gluster 192.168.10.220:/data/gluster1 commit force

查看哪些进程正在访问设备

 fuser -cu  /mnt

逻辑卷的设备路径都在

/dev/mapper/vg_xxxxx

如果要格式化带有逻辑卷的设备,需要先卸载或者删除逻辑卷

可以直接清楚vg

vgdisplay

vgremove  xxxx

vg上面的逻辑卷就会自动清除

注意:sgdisk -Z 如果是逻辑卷请谨慎使用,会导致找不到pv和vg等信息,然后无法删除逻辑卷

节点 信息操作

gluster peer status

gluster peer probe sd-cluster-02

gluster peer probe sd-cluster-03

gluster peer status

gluster pool list

heketi-cli --server http://192.168.1.1:8090 --user admin --secret 'xxxxxx' topology load --json=/opt/heketi/topology.json 

报错:

  Adding device /dev/sdj ... Unable to add device: Initializing device /dev/sdj failed (aleady contains Physical Volume LXE7pq-m2SI-7LEQ-2w3b-wNX5-BhjA-UScmiV):   Can't initialize physical volume "/dev/sdj" of volume group "vg_d5dbeddd253cee924d6910470e7d8444" without -ff

解决:

mkfs.xfs  /dev/sdj

报错:

Adding device /dev/sdj ... Unable to add device: Initializing device /dev/sdj failed (already initialized or contains data?): WARNING: xfs signature detected on /dev/sdj at offset 0. Wipe it? [y/n]: [n]
Aborted wiping of xfs.
1 existing signature left on the device.

解决:ssgdisk -Z /dev/sdj  && wipefs --all --force /dev/sdj

报错:

dding device /dev/sdd ... Unable to add device: Initializing device /dev/sdc failed (already initialized or contains data?): Can't open /dev/sdc exclusively. Mounted filesystem?
Can't open /dev/sdc exclusively. Mounted filesystem?

注意:这种情况可能也不能通过格式化或者dd方式解决

解决:

先查看设备挂载的卷

dmsetup ls | grep vg_d75640f79efb696162eaf1588d846f17

过滤  vg_d75640f79efb696162eaf1588d846f17 注意查看上图实际上这个 vg_d75640f79efb696162eaf1588d846f17 就是当初创建的vg名字,如果没清除的话那么在/dev/mapper/下面就有

ls /dev/mapper/vg_d75640f79efb696162eaf1588d846f17开头几个的设备名字

root@sd-cluster-02:~# dmsetup ls | grep vg_d75640f79efb696162eaf1588d846f17
vg_d75640f79efb696162eaf1588d846f17-tp_67f181856908dd5a2c45b4fff6307a4d (253:18)
vg_d75640f79efb696162eaf1588d846f17-tp_67f181856908dd5a2c45b4fff6307a4d-tpool (253:17)
vg_d75640f79efb696162eaf1588d846f17-tp_67f181856908dd5a2c45b4fff6307a4d_tdata (253:16)
vg_d75640f79efb696162eaf1588d846f17-tp_67f181856908dd5a2c45b4fff6307a4d_tmeta (253:14)
vg_d75640f79efb696162eaf1588d846f17-brick_3a871e3cdfcea8060df77ef17ab25786 (253:19)

过虑出来以后再执行下面命令逐个清除。

dmsetup remove   vg_d75640f79efb696162eaf1588d846f17-tp_67f181856908dd5a2c45b4fff6307a4d 

dmsetup remove vg_d75640f79efb696162eaf1588d846f17-tp_67f181856908dd5a2c45b4fff6307a4d-tpool 

...

注意: 如果删除失败,可以通过rm -rf /dev/mapper/ vg_d75640f79efb696162eaf1588d846f17* 再进行上述删除

如果lsblk 查不到该设备的mapper映射信息,有可能是依赖其他文件,或者已经删除了无法查询到,直接通过dmsetup ls 查看所有,通过排除法排除已知的逻辑卷,再删除,就可以了

一个pvc pv 的创建过程

首先在pvc 中制定要创建的pv 大小,以及关联的storageclass

创建以后,sc 会与heketi通讯,heketi会与glusterd创建volume,而volume关联的就是brick。brick 就是一个逻辑卷挂载的目录,实际的存储数据的地方。

而pod 使用pv的方式就是挂载的gluster的volume。如下所示

192.168.1.211:vol_33a052ce428cb63887b92d2f5006d6db 5.0G 109M 4.9G 3%   /var/lib/kubelet/pods/d589074e-c413-427a-b91b-c1dc23ad49af/volumes/kubernetes.io~glusterfs/pvc-0d26e08d-c4a0-4f61-b202-a5e30765bcb7

pvc-0d26e08d-c4a0-4f61-b202-a5e30765bcb7 就是pvc 对应的pv

vol_33a052ce428cb63887b92d2f5006d6db 就是gluster创建的一个volume,通过命令查看卷信息

通过lblk可以看到brick挂载的逻辑卷,注意最终的brick 路径是逻辑卷后面的brick目录

vg_486efc4e2609dfd0b44c178851d581d1 实际上就是一个vg ,

设备映射是这样的

fstab里面会被heketi 更新

gluster 手动创建存储卷

heketic 是用来衔接k8s的,k8s 里面的存储引擎要管理glusterfs的存储的时候是通过heketic 完成的。每个gluster 存储节点上面都有存储的盘,具体使用哪些存储盘通过/opt/heketi/topology.json 配置加载。

当我们想要不只是在k8s 的pv 使用gluster存储,想要传统应用使用存储,这时候需要手动创建gluster volume 。

前提规划一个存储盘来作为brick生成的跟路径,这样创建的brick 存储的数据就会放在这个规划的盘里面:

mkfs.ext4  /dev/sdk

mkdir  /gluster/bricks

mount /dev/sdk  /gluster/bricks

gluster volume create gv-pledge  192.168.1.22: /gluster/bricks/gv-pledge  192.168.1.26: /gluster/bricks/gv-pledge  (如果是两个节点创建brick组成volume 那么两个节点都要执行上面规划存储操作)

注:192.168.1.22:/gluster/bricks/gv-pledge 就是brick ,目录会自动创建

gluster volume list   #查看是否创建成功

gluster volume start  gv-pledge    #必须要启动一下,否则它的状态就是created

mkdir /data/pledge 

mount -t glusterfs  192.168.1.211:gv-pledge  /data/gv-pledge/

报错:ERROR 2020/12/28 11:22:20 heketi/executors/cmdexec/peer.go:80:cmdexec.(*CmdExecutor).GlusterdCheck: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

解决:

去掉安全认证

gluster volume set gv-pledge  server.allow-insecure on

重启volume 再挂载一次即可。

注意命令更改可能导致重启glusterd后失效,可以更改配置文件/etc/glusterfs/glusterd.vol 

原文地址:https://www.cnblogs.com/fanggege/p/14111503.html