Glusterfs企业分布式存储技术

构建Glusterfs分部署存储

1.准备工作

  • 内存≥4G,可用磁盘空间大于50G
  • 安装VirtualBox或者VM虚拟软件
  • 安装好4台以上Centos-6-x86_64虚拟机
  • 基本系统:1V-CPU + 1024内存 + 10G硬盘
  • 网络选择:网络地址转换(NAT)
  • 软件包:Basic Server
  • 关闭iptables和selinux
  • 预装glusterfs软件包

2.理论基础

2.1 分布式文件系统的出现

计算机在文件系统管理、存储数据、而现在数据信息大爆炸的时代环境下人们可以获取的数据成指数范围的增加,
单纯的通过增加硬盘的个数来扩展计算机文件系统的存储容量方式,已经远远不能满足目前的市场需求。
所以分布式的文件系就诞生了,可以有效的解决数据存储和管理的难题,将固定于某个地点的某个文件系统,扩展到任意的多个文件系统,
众多的节点组成一个文件系统网络,每一个节点都可以分布在不同的地方,通过网络进行节点间的通信和数据的传输。
人们在使用分布式文件系统的时候,不需要关心数据是否存储在那一个节点上、或者是从那个节点上获取,只需要向使用本地文件系统一样管理和存储文件系统中的数据。

2.2 典型代表

NFS(Network File System),网络文件系统
它允许网络多的计算机之间通过TCP/IP网络共享资源。
在NFS的应用中,本地NFS的客户端应用可以透明的读写位于NFS服务器上的文件,就像访问本地文件一样。
1、节约使用的磁盘空间
    客户端经常是使用的数据可以集中存储放在一台机器上,并且使用NFS发布,那么网络内部所有计算机可以通过网络访问,不需单独的存储。
2、节约硬件资源
    NFS还可以共享软驱,CDROM和zip等存储设备,减少增整个网络的可移动设备的数量
3、用户主目录设定
    对于特殊的用户,如管理员等,为了管理的需要,可能会经常登入到网络中的所有计算机,若每个客户端,均保存这个用户的主目录会很繁琐,而且不能保证数据的一致性。
    实际上,经过NFS服务的设定,然后再客户端指定这个用户主目录位置,并且自动挂载就可以共享文件了。

2.3 在企业中的应用

理论和实际上分析,GlusterFS目前主要适用大型文件存储场景,对于小文件尤其是海量的小文件,存储效率和访问性能都表现不佳。
海量的小文件LOSF问题是工业界和学术界工人的难题,GlusterFS作为通用的分布式文件系统,并没有对小文件作额外的优化措施,性能不好也是可以理解。
Media
-文档、图片、音频、视频
Shared storage
-云存储、虚拟化存储、HPC(高性能计算)
Big date
-日志文件、RFID(射频识别)数据

3.部署安装

3.1 GlusterFS安装

1.修改主机名称
    hostnamectl set-hostaname name  # 设置名称
    /etc/sysconfig/network   # 也可以设置
2.各个主机的解析
    /etc/hosts
        192.168.175.XX  minion-gluster-1
        192.168.175.XX  minion-gluster-2
        192.168.175.XX  minion-gluster-3
        192.168.175.XX  minion-gluster-4
3.关闭iptables和selinux

3.2 安装epel源

yum -y install epel-release

3.3 安装glusterfs源

1.配置清华大学的源就是最新的glusterfs
    网址:https://mirrors.tuna.tsinghua.edu.cn/help/centos/
2.glusterfs官方源
    网址:https://download.gluster.org/pub/gluster/glusterfs/
3.rpm包的下载地址
    地址:https://buildlogs.centos.org/centos/7/storage/x86_64/gluster-3.8/
4.或者直接下repo文件
    yum -y install centos-release-gluster38 (38 = 3.8最新版本4.0)
    这个算是官方的安装方法了 yum search glusterfs (查看可以安装的版本)

3.4 安装配置glusterfs

yum -y install glusterfs* (或者下载源码编译)
1.查看版本信息
    glusterfs -V
2.启动和开启启动
    systemctl start glusterd
    chkconfig glusterfs on
3.存储主机加入信任池
    gluster peer probe minion-gluster-2
    gluster peer probe minion-gluster-3
    gluster peer probe minion-gluster-4
4.查询运行状态
    gluster peer status

3.5 配置前的准备工作(每个机器都执行)

1.安装xfs支持包
    yum -y install xfsprogs (Centos7.0以上系统不需要安装)
2.对新加入的磁盘进行分区
    fdisk /dev/sba   (根据自己的定)
3.对已经分区的磁盘进行格式化
    mkfs.xfs -f /dev/被分的新分区
