我所理解的Google file system

这里写自定义目录标题


谷歌文件系统是构建在普通而不是专门服务器之上的大型的分布式文件处理系统。为了兼容廉价服务器,个别服务器的故障被视作正常现象来进行处理,以一套独特的系统自动容错,在大力降低成本的同时保证了文件储存传输的可靠性和易操作。
谷歌文件系统主要有由3大部分组成:主服务器是总控核心,数据块服务器来处理不同的数据块,与主服务器连接的客户端(廉价服务器)。系统把文件分为固定大小的64MB的数据块来使用,为了保证唯一性,主服务器在分配时会给每一个数据块一个64位确定的代号;数据块服务器接着以普通的Linux文件的形式将数据块存储在磁盘中。为了保证可靠性,数据块在不同条件下复制为多份储存,以防丢失,默认为三。
主服务器:维护系统元数据,包括文件以及数据块命名方式、文件到数据块之间通道、数据块储存位置信息。同时也是整个数据处理系统的主控,负责数据块处理、垃圾数据块的清除回收、数据块的复制移动等,主服务器与数据块服务器有专门的信息交换通道来控制数据块服务器的运行。
客户端:谷歌文件系统提供给客户的连接接口,它是一组专用接口,不遵循可移植操作系统接口(Portable Operating System Interface of UNIX)规范,以库文件的形式给客户使用。客户端访问谷歌文件系统时,首先访问主服务器,获取可以使用的数据块服务器对应的元数据,然后直接访问数据块服务器,完成数据的存取工作。
特别的是,谷歌文件系统中的客户端没有文件数据缓存,只有主控服务器中获取的元数据。所谓元数据可以理解为地址和基本文件信息,有了地址就可以通过一定的通道连接到数据块服务器,每个数据块的元数据小于64字节,这样可以大大减小储存空间。
容错:记录操作日志,检查不同时刻,再加一台影子主服务器来实时操作。主服务器元数据信息包含以下方面:整个文件系统的目录结构以及数据块基本信息,文件到数据块的通道,被储存在不同磁盘的数据块记录。主服务器是先刷新操作日志再去更改文件。主服务器需要长久刷新前两种元数据,即文件基本信息及文件到数据块之间的通道,对于数据块复制信息,就算主服务器出了错,主服务器也可以从数据块服务器调取备份来恢复。
租约:系统数据存取以日志为基本,也就是必须先有记录后进行操作,如果每次记录都请求主服务器,主服务器负担太重。因此,主服务器只记录元数据,副本及副本复制给了数据块服务器,某台数据块服务器有存取权限,存取时其他的向它申请,这台称为主数据块服务器,其他的叫备份。
副本创建:主服务器创建,会选择副本储存位置,如果新副本所在服务器利用率不足,就限制每个数据块服务器创建,数据块副本不能放在同一个空间;当副本数量小于一定的数量后,主服务器就自动创建新副本来保存,其他原因包括数据块服务器故障或者报告自己的副本损坏、某个磁盘故障导致副本丢失,或者用户自己增加副本数等等,这些都有个优先级。
垃圾回收:系统采用延迟删除的设计,当删除文件后,不会立即解除占用的物理存储,而是在元数据中将文件名改为一个隐藏的名字,并且设计上定时,到时间自动删掉,在时间段内可以找回。

猜你喜欢

转载自blog.csdn.net/BENDAXIANNMD/article/details/89384873