GFS分布式文件系统
前言
GFS:由存储服务器(brick server)、客户端以及NFS/Samba存储网关组成
特点:
- 扩展性和高性能
- 高可用性
- 全局统一命名空间
- 弹性卷管理
- 基于标准协议
常用术语:
- brick: GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
- volume:卷
- FUSE: 内核文件系统,Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。
- VFS:虚拟文件系统
- Glusterd: Gluster management daemon,要在trusted storage pool中所有的服务器上运行。
GFS结构:
- 模块化堆栈式架构
- 通过对模块的整合,实现复杂的功能
弹性HASH算法:
- 通过hash算法得到一个32位的整数
- 划分为N个连续的子控件,每个空间对应一个brick
- 弹性hash算法的优点
- 保证数据平均分布在每一个brick中
- 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
1.GFS的卷类型有哪些
- 分布式卷
- 条带卷
- 复制卷
- 分布式条带卷
- 分布式复制卷
- 条带复制卷
- 分布式条带复制卷
1.1分布式卷
- 没有文件进行分块处理
- 通过扩展文件属性保存hash值
- 支持的底层文件系统有ext3、ext4、ZFS、XFS等
- 特点
- 文件分布在不同的服务器,不具备冗余性
- 更容易和廉价的扩展卷的大小
- 单点故障会造成数据丢失
- 依赖底层的数据保护
- 创建命令
gluster volume create dis-volume server1:/dir1 server2:/dir2
1.2条带卷
- 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个brick server节点
- 存储大文件时,性能尤为突出
- 不具备冗余性,类似raid 0
- 特点:
- 数据被分割成更小块分不到快服务器集群中的不同条带区
- 分布减少了负载且更小的文件加速了存取的速度
- 没有数据冗余
- 创建命令
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
1.3复制卷
- 同一个文件保存一份或者多份副本
- 复制模式因为要保存副本,所以磁盘利用率低
- 多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为总容量
- 特点:
- 卷中所有的服务器均保存一个完整的副本
- 卷的副本数量可由客户创建的时候决定
- 至少有两个块服务器或者风度哦的服务器
- 具备冗余性
- 创建命令
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
1.4分布式条带卷
- 兼顾分布式卷和条带卷的功能
- 主要用于大文件的访问处理
- 至少最少需要4台服务器
- 创建命令
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
1.5分布式复制卷
- 兼顾分布式卷和复制卷的功能
- 用于需要冗余的情况下
- 创建命令
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
2.GFS部署
2.1环境准备
VMware Workstation
centos7,IP地址:192.168.73.100,主机名 node1,添加四块硬盘,分别为3G、4G、5G、6G
centos7,IP地址:192.168.73.101,主机名 node2,添加四块硬盘,分别为3G、4G、5G、6G
centos7,IP地址:192.168.73.102,主机名 node3,添加四块硬盘,分别为3G、4G、5G、6G
centos7,IP地址:192.168.73.103,主机名 node4,添加四块硬盘,分别为3G、4G、5G、6G
centos7,IP地址:192.168.73.104,主机名client,测试用
- 将使用到的卷名和信息
卷名称 | 卷类型 | 空间大小/GB | brick |
---|---|---|---|
dis | 分布式卷 | 12 | node1(/e6)node2(/e6) |
stripe-volume | 条带卷 | 10 | node1(/d5)node2(/d5) |
rep-volume | 复制卷 | 5 | node3(/d5)node4(/d5) |
dis-stripe | 分布式条带卷 | 12 | node1(/b3)node2(/b3)node3(/b3)node4(/b3) |
dis-rep | 分布式复制卷 | 8 | node1(/c4)node2(/c4)node3(/c4)node4(/c4) |
2.2添加磁盘格式化并挂载
- 虚拟机设置----添加----硬盘,下一步----SCSI(推荐),下一步----创建新的虚拟磁盘,下一步----最大磁盘大小(自定义),勾选将虚拟磁盘拆分成多个文件,下一步----完成,相同方法添加其他的磁盘(除了client客户机),磁盘添加后需要重启一下才能识别到磁盘
- 创建磁盘分区,仅以node1为例,相同方法格式化其他主机新添加的磁盘
[root@node1 ~]# fdisk -l '//查看磁盘是否添加成功'
[root@node1 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x5fae534e 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n '//创建分区'
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p '//创建主分区'
分区号 (1-4,默认 1): '//回车,默认分区号'
起始 扇区 (2048-6291455,默认为 2048): '//回车,默认扇区大小'
将使用默认值 2048
Last 扇区, +扇区 or +size{
K,M,G} (2048-6291455,默认为 6291455