GFS学习(三)

、容错和诊断

  4.1 高可靠性

  4.1.1 快速恢复

  不管如何终止服务,MASTER和数据块服务器都会在几秒钟内恢复状态和运行。实际上,我们不对正常终止和不正常终止进行区分, 服务器进程都会被切断而终止。客户机和其他的服务器会经历一个小小的中断,然后它们的特定请求超时,重新连接重启的服务器,重新请求。

  4.1.2 数据块备份

  如上文所讨论的,每个数据块都会被备份到放到不同机架上的不同服务器上。对不同的名字空间,用户可以设置不同的备份级别。在数据块服务器掉线或是数据被破坏时,MASTER会按照需要来复制数据块。

  4.1.3 MASTER备份

  为确保可靠性,MASTER的状态、操作记录和检查点都在多台机器上进行了备份。一个操作只有在数据块服务器硬盘上刷新并被记录在MASTER和其备份的上之后才算是成功的。如果MASTER或是硬盘失败,系统监视器会发现并通过改变域名启动它的一个备份机,而客户机则仅仅是使用规范的名称来访问,并不会发现MASTER的改变。

  4.2 数据完整性

  每个数据块服务器都利用校验和来检验存储数据的完整性。原因:每个服务器随时都有发生崩溃的可能性,并且在两个服务器间比较数据 块也是不现实的,同时,在两台服务器间拷贝数据并不能保证数据的一致性。

  每个Chunk64kB的大小分成块,每个块有32位的校验和,校验和和日志存储在一起,和用户数据分开。

  在读数据时,服务器首先检查与被读内容相关部分的校验和,因此,服务器不会传播错误的数据。如果所检查的内容和校验和不符,服务器就会给数据请求者返回一个错误的信息,并把这个情况报告MASTER。客户机就会读其他的服务器来获取数据,而MASTER 则会从其他的拷贝来复制数据,等到一个新的拷贝完成时,MASTER就会通知报告错误的服务器删除出错的数据块。

  附加写数据时的校验和计算优化了,因为这是主要的写操作。我们只是更新增加部分的校验和,即使末尾部分的校验和数据已被损坏而我 们没有检查出来,新的校验和与数据会不相符,这种冲突在下次使用时将会被检查出来。

  相反,如果是覆盖现有数据的写,在写以前,我们必须检查第一和最后一个数据块,然后才能执行写操作,最后计算和记录校验和。如果 我们在覆盖以前不先检查首位数据块,计算出的校验和则会因为没被覆盖的数据而产生错误。

  在空闲时间,服务器会检查不活跃的数据块的校验和,这样可以检查出不经常读的数据的错误。一旦错误被检查出来,服务器会拷贝一个 正确的数据块来代替错误的。

  4.3 诊断工具

  广泛而细致的诊断日志以微小的代价换取了在问题隔离、诊断、性能分析方面起到了重大的作用。GFS服务器用日志来记录显著的事件(例如服务器停机和启动)和远程的应答。远程日志记录机器之间的请求和应答,通过收集不同机器上的日志记录,并对它们进行分析恢复,我们可以完整地重现活动的场景,并用此来进行错误分析。

  6 测量

  6.1 测试环境

  一台主控机,两台主控机备份,16台数据块服务器,16台客户机。

  每台机器:2PIII1.4G处理器,2G内存,280G5400rpm的硬盘,1100Mbps全双工网卡

  19台服务器连接到一个HP2524交换机上,16台客户机俩接到领外一台交换机上,两台交换机通过1G的链路相连。

  以前研究过google文件系统 说实话设计的比较简单而且最重要的是可靠性强 整个google 分成 数据机群 文件集群 文件机群可以看成是网格技术.

 

--END--

 

[GFS学习(一):http://shift-alt-ctrl.iteye.com/blog/1842191]

[GFS学习(二):http://shift-alt-ctrl.iteye.com/blog/1842217]

猜你喜欢

转载自shift-alt-ctrl.iteye.com/blog/1842219
GFS
今日推荐