GlusterFS分布式文件系统

2020-02-27 189浏览

  • 1.GlusterFS 分布式文件系统 2014/12/27
  • 2.关于我        刘爱贵,中科院博士 研究方向:分布式存储 专注于存储技术的研究与开发 分布式存储资深理论研究与实践者 GlusterFS技术专家 博客:http://blog.csdn.net/liuaigui微博:http://weibo.com/liuagEmail:aigui.liu@gmail.com QQ:9187434
  • 3.报告提纲     GlusterFS简介 GlusterFS原理剖析 GlusterFS应用场景 GlusterFS开放问题
  • 4.(一) GlusterFS简介
  • 5.GlusterFS is a unified, poly-protocol, scale-out filesystem serving many PBs of data. • 用户空间设计,全局统一命名空间,堆栈式架构 • scale-out在线扩展,数百节点,数PB数据 • 一切皆文件,block+object+file
  • 6.GlusterFS标签 分布式 文件系 统 集群 NAS 无中心 架构 标准 硬件 POSIX 高性能 自修复 自动 复制 ScaleOut 高可用 全局统 一命名 空间 Infin iband
  • 7.GlusterFS起源
  • 8.GlusterFS发展简史 GlusterFS = GNU Cluster File System GlusterFS v3.4 Libgfapi Quorum 机制 虚拟机存储优化 同步复制优化 POSIX ACL 支持 GlusterFS v3.3 对象存储,HDFS兼容 主动自修复 细粒度锁 复制优化 GlusterFS v3.2.x 远程复制,监控,Quota Redhat 1.36亿$收购Gluster GlusterFS v3.1 弹性云能力 GlusterFS v1.0 – v3.0 分布式文件系统,自修复 同步副本,条带,弹性哈希算法 创始人:Anand Babu Periasamy 目标:代替开源Lustre和商业产品GPFS
  • 9.Story of Gluster
  • 10.• 最大特点是简单:架构、使用、管理 • 完全对称式架构,无元数据服务器 • 全UserSpace设计,Stack式扩展 (源自Hurd) • Scale-out,高可用(无单点故障) • 支持多种访问协议,支持RDMA
  • 11.• 最简单配置和管理的分布式文件系统 • 使用gluster单一命令行工具管理 − probe peer, create volume, start volume, mount • 极其简便的系统管理 − 集群关系,进程管理,端口映射,动态配置变更 − online集群节点扩展/收缩 − online集群参数变更 − 系统升级
  • 12.• 极其简便的管理和维护 • Block/File/Object统一存储 • 模块化扩展架构 • 支持IP/RDMA传输协议 • Data locality • Compute/Virtualization透明存储系统
  • 13.GlusterFS高性能记录
  • 14.GlusterFS社区部署 300,000 + 下载:35,000/月,每年增长300%+ 1000 + 部署案例(45个国家) 2000 + 注册用户
  • 15.GlusterFS商业部署
  • 16.GlusterFS中国用户 Confidential
  • 17.(二) GlusterFS原理剖析
  • 18.GlusterFS架构设计目标
  • 19.GlusterFS架构特点 软件定义 无中心架构 全局命名空间 高性能 用户空间实现 堆栈式设计 弹性横向扩展 高速网络通信 数据自动修复
  • 20.GlusterFS总体架构
  • 21.GlusterFS服务进程
  • 22.全局统一命名空间 通过分布式文件系统将物理分散的存储资源虚拟化成统一的存储池 文件系统 卷管理 GlusterFS RAID
  • 23.无集中元数据服务
  • 24.Gluster集群管理  集群管理模型  全对称(如Corosync)   缺点:规模小[<100] 优点:无需配置 单独的控制集群(如Zookeeper)  优点:规模大[>1000] 缺点:需要配置控制集群 Gluster采用全对称式集群管理  Gluster节点之间的配置信息是完全一致的 每个配置信息改动操作需要在多节点同步 优化同步算法,可支持500+节点 
  • 25.GlusterFS堆栈式软件架构
  • 26.GlusterFS基本概念 Brick  ● ● A filesystem mountpoint A unit of storage used as a GlusterFS building block Translator  ● ● Logic between the bits and the Global Namespace Layered to provide GlusterFS functionality Volume  ●  Bricks combined and passed through translators Node / Peer ● Server running the gluster daemon and sharing volumes
  • 27.Translators
  • 28.弹性哈希算法    无集中式元数据服务 − 消除性能瓶颈,提高可靠性 采用Hash算法定位文件 − 基于路径和文件名,一致性哈希DHT 弹性卷管理 − 文件存储在逻辑卷中 − 逻辑卷从物理存储池中划分 − 逻辑可以在线进行扩容和缩减
  • 29.弹性Hash算法流程 file1 /data1/file1 file2 /data2/file2 file3  hash hash hash hash   GlusterFS volume brcik1 brick2 brick3 brick4 /data3/file3 1、使用Davies-Meyer算法计算32 位hash值,输入参数为文件名; 2、根据hash值在集群中选择子卷 (存储服务器),进行文件定位; 3、对所选择的子卷进行数据访问。 Brick Hash range Brick1 00000000 ~ 3FFFFFFF Brick2 4FFFFFFF ~ 7FFFFFFF Brick3 8FFFFFFF ~ BFFFFFFF Brick4 CFFFFFFF ~ FFFFFFFF
  • 30.GlusterFS卷类型  基本卷     哈希卷(Distributed Volume) 复制卷(Replicated Volume) 条带卷(Striped Volumes) 复合卷     哈希复制卷(Distributed Replicated Volume) 哈希条带卷(Distributed Striped Volume) 复制条带卷(Replicated Striped Volume) 哈希复制条带卷(Distributed Replicated Striped Volume)
  • 31.GlusterFS卷数据分布 哈希卷 条带卷(RAID0) 复制卷(RAID1) 条带复制复合卷(RAID10)
  • 32.GlusterFS命名空间 三种基本集群各由一个translator来实现,分别由自己独 立的命名空间,使用自己的机制进行独立的维护和管理。 分布式集群,文件通过HASH算法分散到集群节点上,每 个节点上的命名空间均不重叠,所有集群共同构成完整的 命名空间,访问时使用HASH算法进行查找定位。  复制集群类似RAID1,所有节点命名空间均完全相同,每 一个节点都可以表示完整的命名空间,访问时可以选择任 意个节点。  条带集群与RAID0相似,所有节点具有相同的命名空间, 但对象属性会有所不同,文件被分成数据块以Round Robin方式分布到所有节点上,访问时需要联动所有节点 来获得完整的名字信息。 
  • 33.数据副本一致性模型  数据强一致性    Chain replication Direct replication(√) Master-slave replication
  • 34.GlusterFS系统交互
  • 35.GlusterFS访问接口
  • 36.GlusterFS数据流
  • 37.FUSE访问
  • 38.NFS/CIFS访问
  • 39.libgfapi访问
  • 40.Distributed Hash Table (DHT) Server A File X Server C Server B File Y ● ● GlusterFS弹性扩展的基础 确定目标hash和brick之间的映射关系
  • 41.添加节点 Server D Server A File X Server C Server B File Y ● 添加新节点,最小化数据重新分配 ● 老数据分布模式不变,新数据分布到所有节点上 ● 执行rebalance,数据重新分布
  • 42.容量负载均衡 ● Hash范围均衡分布,节点一变动全局 ● 目标:优化数据分布,最小化数据迁移 ● 数据迁移自动化、智能化、并行化
  • 43.文件更名 Brick1 Brick2 FileA FileB FileB ● 文件更名:FileA  FileB ● 原先的hash映射关系失效,大文件难以实时迁移 ● 采用文件符号链接,访问时解析重定向
  • 44.容量负载优先 FooBar Brick1 Brick2 FooBar FooBar Brick3 ● 设置容量阈值,优先选择可用容量充足brick ● Hash目标brick上创建文件符号链接 ● 访问时解析重定向
  • 45.Split Brain Client 1 Client 2 write “foo” write “bar” Server A Server B network partition ● 裂脑如何产生的? ● 解决方法:1、报错处理;2、Quorum方法(N=2?);3、仲裁机制
  • 46.Dispersed Volume(纠错码)
  • 47.SSD Cache/Tier
  • 48.(三) GlusterFS应用场景
  • 49.• Media − 文档、图片、音频、视频 • Shared storage − 云存储、虚拟化存储、HPC • Big data − 日志文件、RFID数据
  • 50.配置参数调优  Gluster volume set <卷> <参数> 参数项目 说明 缺省值 合法值 Auth.allow IP访问授权 *(allow all) Ip地址 Cluster.min-free-disk 剩余磁盘空间阈值 10% 百分比 Cluster.stripe-block-size 条带大小 128KB 字节 Network.frame-timeout 请求等待时间 1800s 0-1800 Network.ping-timeout 客户端等待时间 42s 0-42 Nfs.disabled 关闭NFS服务 Off Off on Performance.io-thread-count IO线程数 16 0-65 Performance.cache-refresh-timeout 缓存校验周期 1s 0-61 Performance.cache-size 读缓存大小 32MB 字节
  • 51.FUSE性能优化    更多的mountpoint,更多的并发访问 Mount –o max_read 1048576 修改FUSE内核模块:每请求最大为128KB fuse_i.h中, #define FUSE_MAX_PAGES_PER_REQ 256 原先为32,每page为4KB,256*4KB= 1MB。重新编译FUSE模块,替换系统中的 fuse.ko。
  • 52.SSD系统优化       I/O schedule算法 CPU多核绑定 请求列队和最大请求数 禁用merge/rotational/read_ahead/barrier 分区/卷4KB对齐 文件系统开启SSD支持选项
  • 53.KVM优化        使用QEMU-GlusterFS(libgfapi)整合方案 gluster volume setgroup virt tuned-adm profile rhs-virtualization KVMhost:tuned-adm profile virtual-host Images和应用数据使用不同的volume 每个gluster节点不超过2个KVM Host (16 guest/host) 提高响应时间    减少/sys/block/vda/queue/nr_request Server/Guest:128/8 (缺省值256/128) 提高读带宽   提高/sys/block/vda/queue/read_ahead_kb VM readahead:4096 (缺省值128)
  • 54.QEMU-GlusterFS集成
  • 55.
  • 56.
  • 57.解决方案-广电非编 存储需求: 1、可用存储容量,根据业务发展弹性扩展; 2、聚合带宽,可扩展至数GB; 3、非编工作站通过CIFS访问,单客户端稳定的带宽 4、提供冗余可用性,保证业务不中断;
  • 58.解决方案-HPC 存储需求 1、存储容量,可扩展至PB级 2、带宽数GB,单客户端可达GB级 InfiniBand网络 3、超大文件,几GB至几十GB 4、支持高可用机制(副本或冗余) 数十节点GlusterFS集群
  • 59.解决方案-医院PACS 医学影像设备 PACS影像系统 医生诊断工作站 存储需求: 1、存储容量数十TB 2、文件数量百万级 3、文件大小MB级 4、并发多台台工作站 5、通过FTP协议访问 6、提供高可用保证 远程管理工作站 GlusterFS集群
  • 60.解决方案-视频监控 GlusterFS集群 存储需求: 1、实现集中管理,统一监控, 可以进行7×24小时全天候的 实时监控 2、提供大容量和高并发码流 监控 网络 3、综合成本低,基于以太网 4、扩展能力强,组网灵活 5、NAS易于使用管理
  • 61.解决方案-视频点播 注入集群 GlusterFS节点1 存储需求: 1、存储容量,可在线扩展至PB级 2、文件数量千万级,文件大小MB级以上 3、 聚合带宽要求,NFS协议访问 4、单台注入和播出服务器带宽要求 5、并发视频流的服务能力要求 点播集群 GlusterFS节点2
  • 62.解决方案-视频渲染 渲染集群 数百台 GlusterFS集群 数十节点 存储需求: 1、存储系统可以平滑扩容,后期达到PB级; 2、文件数量达到数百万量级,多数为MB级文件; 3、 百级/千级节点并发访问文件服务器; 4、保证数据可用性;
  • 63.(四) GlusterFS开放问题
  • 64.GlusterFS问题          元数据性能 海量小文件问题 集群管理模式 容量负载均衡 数据分布问题 数据可用性问题 数据安全问题 Cache一致性问题 详细情况:http://blog.csdn.net/liuaigui/article/details/20941159
  • 65.3.7开发计划       小文件性能优化 SSD Cache/Tier 回收站功能 基于策略的Split-brain解决方法 Rebalance性能改善 详细情况:http://www.gluster.org/community/documentation/index.php/Planning37
  • 66.4.0开发计划      千级规模集群支持 弹性DHT 2.0 Stripe 2.0 一致性客户端Cache 灵活副本 详细情况:http://blog.csdn.net/liuaigui/article/details/17314801 
  • 67.GlusterFS未来发展     Ceph一统天下??? Lustre继续独占鳌头HPC MooseFS前途堪忧 GlusterFS前途光明(道路曲折?)  大道至简,Keep It as Simple and Stupid  文件存储,云存储,海量小文件   弹性,扩展性,灵活性 RAS-P特征
  • 68.Q&A