前言
文件系统:用于存储和管理文件的相关系统。
分布式存储优点:
GFS介绍
GFS:glusterFS 开源的分布式的文件系统
存储服务器,客户端,网络(用NFS/samba组成网关)
传统式老的分布式系统元服务器,元服务器保存存储节点的目录树信息。
一旦元服务器故障,所有的存储节点全部失效
GFS自身的机制根据定制策略,把数据存储进去。
现在GFS取消了元服务器机制,数据横向扩展能力更强。可靠性更强,存储效率也更高。
GFS的特点
GFS组件和术语
存储服务器提供的用于物理存储的专用分区,GFS当中的基本存储单元。也是对外提供的一个存储目录。
服务和目录的绝对路径组成
server:dir
192.168.233.10:/opt/gfs
主机名:node1:/opt/gfs
一个逻辑卷就算一组brick集合。类似于lvm我们管理gfs,就算管理这些卷。
GFS的内核模块,允许用户创建自己的文件系统
内核空间对用户提供的访问磁盘的接口。虚拟端口
GFS工作流程:
文件通过 HASH 算法分布到所有 Brick Server 上,这种卷是 GlusterFS 的默认卷;以文件为单位根据 HASH 算法散列到不同的 Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的 RAID0, 不具有容错能力。
在该模式下,并没有对文件进行分块处理,文件直接存储在某个 Server 节点上。 由于直接使用本地文件系统进行文件存储,所以存取效率并没有提高,反而会因为网络通信的原因而有所降低。
#示例原理:
File1 和 File2 存放在 Server1,而 File3 存放在 Server2,文件都是随机存储,一个文件(如 File1)要么在 Server1 上,要么在 Server2 上,不能分块同时存放在 Server1和 Server2 上。
#分布式卷具有如下特点:
文件分布在不同的服务器,不具备冗余性。
更容易和廉价地扩展卷的大小。
单点故障会造成数据丢失。
依赖底层的数据保护。
类似 RAID0,文件被分成数据块并以轮询的方式分布到多个 Brick Server 上,文件存储以数据块为单位,支持大文件存储, 文件越大,读取效率越高,但是不具备冗余性。
#示例原理:
File 被分割为 6 段,1、3、5 放在 Server1,2、4、6 放在 Server2。
#条带卷特点:
数据被分割成更小块分布到块服务器群中的不同条带区。
分布减少了负载且更小的文件加速了存取的速度。
没有数据冗余
将文件同步到多个 Brick 上,使其具备多个文件副本,属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。
复制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。但因为要保存副本,所以磁盘利用率较低
#示例原理:
File1 同时存在 Server1 和 Server2,File2 也是如此,相当于 Server2 中的文件是 Server1 中文件的副本。
#复制卷特点:
卷中所有的服务器均保存一个完整的副本。
卷的副本数量可由客户创建的时候决定,但复制数必须等于卷中 Brick 所包含的存储服务器数。
至少由两个块服务器或更多服务器。
具备冗余性
分布式复制卷
分布式卷的特点:
文件数据通过HASH算法分布到设置的所有BRICK SERVER上。GFS的默认卷。文件级别属于RAID0,没有容错机制。
分布式卷模式下,没有对文件进行分块,直接存储在某个server的节点上,存取的效率 也没有提高。直接使用本地文件进行存储。
复制卷:类似于raid1,文件会同步在多个brick server上,读性能很高,写性能会稍差。
复制卷具备冗余,坏一个节点不影响数据,但是要保存副本,磁盘利用率50%
分布式复制卷:两两复制,文件会在组内同步,不同的组之间数据未必同步。
实验部署
服务器 | IP | 磁盘 | 挂载点 |
node1 | 20.0.0.10 | /dev/sdb1 /dev/sdc1 /dev/sdd1 |
/data/sdb1 /data/sdc1 /data/sdd1 |
node2 | 20.0.0.20 | /dev/sdb1 /dev/sdc1 /dev/sdd1 |
/data/sdb1 /data/sdc1 /data/sdd1 |
node3 | 20.0.0.30 | /dev/sdb1 /dev/sdc1 /dev/sdd1 |
/data/sdb1 /data/sdc1 /data/sdd1 |
node4 | 20.0.0.50 | /dev/sdb1 /dev/sdc1 /dev/sdd1 |
/data/sdb1 /data/sdc1 /data/sdd1 |
客户机 | 20.0.0.110 |
!!组件gluster必须得用epel源下载
添加磁盘,并且以下操作是同步与node1,node2,node3,node4
cd /opt
vim fdisk.sh
#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
do
echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
mkfs.xfs /dev/${VAR}"1" &> /dev/null
mkdir -p /data/${VAR}"1" &> /dev/null
echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null
做映射(4台同步)
yum -y install centos-release-gluster
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl restart glusterd
到此,环境搭建完成
卷名 | brick |
fbsj | node1:/data/sdb1 node2:/data/sdb1 |
cd /opt
gluster volume create fbsj node1:/data/sdb1 node2:/data/sdb1 force
gluster volume create:创建新卷 默认就是分布式卷
fbsj1:卷名 唯一不可重复,不可数字开头
node1:/data/sdb1 node2:/data/sdb1:不同的挂载点
force:强制创建
gluster volume start fbsj
gluster volume info fbsj
查看详细信息
systemctl stop firewalld
setenforce 0
yum -y install glusterfs glusterfs-fuse
做映射
vim /etc/hosts
20.0.0.10 node1
20.0.0.20 node2
20.0.0.30 node3
20.0.0.50 node4
临时挂载
mkdir -p /test/fbsj
mount.glusters node1:fbsj1 /test/fbsj
df -h
永久挂载:
vim /etc/fstab
node1:fbsj1 /test/fbsj glusterfsf defaults,_netdev 0 0
写入测试:
cd /test/fbsj/
ls
touch {1..5}.txt
卷名 | brick |
fzj | node2:/data/sdc1 node3:/data/sdc1 |
gluster vOLume create fzj replica 2 node2:/data/sdc1 node3:/data/sdc1 force
replica 2:设置复制策略,
2:表示两两复制
该数字必须小于等于存储节点
gluster volume start fzj
mkdir -p /testfzj
ls
mount.glusterfs node1:/fzj /test/fzj
卷名 | brick |
fbfz | node1/data/sdd1 node2 /data/sdd1 node3 /data/sdd1 node4 /data/sdd1 |
gluster volume create fbfz relica 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
gluster volume
客户端:
mkdir fbfz
mount.glusterfs node1:fbfz /test/fbfz
分布式复制卷是最常用的分布式存储方式,根据策略,存储文件时是分布式存储的存储方式,分开存储,但是会进行复制。所以也拥有冗余的功能,但是磁盘利用率只有50%
相关命令
#其他的维护命令:
1.查看GlusterFS卷
gluster volume list
2.查看所有卷的信息
gluster volume info
3.查看所有卷的状态
gluster volume status
4.停止一个卷
gluster volume stop dis-stripe
5.删除一个卷,注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则删除不成功
gluster volume delete dis-stripe
6.设置卷的访问控制
#仅拒绝
gluster volume set dis-rep auth.deny 192.168.73.11
#仅允许
gluster volume set dis-rep auth.allow 192.168.73.* #设置192.168.80.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)