百度的分布式文件系统之路
王耀@百度基础架构部
2016/05/14
• 开源时代
• GlusterFS
• MooseFS
• HDFS
• 自研时代
• CCDB-NFS
• PETA
• AFS
百度分布式文件系统发展之路
• 在线访问
• 低延迟
• 实时读写
• 随机读写
• VFS挂载
• 离线计算
• 高吞吐
• 顺序读写
• HDFS接口
百度的分布式文件系统
AFS
PETACCDB-NFS
• 概念
• dentry
• inode
• block
• 分层
• NameSpace
• FileMeta
• FileData
从VFS到DFS
• Client
• Master
• NameSpace
• FileMeta
• DataNode
• FileData
分布式文件系统
• 简介
• MFS是MooseFS的简称,是一个分布式网络文件系统,
将数据切片分散到多个存储设备上实现数据容错,可
以像本地文件系统一样进行挂载使用。
• 特点
• 类GFS的开源C实现
• 通用文件系统(POSIX支持)
• 高易用性(Mount、Trash、Snapshot……)
MFS
MFS的读写流程
• 问题
• Master元信息单点
• Master单线程性能瓶颈
• 修复与写入互斥
• 改进
• poll->epoll
• 调大hash桶
• fuse调参
MFS的问题和改进
CCDB存储体系
Memory SSD Disk
Replica Block System Raid-like Block System
Table Engine File Engine KV Engine
Replication Recovery Control
Permission Isolation Priority
Table File Object
Hardware
Block
Engine
Distributed
Platform
Interface
• 简介
• CCDB-NFS是CCDB Network File System的简称,是CCDB
存储体系中File Storage的实现。
• 部署上万台,接入上百个业务
• 特点
• 高可用
• 读写强一致
• 支持POSIX
• 支持多租户
• 支持随机读写
• 支持写时修复
• 元信息分布式化
CCDB-NFS
• Master
• 目录树
• 集群管理
• FileServer
• 文件元信息
• 文件数据
CCDB-NFS架构
• 链式复制
• Primary最后Commit
• 读Primary强一致
• 选主简化
CCDB-NFS链式复制
• User
• Region
• ACL
• Quota
CCDB-NFS的多租户支持
• 单机Table引擎存储元信息
• Zookeeper选主
• QJM复制Log
CCDB-NFS的Master HA
AFS新存储体系
• 简介
• AFS是AdvancedFileSystem简称,百度新一代分布式文
件系统,一个类HDFS的C++实现,兼容HDFS接口。
• 在离线混部近十万台,节省上百P存储,节省几千台
预算
• 特点
• 高可用
• 低延迟/高吞吐
• 支持多租户
• 支持多种存储介质
• 支持透明压缩
• 支持EC编码
AFS
AFS系统架构
• pipeline
• dispatch
• quorum
AFS写入延迟优化
• Backup Request
• RTO Timeout
AFS读取延迟优化
• 慢启动
• 反馈机制
Client并发度
AFS慢节点检查
AFS的多存储介质支持
• Flush
• 数据刷到DataNode
• Client故障后,Master会收集恢复数据长度
• Sync
• 数据长度更新到MetaServer
• 支持Truncate,方便计算回滚到上一次Sync位置
AFS Flush & Sync
• DataNode透明压缩
• Client写入时压缩
• 分级压缩(LZ4/LZO->LZMA)
AFS压缩支持
AFS EC编码
Q&A