01海量小文件存储的挑战
为了解决海量小文件的存储问题,必须采用分布式存储,目前分布式存储主要采用两种架构:集中式元数据管理架构和去中心化架构。
(1)集中式元数据架构:
典型的集中式元数据架构的分布式存储有GFS,HDFS,MooseFs等。其采用的典型架构如下图1所示:
图1 集中式元数据架构
此架构主要包含3个部分:
1)客户端:主要用于提供访问分布式存储系统的接口;
2) 元数据服务器:主要用于存放分布式存储系统的命名空间和文件的一些元数据信息。
3)存储服务器: 主要负责存储文件的具体数据。
使用集中式的元数据管理的方式,其主要优点如下:
1) 元数据的操作性能高: 存储系统的命令空间和文件的元数据都存放在元数据服务器上,元数据操作如list directory和create file等元数据的操作性能会比较高;
2) 扩容时不需要数据迁移:元数据服务器上存放有所有文件的位置信息,在集群需要扩容增加新的节点时,这些位置信息不需要变动,因此集群在扩容时不需要进行数据迁移。
其主要缺点如下:
1) 元数据节点是瓶颈:客户端在访问文件数据之前通常都需要到元数据节点上查询文件的位置信息,因此元数据节点不可避免地成为了整个系统的性能瓶颈。
2) 文件的数量受限:为了提高性能,元数据节点中的数据一般都会保存到内存中,而元数据节点的内存不是无限增长的。
基于以上缺点,集中式的元数据管理方式非常不适合于海量小文件的存储。
(2) 去中心化架构:
为了解决集中式元数据架构的问题,去中心化架构的分布式存储产生,典型的去中心化分布式存储有GlusterFs,Ceph等。其采用的典型的架构如下图2所示: