分布式存储简述
范型
• 分布式文件系统
名称 GFS 描述 聚焦容错,高吞吐量以及可扩展性
TFSBiblioteka 淘宝内部使用的分布式文件系统,主要针对海量小文件的随机读 写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述 等数据的存储。
Facebook的海量图片存储系统,与TFS类似,降低图片元数据, 减少磁盘访问,提高图片访问速度。 GFS的开源版本 大规模可扩展对象存储,既可通过编程接口或S3、Swift的REST 接口访问对象存储服务;又可通过QEMU/KVM/Linux主机访问 块存储;还可通过内核或Fuse客户端挂载文件系统存储。 红帽存储系统的主要部分,通过Infiniband RDMA 或者Tcp/Ip 方式将许多廉价的x86 主机,通过网络互联成一个并行的网络文 件系统
基础
• 数据和分布式存储分类 • 性能预估方法 • Paxos协议(用来进行主控节点选举)和2PC协议(一个阶段请求,一 个阶段提交,保证多个节点操作原子性,要么全部成功,要么全部失 败)。 Paxos协议在分布式系统中,有两种用法,一种是用来实现分 布式锁Chubby、Zookeeper;一种是用来将用户数据复制到多个数 据中心,如Megastore和Spanner • 数据分布,哈希分布,普通的哈希取模无法满足扩容情况。一致性哈 希DHT,核心思想是构成一个哈希环,数据存在哈希环顺时针临近节 点,避免数据迁移造成影响。顺序分布在bigTable这类分布式表格文 件系统上应用较广,利于顺序检索 • CAP理论,在满足分区可容忍性的话,一致性和可用性不肯能同时满 足。
HayStack HDFS Ceph
GlusterFS
GFS详解
• GFS整体架构
GFS详解
• 系统架构
• GFS Master,主控服务器,维护系统元数据,文件如何分成数据块存放到集群节点的磁盘上,以及 chunk租约管理、chunk复制、垃圾回收。 • GFS ChunkServer 数据块服务器 • GFS client • 上图所示的读写过程
1. 2. 3. 客户端先向服务端请求文件名和chunk Layout(文件分成一个个的trunk存储在磁盘上,以多副本形式保证可靠性) 服务端返回了文件对应的trunk信息和Layout,客户端访问CS读取数据。 Cs返回数据给客户端,完成数据存取过程。
• GFS通过租约机制将写操作权下放到trunk,可以减轻Master的负载。GFS主要是为了追加而不是改写 而设计的,在大文件顺序写性能上优越,但是在多个客户端同时追加可能会造成数据不一致情况,数 据的多个副本追加未完成也可能造成读取到不正确的数据。 • GFS的以64MB为chunk大小来划分文件,每个trunk又可划分为64KB的Block,每个block对应一个 32位的校验和。按每个chunk存储3个副本,1PB的数据所chunk元信息不超过1PB*3 / 64MB * 64 = 3GB。Master对命名空间即目录结构进行了压缩,同一个路径下的两个文件,目录名只在内存中存放 一次。压缩后每个文件的元数据也不超过64字节,1000w文件也不过640M内存,现在的服务器一般 都是支持128G+的内存容量,元数据可以全部存放在内存中,提高存取速度。