Glusterfs入门

实验环境  
- 10Gb网络环境
- gluster1  192.168.100.155 三块磁盘
- gluster2  192.168.100.156 三块磁盘
- gluster2  192.168.100.157 三块磁盘
- gluster2  192.168.100.158 三块磁盘

安装配置

gluster1存储节点安装如下,其它节点同样操作

# 格式化磁盘 #
    mkfs.ext4 -T largefile /dev/sdb # 超过2T的磁盘需要加入largefile,简称快格
    mkfs.ext4 -T largefile /dev/sdc
    
# 挂载磁盘 #
    mkdir -p /glusterfs/disk{1,2}/ #创建磁盘挂载目录
    
    vim /etc/fstab # 添加如下内容
    /dev/sdb   /glusterfs/disk1    ext4 defaults 0 2
    /dev/sdc   /glusterfs/disk2    ext4 defaults 0 2
    
    mount -a # 根据/etc/fstab挂载所有磁盘
    mkdir -p /glusterfs/disk{1,2}/data  #挂载完毕后,创建data文件夹
# hosts文件 #
    vim /etc/hosts # 添加如下内容
    192.168.1.155 gluster1
    192.168.1.156 gluster2
    192.168.1.157 gluster3
    192.168.1.158 gluster4    
    
# ntp服务 #
    yum -y install ntp
    service ntpd start
    chkconfig ntpd on
       
#  glusterfs server #
    wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo
    yum -y install glusterfs-server
    service glusterd start
    chkconfig glusterd on
    
****
    gluster  #直接敲gluster,然后按Enter会进入gluster shell环境,就跟bash shell一样,有命令提示功能
    gluster peer probe gluster2  # probe other servers
    gluster peer probe gluster3
    gluster peer probe gluster4    
    gluster peer status #查看gluster peer状态
    
    #创建一个名称为openstack的volume
    gluster volume create openstack stripe 4 replica 2 transport tcp  gluster1:/glusterfs/disk1/data gluster1:/glusterfs/disk2/data gluster2:/glusterfs/disk1/data gluster2:/glusterfs/disk2/data gluster3:/glusterfs/disk1/data gluster3:/glusterfs/disk2/data gluster4:/glusterfs/disk1/data gluster4:/glusterfs/disk2/data
    #stripe:相当于raid0
    #replica:相当于raid1
    #bricks = stripe * replica
    gluster volume start openstack 
    gluster volume info
    
# glusterfs client #
    wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo
    yum -y install glusterfs glusterfs-fuse
    mount -t glusterfs gluster1:/openstack /mnt #挂载volume 
    
    #开机自动挂载glusterfs卷
    cat /etc/fstab
    gluster1:/openstack /mnt glusterfs defaults,_netdev 0 0
    # _netdev:文件系统位于需要网络连接的设备上(系统网络启动时,文件系统才被挂载)


Glusterfs卷类型
    Glusterfs支持五种Volume,即Distribute卷、Stripe卷、Replica卷、Distribute stripe卷和Distribute replica卷,这五种卷可以满足不同应用对高性能、高可用的需求。 
    
    (1)distribute volume:分布式卷,文件通过hash算法分布到brick server上,这种卷是glusterfs的基础和最大特点;    
    
    (2)stripe volume:条带卷,类似RAID0,条带数=brick server数量,文件分成数据块以Round Robin方式分布到brick server上,并发粒度是数据块,大文件性能高;
    
    (3)replica volume:镜像卷,类似RAID1,镜像数=brick server数量,所以brick server上文件数据相同,构成n-way镜像,可用性高;  
    
    (4)distribute stripe volume:分布式条带卷,brick server数量是条带数的倍数,兼具distribute和stripe卷的特点;   
    
    (5)distribute replica volume:分布式镜像卷,brick server数量是镜像数的倍数,兼具distribute和replica卷的特点;
    

GlusterFS specifcation in QEMU

gluster[+transport]://[server[:port]]/volname/image[?socket=...]
    gluster is the protocol. 
    Examples:
    gluster://1.2.3.4/testvol/a.img
    gluster+tcp://1.2.3.4/testvol/a.img
    gluster+tcp://1.2.3.4:24007/testvol/dir/a.img
    gluster+tcp://[1:2:3:4:5:6:7:8]/testvol/dir/a.img
    gluster+tcp://[1:2:3:4:5:6:7:8]:24007/testvol/dir/a.img
    gluster+tcp://server.domain.com:24007/testvol/dir/a.img
    gluster+unix:///testvol/dir/a.img?socket=/tmp/glusterd.socket
    gluster+rdma://1.2.3.4:24007/testvol/a.img


