这是程序员的智囊库系列的第三篇文章。上一篇文章本来打算介绍几个搭建网站的框架,但由于这部分的内容较多,还需要再整理一段时间,所以先放出这部分的第三篇文章。这一部分我们讲介绍分布式存储相关的一些知识,以及当下(2013-10-29)主流的分布式文件系统。由于有些NoSQL数据库也可以用来做分布式文件系统的替代物,所以这部分我们还将介绍几个NoSQL数据库。主要讲介绍以下几种分布式文件系统和NoSQL数据库:
之前公司一直用nfs做文件服务器,nfs的好处就是配置简单,使用方便。但缺点是当数据量很多,尤其是小文件多的时候,其性能令人堪忧,往往会成为整个系统的性能瓶颈。所以准备在将来考虑用性能更好的方法替代nfs,于是花大工夫整理调查,横向对比了各分布式文件系统。调查报告的详细结果整理在这里,本文是从中抽出几个概要部分稍作讲解,具体内容请参见调查报告原文。我把分析报告原文放到了七牛上,但我感觉它最近不太稳定,如果下载不了,请与我联系,或直接在下面评论里留邮箱。
注:本来调查报告分两部分,理论分析报告和性能测试报告。本文的目的是介绍给大家更多的知识,扩展知识面,增加知识的广度。
而不是说直接告诉你,这个比那个好,你用这个,别用那个。
尤其是性能测试这种东西,别人的测试结果的参考价值并不是很大,必须沉下心来,自己去一点点的测才能找到最适合自己的工具、参数。
因此,本文只给出了理论分析报告,并没有给出性能测试报告。
元数据的概念:data about data
数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,
诸如访问权限、文件拥有者以及文件数据块的分布信息(inode...)等等。
在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。
用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
元数据对文件系统的影响:文件系统对元数据的操作占据了传统文件系统总负荷的近一半。
高效的元数据管理方式对提高整个系统的性能至关重要。
A comparison of file system workloads. 2000 USENIX Annual Technical Conference
当一台服务器出现故障后,整个服务器群瘫痪。
解决方案:
1 TFS 利用linux 高可用性(HA)机制,配置HA元数据服务集群。但这样只能配置主设备和从设备,事实上同一时刻还是只有一个服务器在服务。这样做只能提高系统的稳定性,并不能解决采用集成式元数据服务模式的瓶颈问题(由于系统需要同步,反而会降低性能)。
2 Ceph GPFS 分布式元数据服务模型 将负载分散到多台服务器解决了性能瓶颈问题,利用对等的服务器或冗余元数据服务分区解决了单点故障问题。分布式看似非常完善,然而它大大增加了设计实现上的复杂性,同时可能会引入了新的问题,即性能开销和数据一致性问题。
3 GlusterFS 无元数据服务模型
无元数据服务器设计的好处是没有单点故障和性能瓶颈问题,可提高系统扩展性、性能、可靠性和稳定性。对于海量小文件应用,这种设计能够有效解决元数据的难点问题。它的负面影响是,数据一致问题更加复杂,文件目录遍历操作效率低下,缺乏全局监控管理功能。同时也导致客户端承担了更多的职能,比如文件定位、名字空间缓存、逻辑卷视图维护等等,这些都增加了客户端的负载,占用相当的CPU和内存。
高可用性H.A.(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。它与被认为是不间断操作的容错技术有所不同。HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。
实现方法:
Filesystem in userspace
在用户态实现的文件系统
为什么使用FUSE:
首先要了解用户态和内核态
为了保证系统安全,在用户态执行的代码被硬件限制,不能进行某些操作,如修改其他程序的存储空间、修改配置文件、杀死其他进程、重启等。
而在内核态(核心态)执行的代码,可以不加限制地对系统存储、外部设备进行操作。
但是从用户态切换到核心态需要很大的开销。
所以FUSE有如下优点:
能够大幅提高效率,简化了为操作系统提供新的文件系统的工作量,特别适用于各种虚拟文件系统和网络文件系统。
GPL GPL2 GPL3 LGPL AGPL
无目录结构、扁平化存储是海量存储的未来发展方向
一般来讲计算机内部对文件的操作和查找不是按目录进行定位的
目录结构完全是为了方便用户浏览。
因而,一些不会与用户直接打交道的数据,完全可以不用目录结构存储。设计新产品的时候可以采用扁平化设计。
关于存储,分布式存储,分布式文件系统的更多信息,可以参见以下几本资料:
如何才能选择最好的分布式文件系统呢?没有最好的分布式文件系统,只有最适合你的实际情况的。不是说最近ceph很火,ceph就一定适合你,一定要在认真分析你的实际情况后,通过理论参数做出初步筛选,然后通过性能测试来做最后的筛选,切不可鲁莽选择。
详细的理论比对请参见理论分析报告的原文!
时间:2014-11-16
作者:FingerLiu
如果您对我介绍的知识感兴趣,欢迎收藏和推荐!谢谢您的支持!
-------------------------------