GFS
GFS是三个单词的第一个字母,全称是Google文件系统。
我们都知道操作系统有自己的文件系统。例如,windows的文件系统是NTFS,Linux的文件系统是ext4,谷歌的文件系统是什么?换句话说,这是一个分布式文件系统,它构建了一个高可用性分布式系统,可以使用低成本的系统来存储大量数据。
集中分布式
我们知道,分布式系统指的是网络上可以互相连接的机器构成的软件系统,它们整体对外提供服务,而面对大量的机器设备,如何管理它们就成为了问题,而谷歌采取的就是我们熟悉的集中分布式,通过一个中央集权设备进行其它设备的管理,为了提高管理效率,这个中央集权设备采用内存存储其它设备节点的信息。为了防止数据的丢失,通过日志的方式记录各个节点操作细心,如果你有过数据库相关的知识的话,你会发现这和mysql和redis的持久化很像。
容错性
谷歌的文件和机器都是普通的廉价机器,为了避免出现问题,所以对数据都进行了备份,也就是一个数据存在了三个地方,两个地方的数据是冗余备份。
当客户端访问文件的时候,可以从三个地方按照一定规则访问。
工作模式
当客户端想要读取或者写入文件的时候,它会通过集中设备master进行写入读取设备的查询,然后master给出文件的路径位置之后,客户端直接和其它文件系统连接操作,这样可以避免master成为系统的瓶颈。
虽然master只有一个,但是它也是有备份的,只有这样才能够保证系统的高可靠性,而对于master的一致性管理,则是通过分布式算法进行数据的同步。
设备块
文件是通过块进行管理的,关于块的大小,谷歌采用的是64M,这个大小的设计可以减少客户端和master之间的通信,因为大部分文件都可以在这个块里写入,但同时,过小的文件也会造成块空间的浪费。
总结
GFS的提出并没有使用很多看似高大上的技术,但是它却实实在在解决了海量数据存储在廉价机器上的愿望。因为它大大减少了成本,所以它的思想被广泛应用,这也是Hadoop诞生的原因。
现在来看,GFS也并非非常完美,但是技术就是这样,它是不断发展前进的,并且它总是伴随着解决实际需求问题而产生发展的。