Glusterfs集成flashcache
   Flashcache是Facebook技术团队开发的一个内核模块,通过在文件系统(VFS)和设备驱动之间新增一次缓存层,可以用SSD作为介质的缓存,通过将传统硬盘上的热门数据缓存到SSD上,加速服务器磁盘读写性能。

    #准备编译环境
    flashcache是ko文件,需要在当前版本的内核编译出来的模块才能使用。
    如果安装的目标机器内核版本跟编译机器的内核版本一致,那么如下操作即可:
    yum install -y kernel-devel
    
    #下载flashcache tar包
    wget --no-check-certificate -O flashcache.tar.gz https://github.com/facebook/flashcache/tarball/master
    
    #解压
    tar xf flashcache.tar.gz    
    
    #编译安装
    cd facebook-flashcache-d359499/
    make KERNEL_TREE=‘/usr/src/kernels/2.6.32-431.20.3.el6.x86_64/‘ install    
    
    #编译后的产物拷贝到目标机器
    scp src/{flashcache.ko,utils/*} 192.168.1.191:/root/    
   
    #到目标机器上将相应文件拷贝到相应目录
    mkdir /lib/modules/2.6.32-431.20.3.el6.x86_64/extra/flashcache/
    mv flashcache.ko /lib/modules/2.6.32-431.el6.x86_64/extra/flashcache/
    mv utils/* /sbin/
    depmod -a   
   
    #加载模块
    modprobe flashcache    
    
    #创建flashcache盘映射
    flashcache_create -p back cachedev /dev/vdc /dev/vdb
    使用flashcache_create命令来创建映射,需要如下参数:
        -p back|thru|around 模式writeback,writethrough,writearound
        cachedev 生成lvm映射的盘名
        ssd_devname SSD盘盘符(不需要格式化)
        disk_devname 数据盘盘符
    
    #挂载
    mount /dev/mapper/cachedev  /glusterfs/disk1/
    
    #重新加载flashcache盘映射
    系统重启的时候,需要对flashcache重新加载,使用命令flashcache_load来达到目的,执行完load后再进行挂载。
    flashcache_load /dev/vdc
    
    #删除flashcache盘映射
    使用命令flashcache_destroy来对flashcache映射进行删除操作,删除后mapper映射仍然存在,需要对其进行remove操作:
    flashcache_destroy /dev/vdb
    dmsetup remove /dev/mapper/flashcache
    
    #flashcache内核参数调优
    vim /etc/sysctl.conf
    dev.flashcache.vdc+vdb.skip_seq_thresh_kb = 1024 #超过1M的顺序写直接落到磁盘上


Glusterfs 运维常用命令

    1、删除卷 
    gluster volume stop img 
    gluster volume delete img 
    
    2、将机器移出集群 
    gluster peer detach 172.28.26.102 
    
    只允许172.28.0.0的网络访问glusterfs 
    gluster volume set img auth.allow 172.28.26.* 
    
    3、加入新的机器并添加到卷里(由于副本数设置为2,至少要添加2(4、6、8..)台机器) 
    gluster peer probe 172.28.26.105 
    gluster peer probe 172.28.26.106 
    gluster volume add-brick img 172.28.26.105:/data/gluster 172.28.26.106:/data/gluster
    
    #卷扩容后,需要执行rebalance
    a、执行rebalance前
    getfattr -n trusted.glusterfs.pathinfo nova/   # 查看文件系统的扩展属性,getfattr依赖attr rpm包
    file: nova/
    trusted.glusterfs.pathinfo="((<DISTRIBUTE:openstack-dht> (<REPLICATE:openstack-replicate-0> 
    <POSIX(/mnt/gluster):gluster-1:/mnt/gluster/nova> <POSIX(/mnt/gluster):gluster-2:/mnt/gluster/nova>) (<REPLICATE:openstack-replicate-1> 
    <POSIX(/mnt/gluster):compute-2:/mnt/gluster/nova> <POSIX(/mnt/gluster):compute-1:/mnt/gluster/nova>)) 
    (openstack-dht-layout (openstack-replicate-0 0 4294967295) (openstack-replicate-1 0 0)))"  # (openstack-replicate-0 0 4294967295) hash值

    b、执行rebalance后
    gluster volume rebalance openstack fix-layout start   #  fix-layout不搬迁数据
    volume rebalance: openstack: success: Starting rebalance on volume openstack has been successful.
    ID: a7fc8c7f-a3e2-4783-b59e-3051327e52ec

    getfattr -n trusted.glusterfs.pathinfo nova/          #  再次查看文件系统的扩展属性
    file: nova/
    trusted.glusterfs.pathinfo="((<DISTRIBUTE:openstack-dht> (<REPLICATE:openstack-replicate-0> 
    <POSIX(/mnt/gluster):gluster-1:/mnt/gluster/nova> <POSIX(/mnt/gluster):gluster-2:/mnt/gluster/nova>) (<REPLICATE:openstack-replicate-1> 
    <POSIX(/mnt/gluster):compute-2:/mnt/gluster/nova> <POSIX(/mnt/gluster):compute-1:/mnt/gluster/nova>)) 
    (openstack-dht-layout (openstack-replicate-0 0 2147483646) (openstack-replicate-1 2147483647 4294967295)))"  # hash值重新分布了
    
    4、收缩卷 
    #收缩卷前gluster需要先移动数据到其他位置 
    gluster volume remove-brick img 172.28.26.101:/data/gluster/img 172.28.26.102:/data/gluster/img start 
    #查看迁移状态 
    gluster volume remove-brick img 172.28.26.101:/data/gluster/img 172.28.26.102:/data/gluster/img status 
    #迁移完成后提交 
    gluster volume remove-brick img 172.28.26.101:/data/gluster/img 172.28.26.102:/data/gluster/img commit 
    迁移卷 
    # 将172.28.26.101的数据迁移到,先将172.28.26.107加入集群 
    gluster peer probe 172.28.26.107 
    gluster volume replace-brick img 172.28.26.101:/data/gluster/img 172.28.26.107:/data/gluster/img start 
    # 查看迁移状态
    gluster volume replace-brick img 172.28.26.101:/data/gluster/img 172.28.26.107:/data/gluster/img status 
    # 数据迁移完毕后提交
    gluster volume replace-brick img 172.28.26.101:/data/gluster/img 172.28.26.107:/data/gluster/img commit 
    # 如果机器172.28.26.101出现故障已经不能运行,执行强制提交然后要求gluster马上执行一次同步 
    gluster volume replace-brick img 172.28.26.101:/data/gluster/img 172.28.26.102:/data/gluster/img commit -force 
    gluster volume heal imgs full


Glusterfs内核参数调优 

    vm.dirty_background_ratio = 5  # 5%的意思,根据实际内存大小来定,数据从内存flush到磁盘上,
    vm.dirty_ratio = 20
    vm.dirty_writeback_centisecs = 100  # 100%秒,数据flush到磁盘上
    vm.dirty_expire_centisecs = 3000


Glusterfs TroubleShooting

1、错误: GlusterFS: {path} or a prefix of it is already part of a volume    
解决方法: 
     setfattr -x trusted.glusterfs.volume-id $brick_path
     setfattr -x trusted.gfid $brick_path
     rm -rf $brick_path/.glusterfs
     
2、错误:glusterd服务起不来
解决方法:
     less /var/log/glusterfs/etc-glusterfs-glusterd.vol.log  # 查看这个日志文件,一般都是volume配置文件出错
     cd /var/lib/glusterd/vols
     rm -rf openstack/ ssd/
     service glusterd restart


Glusterfs小知识

1、glusterfs集群中的任意一个节点都可以拿到所有volume的配置文件,不一定是brick的volume的节点
2、挂载glusterfs volume的时候,可以通过管理网挂载,只要这个ip可以到达glusterfs节点就行,它就可以拿到
    volume配置;glusterfs集群数据流量还是走存储网。


参考链接 
刘爱贵glusterfs分布式文件系统研究
flashcache编译安装
QEMU-GlusterFS native integration

时间: 2024-10-03 13:39:48

Glusterfs入门的相关文章

Linux入门之磁盘管理(2)文件系统

Linux入门之磁盘管理(2)文件系统 linux分区构成完成之后,一般需要进行对其创建指定的文件系统,也就是我们常说的格式化,然后对其进行分区挂载,提供指定分区的访问点.不同的分区格式会在文件系统内部提供不同的对该分区的数据存储的格式分配,以及其内部模块会支持不同的分区的接口及方法调用,例如对一个文件的打开.读取.写入.关闭等功能,每个文件系统都会有各种不同的特点. 常见的系统文件系统: linux: ext2.ext3.ext4:xfs(SGI):btrfs(Oracle):reiserfs

Linux入门(一)

一.Linux基础入门 获取知识--->把知识转换成技能 把知识转换成技能: 1.给你一份文档,你就能够做出来,//可能需要数百遍的练习 1.把知识转换成技能的速度 2.把技能转换成生产力的速度 3.只看结果,不看努力 2/8法则,有20%的人,掌握着80%的技能 Tools介绍: Adobe Acrobat Professional7.0 200M //编辑PDf文档 VMware workstation version 12只有120M,短小精悍 32位OS的寻址能力只有4G=2^32次方=

Spark入门实战系列--1.Spark及其生态圈简介

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处,Spark以其先进的设计理念,迅速成为社区的热门项目,围绕着Spark推出了Spark SQL.Spark St

史上最强超融合入门干货:超融合与传统架构特性及收益详细对比

在IT基础架构领域工作有十年了,亲眼目睹和参与了上一代网络存储架构在中国的兴起和衰败.的确,新IT浪潮已经到来,超融合就是诸多风口之一,成为了近几年IT业界备受关注的话题.虽然超融合这个概念已经被厂商热炒了至少两年,但看到市场上依旧存在着很多模糊的定义和理解,所以想整理一些学习笔记和个人见解,希望这些干货内容能对想入门的朋友有所帮助 . 一.超融合的核心特征是什么? 首先大家需要有一个概念,我们看到的这些名词,事实上都是最早推行这些架构的厂商建立起来的,比如Nutanix最早推广的超融合这个概念

虚拟化入门

一.虚拟化技术入门 虚拟化:计算机:CPU,memory,IO(disk networkk),...emulation:纯软件方式实现 //模拟virtulation:把硬件功能分割成多份//拥有一个VMM进行管理分配完全虚拟化:full-virt半虚拟化:para-virt 完全虚拟化: [v1.user][v1.ker ] =========================== |内核| 用户空间| | | [硬件] V1发起的特权指令,不能直接操作硬件//否则会影响其他虚拟机或者物理机 完

大数据入门基础系列之初步认识大数据生态系统圈(博主推荐)

之前在微信公众平台里写过 大数据入门基础系列之初步认识hadoop生态系统圈 http://mp.weixin.qq.com/s/KE09U5AbFnEdwht44FGrOA 大数据入门基础系列之初步认识大数据生态系统圈 1.概述 最近收到一些同学和朋友的邮件,说能不能整理一下 Hadoop 生态圈的相关内容,然后分享一些,我觉得这是一个不错的提议,于是,花了一些业余时间整理了 Hadoop 的生态系统,并将其进行了归纳总结,进而将其以表格的形式进行了罗列.涉及的内容有以下几点: 分布式文件系统

[转帖]新手必读,16个概念入门 Kubernetes

新手必读,16个概念入门 Kubernetes https://www.kubernetes.org.cn/5906.html 2019-09-29 22:13 中文社区 分类:Kubernetes教程/入门教程 阅读(333) 作者:汉科云团队 评论(0) Kubernetes是Google开源的容?集群管理系统,是Google多年?规模容?管理技术Borg的开源版本,主要功能包括: 基于容器的应用部署.维护和滚动升级 负载均衡和服务发现 跨机器和跨地区的集群调度 自动伸缩 无状态服务和有状态

R语言快速上手入门

R语言快速上手入门 课程学习网址:http://www.xuetuwuyou.com/course/196 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本教程深入浅出地讲解如何使用R语言玩转数据.课程中涵盖R语言编程的方方面面,内容涉及R对象的类型.R的记号体系和环境系统.自定义函数.if else语句.for循环.S3类R的包系统以及调试工具等.本课程还通过示例演示如何进行向量化编程,从而对代码进行提速并尽可能地发挥R的潜能.本课程适合立志成为数据科学家的

笔记:Spring Cloud Zuul 快速入门

Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了所有其他微服务的实例信息,这样的设计非常巧妙的将服务治理体系中维护的实例信息利用起来,使得维护服务实例的工作交给了服务治理框架自动完成,而对路由规则的维护,默认会将通过以服务名作为 ContextPath 的方式来创建路由映射,也可以做一些特别的配置,对于签名校验.登录校验等在微服务架构中的冗余问题