4.fdisk /dev/盘名称
    4.1 如果挂载了新盘没有获取到:
        1.手动命令 echo "- - -" > /sys/class/scsi_host/hosti/scan (1-32)
        2.自动刷新 for i in {1..32};do echo "- - -" > /sys/class/scsi_host/hosti/scan;done         3.重启reboot     4.2 新盘分区         fdisk /dev/盘名称             n 创建一个新的盘             p              1 盘名称             回车  头起始大小             回车  尾结束大小             p  查看已经创建的新盘             W  保存并且执行 5.格式化刚分区的磁盘     mkfs.xfs /dev/盘名称 6.创建挂载点     mkdir /storage/brock     mount /dev/sdb1 /storage/brock    # 挂载硬盘 7.自动挂载     blkid | echo "`awk '/dev/磁盘名{print 2}'` /storage/brock defaults 0 0" >> /etc/fstab
    cat /etc/fstab (UUID是设备的唯一编号,/dev/盘名称随时可以改变)

3.6 创建Volume与其他操作

1.1卷的介绍
    分布式卷(Distributed):文件通过hash算法随机的分布到bricks组成的卷上。
    复制卷(Replicated):如raid1、replica必须等于Volume中brick所包含的存储服务器,可用性高。
    条带式卷(Striped):类似raid0、stripe,文件被分成数据块,以Round Robin的方式存储在Bricks中,并发粒度是数据块,大文件性能好。
    分布式的条带卷(Distributed Striped):volume中brick所包含的存储服务器必须是stripe的倍数(>=2倍),兼顾分布式和条带式的功能。
    分布式的复制卷(Distributed Replicated):Volume中brick所包含的存储服务器数必须是replica的倍数(>=2),兼顾分布式和复制式的功能。
2.1创建分布式-分布卷
    gluster volume create gv1 主机名1:/storage/brock 主机名2:/storage/brock force (整合A主机与B主机的磁盘)
2.1启动创建的卷
    gluster volume start gv1  (将两块盘整合为一块盘)
    gluster volume info  # 查看volume信息
2.2挂载上新的盘vg1
    mount -t gluster 主机名:/gv1 /mnt
2.3创建新的文件夹查看是否存在
    touch aa.txt b
    cd /mnt | ls  (在其他的主机上挂载查看)
2.4挂载在NFS上
    yum -y install NFS
    umount /mnt  卸载
    mount -o mountproto=tcp -t nfs 主机名称:/gv1 /mnt 

3.1创建分布式复制卷 
    gluster volume create gv2 replica 2 主机名1:/storage/brock 主机名2:/storage/brock force
3.2启动创建的卷
    gluster volume start gv2
    gluster volume info
3.3挂载创建文件查看
    mount -t glusterfs 主机名:/vg2 /mnt
    mkdir or touch 
    然后到其他的主机上挂载,查看是否同步存在。
3.4数据测试-分布式复制卷
    dd if=/dev/zero bs=1024 count=10000 of=/vg2/10M.file
    dd if=/dev/zero bs=1024 count=20000 of=/vg2/20M.file
    dd if=/dev/zero bs=1024 count=30000 of=/vg2/30M.file
    cd /storage/brock | ll -lh 
4.1创建分布式条带卷(该卷类似Raid0)
    gluster volume create gv3 stripe 2 主机名1:/storage/brock 主机名2:/storage/brock force
4.2启动及其查看信息
    不再赘述
4.3挂载(企业标准挂载自建目录)
    mkdir xxx
    mount -t glusterfs 主机名:卷名 /挂载点
4.4数据的测试-分布式条带卷
    任意主机执行:
    dd if=/dev/zero bs=1024 count=10000 of=/vg3/10M.file
    dd if=/dev/sero bs=1024 count=20000 of=/vg3/20M.file
    cd /storage/brock1 | ll -lh  #查询一下实际状态大小(主机1、主机2分别查看)
    cd /vg3 | ll -lh  #查询一下分布式条带卷里面的文件大小
    比较得到:实际的大小由两个服务器平摊,这就是分布式条带卷

5.1如果以后要添加服务器,扩容卷可以使用add-brick命令执行操作
    gluster volume stop gv2  # 停止分布式复制卷,停止时会询问你如下图1
    mkdir /storage/brock2  # 创新新的文件夹
    gluster volume add-brick gv2 replica 2 主机名:/storage/brock2 主机名:/storage/brock2 force  # 如下图2可见
    gluster volume start gv2  # 重新启动下
    umount /vg2  # 因为挂载之前是停止运行的所以系统记录的是原来的信息所以重新挂载一次,如图3
    mount -t glusterfs 主机名:vg2 /gv2
    df -h
    gluster volume info gv2  # 如图4所示
5.2当扩容时候需要注意的事项
    1.每一次的扩容后都需要做一次磁盘卡平衡,因为容量不同,算法不变。
    2.当你给你的分布式复制卷和分布式条带卷增加brick时候,你增加的bricks的数量必须是复制和条带数目的倍数!(比如一个分布式复制卷replica为2,你增加bricks时候数量必须是2的倍数)
    3.扩容后进行测试,发现文件都分布在扩容前的卷中。除非磁盘平衡后
5.3磁盘存储的平衡
    1.侧重点:平衡布局是很有必要性,因为布局的结构是静态的,当新的bricks加入现有的卷后,新创建的文件会分部到旧的bricks中去,所以需要平衡布局结构,以便使新加入的bricks生效,但是并不会在新的布局上移动老的数据,如果想在新的布局生效后,重新平衡卷中的数据,还需要对卷中的数据进行平衡。
    2.命令的执行
        gluster volume rebalance gv2 start  # 平衡不是指完全的平衡,有少量的差异,由算法决定,图片5所示
        gluster volume rebalance gv2 status # 查看平衡的状态
