简介:现在云计算渐成潮流,对大规模数据应用、可伸缩、高容错的分布式文件系统的需求日渐增长。
Google根据自身的经验打造的这套针对大量廉价客户机的Google GFS文件系统已经广泛的在Google内部进行部署,对于有类似需求的企业而言有相当的参考价值。
Google GFS论文:
http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/no//archive/gfs-sosp2003.pdf
GFS的目标
高性能,可扩展性,可靠性,可用性
在GOOGLE有超过1000个存储节点,超过300TB的数据,上百台终端连接的集群。
设计的假设
1. 组件失败应该当做正常的情况,而不是当做异常来处理。由于分布式文件系统由上百台机器集群组成,会遇到
如应用缺陷,内存,连接,网络或者断电等种种原因,把失败当初一种正常的情况。因此需要集成系统监控,错误监视,
容错处理和自动恢复等功能。
2. 文件要比传统的大,数据将会是G和T级别的。需要重新设计诸如I/O操作和数据块的大小。
3. 文件大部分是一次写,多次读的。
文件系统的接口
1. 提供常用的文件操作,按照树的目录组织文件结构,支持create, delete, open, close, read, write
2. 提供snapshot镜像
3. 提供recode append
GFS的架构
1. GFS集群由单个master节点,和多个chunkserver节点,以及多个client组成。
2. 文件分成固定大小的块64M, 每一份数据保存在3个chunkserver节点上。
3. master节点管理所有文件系统的元数据,包括命名空间,连接控制,文件到块的映射,当前块的位置。
4. client节点向master请求元数据,和chunk server直接进行数据交互。
上百台的机器集群,有很多异常的情况,通过如下两种方式来保证其高可用性
1. 迅速恢复, master和chunk server被设计成能在数秒钟恢复它的状态
2. 每份数据在三台chunk server上保存