分布式存储知识整理

分布式存储

脑图

分布式存储知识整理

元数据和真实数据分开存储,元数据文件的数量、大小、属性等;真实数据即文件内容。

MFS的块是 64MB,一个文件小于64MB,会用一个单独的块进行存储,并且未利用的空间不会存储新的内容。

比如一个文件大于64MB,有100MB,则会用2个块存储该文件,第1个存储大小为64MB,第2个为36MB,并且第2个块虽然未存满但是不会再存新的数据。

moosefs

MFS

驯鹿文件系统

特性

①高可靠性。每一份数据可以设置多个备份(多份数据),并可以存储在不同的主机之上

②高扩展性。可以很轻松的通过增加主机的磁盘容量或增加主机数量来动态扩展整个文件系统的存储量

③高可容错性。我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依旧存放于主机的回收站中,以备误删除恢复数据

④高数据一致性。即使文件被写入、访问时,我们依然可以轻松完成对文件的一致性快照

MFS分为企业版和社区版,企业版无单节点;社区版有Master存储单节点。

缺点

①Msater目前是单点,虽然会把数据信息同步到备份服务器,但是恢复需要时间;

②Master服务器对主机的内存要求较高。内存使用问题:处理一百万个文件chunkserver,大概需要300M的内存空间。据此推算如果未来要出来一个亿的文件chunkserver,大概需要30G的内存空间

③默认Metalogger复制元数据时间较长(可调整)

应用场景

①大规模高并发的线上数据存储及访问(小文件,大文件都适合)

②大规模的数据处理,如日志分析,小文件强调性能不用HDFS。

类别

管理服务器:managing server

  • master

    • 这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中每个数据文件的metadata信息,metadate(元数据)信息包括文件(也可以是目录,socket,管道。块设备等)的大小,属性,文件的位置路径等。

元数据备份服务器:Metadata backup servers

  • metalogger

    • 整个组件的作用是备份管理服务器master的变化的元数据信息日志文件,文件类型为change_ml.*.mfs。以便于在管理服务器出问题时可以经过简单的操作即可让新的主服务器进行工作。

数据存储服务器组:data servers(chunk servers)

  • data

    • 这个组件就是真正存放数据文件实体的服务器了,这个角色可以有多台不同的物理服务器或不同的磁盘及分区来充当,当配置数据的副本多于一份时,据写入到一个数据服务器后,会根据算法在其他数据服务器上进行同步备份。

客户机服务器组:client servers

  • client

    • 这个组件就是挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先会连接主管理服务器获取数据的metada信息,然后根据得到的metadata信息,访问数据服务器读取或写入文件实体,mfs客户端通过fuse mechanism实现挂载mfs文件系统的。因此,只有系统支持fuse,就可以作为客户端访问mfs整个文件系统。

操作分类

遍历:ls dir

  • C(客户端)向MS(master server)发出遍历请求
  • MS检索内存返回元数据信息

删除:rm

  • a.C连接MS,并且发出删除文件请求;
  • b.MS定位到删除元数据信息,删除元数据信息,并且将删除真实数据的请求加入到队列中,到达保存时间后,真实数据被删除
  • c.MS返回信息,C响应。

查看文件:cat filename

  • a.C向MS发起检索请求
  • b.MS向C发送ip、port、chunkserver
  • c.C拿着ip、port、chunkid连接至chunkserver

增加文件:cp

  • a.C向MS发起请求(拷贝)
  • b.MS确定chkserver向对应chukserver传输文件大小,创建块请求
  • c.chunkserver接受请求,在当前目录创建新块用于写入数据,创建成功后,mfs返回chunkid给MS端
  • d.MS发送ip、port、chunkid至C
  • e.C连接新块写入数据,并向MS发送关闭文件请求
  • f.MS连接至新块检索,判断最终大小以及修改时间,更新当前元数据信息

修改文件:vim

  • a.C向MS发起修改文件请求

  • b.MS向chunk告知拷贝新块,副本1

  • c.MS将副本1块的ip、port、chunkid返回给C

  • d.C连接副本1块上

  • e.C开始修改,修改完成,C向MS发起文件关闭请求

  • f.有两种可能性

    • ①若文件被修改,则M连接至副本1块对比文件内容,如果不一致,chunkserver创建副本2,副本根据副本1的大小定制,将内容拷贝至副本2,chunkserver删除源块副本1块,将副本2的chunkid返回给MS,MS更新元数据信息。
    • ②若文件未被修改,则MS连接至副本1块对比文件内容,如果一致,删除副本1块更新元数据信息。

本文于2020年11月19日由Vonmerlot使用xmind软件生成。