5.4移除brick的注意事项
    注意点:有可能你在想在线缩小卷的大小,当硬件损坏或者网络故障的时候,你可能想在卷中移除相关的bricks.但是,当你在gluster的挂载点将不能继续访问数据,只有配置文件中的信息移除后你才能继续访问brick的数据。
    当移除福不是复制卷或者分布式条带卷的时候,移除的bricks数目必须是replice或者stripe的倍数。
    例如:一个分布式条带卷的stripe是2,当你移除bricks的时候必须是2、4、6、8等等。
5.5执行操作
    gluster volume stop gv2    # 首先停止卷的运行
    gluster volume remove-brick vg2 replica 2 minion-gluster-3:/storage/brock2 minion-gluster-4:/storage/brock2 force   # 移除卷
5.6删除卷
    gluster volume stop vg1
    gluster volume delete vg1 # 详情看图6






如何在企业中构建企业级分布式存储

存在的规划问题

  • 操作系统注意的问题
  • 网络要注意的问题
  • 最好不要随意的更换glusterfs目录,错误直接格式化重来
  • 服务器的规划
  • glusterfs的优化
  • 搭建完成后日常的维护和监控
  • 出现事故磁盘或者主机坏了,要怎么恢复

搭建企业级的

1.硬件的要求
    通常情况下:
        一般选择2U的机型,磁盘STAT盘4T,如果I/O需求比较高,可以采购SSD固态硬盘。为了充分的保证系统的稳定性和性能,要求所有的glusterfs服务器硬件配置尽量为一致.
        尤其是硬盘的数量和大小。机器的RAID卡需要带电池,缓存越大越好,性能也越好。一般的情况下,建议做RAID10
        如果出于空间的要求考虑,需要做raid5,建议最好能有1-2块硬盘的热备盘。
2.系统的要求和分区的划分
    系统要求:
        使用Centos6.X,安装完成后升级到最新版本,安装的时候,不要使用LV,建议/boot分区200M,根分区100G、swap分区和内存一样大,剩余的空间给gluster使用,划分单独的硬盘空间。
        系统安装软件没有特殊要求,建议除了开发工具和基本的管理软件,其他软件一律不安装。
3.网络环境
    网络要求:
        全部千兆的环境,gluster服务器至少有两块网卡,1块网卡绑定gluster使用,剩下的一块分配管理网络IP,用于系统管理。
        如果有条件购买万兆交换机,服务器配置万兆网卡,存储的性能会更加的好,网络方面如果安全要求比较高,可以多绑定网卡。
4.服务器的摆放分布
    服务器的主备机器要放在不同的机柜,连接不同的交换机,及时一个服务器出现问题,还有一份数据正常。

5.构建高性能的高可用的存储
    在一般的企业中,采用的是分布式复制卷,因为有数据备份,数据相对是安全的,分布式条带卷目前对于glusterfs来说没有完全的成熟,存在一定的数据安全风险。

    1.为了保证安装开启防火墙端口
        iptables -I INPUT -p tcp --dport 24007:24011 -j ACCEPT   24007挂载的卷的端口
        iptables -I input -p tcp --dport  38465:38485 -j ACCEPT
    2.vim /etc/gluser/gluster.vol 修改端口

Glusterfs文件系统的优化

Performance.quick.red:优化读取小文件的性能
Performance.io.cache:缓存已经被读过了
Performance.read-ahead:用预读取的方式提高读取的性能,有利于应用频繁持续性的访问文件,当应用完成当前的数据的时候,下一个数据块就已经准备好了
Performance.write.behind:在写数据时候,先写入缓存内,再写入硬盘,以便提高写入的性能
开启性能:
gluster volume set 卷名称 Performance.read-ahead on
gluster volume set 卷名称 Performance.cache-size 256MB
gluster volume info    # 查看修改后的信息

监控及其日常维护

使用Zabbix自带的模板即可CPU、内存、主机存活、磁盘空间、主机运行时间、系统load。日常情况要查看服务器的监控值,遇到报价要及时的处理。
对分布式复制卷的相关操作:
gluster volume status 节点 (经常查看节点是不是在线)
gluster volume heal 卷名称 full (启动完全修复) 
gluster volume heal 卷名称 info  (查看需要修复的文件)
gluster volume heal 卷名称 info healed  (查看修复成功的文件) 
gluster volume heal 卷名称 info heal-failed  (查看修复失败的文件)
gluster volume heal 卷名称 info split-brainn  (查看脑裂的文件)

Glusterfs企业分布式存储技术》有4个想法

  1. You could definitely see your expertise within the work you write. The sector hopes for even more passionate writers such as you who are not afraid to mention how they believe. All the time follow your heart. “If the grass is greener in the other fellow’s yard – let him worry about cutting it.” by Fred Allen.

发表评论