Namenode 服务器的磁盘故障导致 namenode 宕机,如何挽救集群及数据?

NameNode 对数据的管理采用了两种存储形式:内存和磁盘
首先是内存中存储了一份完整的元数据,包括目录树结构,以及文件和数据块和副本存储地
的映射关系;
1、内存元数据 metadata(全部存在内存中)
其次是在磁盘中也存储了一份完整的元数据。有三种格式:
2、磁盘元数据镜像文件
fsimage_0000000000000000666
fsimage_0000000000000000666

等价于

edits_0000000000000000001-0000000000000000018
……
edits_0000000000000000444-0000000000000000666
合并之和

3、数据历史操作日志文件 edits:edits_0000000000000000001-0000000000000000018
(可通过日志运算出元数据,全部存在磁盘中)

4、数据预写操作日志文件 edits_inprogress_0000000000000000667
(存储在磁盘中)
数据=最新的镜像文件加上预写的操作日志文件=历史操作日志文件加上预写的操作日志文件
metadata = 最新 fsimage_0000000000000000666 + edits_inprogress_0000000000000000667
metadata = 所有的 edits 之和(edits_001_002 + …… + edits_444_666 + edits_inprogress_667

预写日志文件写的过程是类似于事务操作
是对数据文件的修改必须是只能发生在这些修改已经记录了日志之后

你可能感兴趣的:(Namenode 服务器的磁盘故障导致 namenode 宕机,如何挽救集群及数据?)