常用命令
列出所有卷
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