1. 了解GlusterFS几种存储模式
分布卷(DHT)
默认模式。将文件以hash算法随机分布到一个文件服务器节点中进行存储。Volume创建命令如下:
gluster volume create test-volume server1:/exp1 server2:/exp2
复制模式(AFR)
将文件复制到replica x个文件节点中。Volume创建命令如下:
gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
条带模式(Striped)
类似raid0,将文件切割成多个数据块,分别存储到stripe x个文件节点中。可以通过如下命令创建Volume:
gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
分布式条带模式(组合型)
分布式卷(DHT)和条带模式(Striped)的组合,至少需要4台服务器才能创建。存储时将文件切割成多个数据库,然后每个数据块以hash算法随机分布到一个文件服务器上进行存储。Volume创建命令如下:
gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
分布式复制模式(组合型)
分布式卷(DHT)和复制模式(AFR)的组合,至少需要4台服务器才能创建。将文件以hash算法随机分布到一个文件服务器节点,然后在通过复制算法复制replica x个节点进行保存。创建命令:
gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
条带复制卷模式(组合型)
条带模式(Striped)和复制模式(AFT)的组合型,需要至少4台服务器才可以创建,将文件拆成多个数据块,分别复制存储到replica x个节点上。创建命令如下:
gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
分布式条带复制模式(组合型)
三种模式的组合,至少需要8太服务器才能创建,至少2个服务器组,每个组包含2个条带模式节点和2个复制节点。创建命令:
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
2. 准备工作
搭建集群时采用裸盘进行搭建,因此在搭建前需要保持每个节点至少有2TB的裸跑供集群使用。
-
查看磁盘
通过
lsblk
命令可以查看到当前服务器可用的磁盘空间和挂载情况,如:[root@HP-Map-Dev-1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 99G 0 part ├─centos-root 253:0 0 50G 0 lvm / └─centos-home 253:1 0 41.1G 0 lvm /home sdb 8:16 0 4T 0 disk ├─sdb1 8:17 0 1.8T 0 part │ └─ceph--b5f52a01--2cd7--444a--b0b4--69ab5e16f162-osd--data--1a378cfc--b6ca--4683--9548--f8df231a971f 253:3 0 1.8T 0 lvm └─sdb2 8:18 0 1.8T 0 part └─ceph--b0c5a99a--e838--41bd--8870--ffe829764c36-osd--data--dd2d578c--8def--4ce6--ab6a--ac7bfbf648a3 253:2 0 1.8T 0 lvm sr0 11:0 1 1024M 0 rom rbd0 252:0 0 5G 0 disk /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-edf0192e-174d-43b9-b320-d624e451b77d/globalmount/0001-0009-rook-ceph-0000000000000001-5877653a-28ad-11eb-b1e6-6e4e1efdd373 rbd1 252:16 0 5G 0 disk /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-57dc57d7-0544-4cab-af83-dcc992a89196/globalmount/0001-0009-rook-ceph-0000000000000001-f935ee04-28ac-11eb-b1e6-6e4e1efdd373 rbd2 252:32 0 5G 0 disk /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8f61ac1f-4c86-4a5e-bda2-9194bbbcc9b8/globalmount/0001-0009-rook-ceph-0000000000000001-585cdeea-28ad-11eb-b1e6-6e4e1efdd37
可见rbd0、rbd1、rbd2三个盘挂载到了
/var/lib/kubelet/plugins/kubernetes.io/csi/pv
目录之下。 -
清除已有的lvm
查看当前节点上存在的lvm,在确保lvm中数据可以正常删除的前提下删除原有的lvm分区释放磁盘空间。LVM的删除过程大致如下:- 先卸载系统上面的 LVM 文件系统 (包括快照与所有 LV)
- 使用 lvremove 移除 LV
- 使用 vgchange -a n VGname 让 VGname 这个 VG 不具有 Active 的标志
- 使用 vgremove 移除 VG
- 使用 pvremove 移除 PV
相关示例操作如下:
# 卸载文件系统上的挂载,全部卸载完成后需要再次确认/etc/fstable或其他自动挂载配置是否关闭,否则可能导致重启后挂载失败导致主机无法正常启动 umount /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8f61ac1f-4c86-4a5e-bda2-9194bbbcc9b8/globalmount/0001-0009-rook-ceph-0000000000000001-585cdeea-28ad-11eb-b1e6-6e4e1efdd373/ # 查看lv lvdisplay # 移除LV lvremove /dev/rbd1 # 查看vg vgdisplay # 从vg中删除pv vgreduce centos /dev/sdb # 删除vg vgremove xxxx # 查看pv pvs # 删除pv,注意!!!删除前需要确认pv中是否有数据,如果有数据需要使pvmove将数据移动走,否则会导致数据丢失 pvremove xxxx # 查看lvm常规信息 dmsetup ls # 删除 dmsetup remove xxx
特别注意:在p