GFS:为大规模分布式应用程序设计的可扩展的分布式文件系统
1.引言
2.设计概述
-
2.1假设
- 系统由众多廉价的设备组成,他们会经常发生故障,所以系统应该有持续自我检测,故障检测,容错,以及从设备故障中恢复的能力
- 系统存储一定数量的大文件,我们期望有数十上百TB大小的文件,且系统需要对这些文件进行高效的管理
- 系统的负载主要来源于两种读操作:大规模的流式读取与小规模的随机读取,前者通常读取数百KB或者1MB以上的字节,来自同一客户端的读操作可能会连续读文件的某个区域,小规模的随机读取则是读文件的任意偏移量开始的数KB,对于性能敏感的应用程序会批量的随机读取排序后处理,这样可以读连续的文件而不是来回遍历文件
- 系统的负载同样还来源对文件的大规模追加写入,文件一旦被写入就几乎不再会发生修改,系统同样支持小规模的随机写入,但并不需要高效执行
- 数百个客户端并发向一个文件中追加数据的操作是有可能的,所以最小化原子性需要的同步开销是很重要的
- 持续的高吞吐比低延迟更加重要,我们大多数应用程序更注重处理数据,而不是对某个操作有严格的时间限制
-
2.2接口
- 提供常见的文件接口:create,delete, open, close, write, read,同时还支持快照与record append,即前面所提到的并发写入文件
-
2.3架构