网站开发客户需求,装修家具,wordpress行业模板,如何联系网站一、分布式文件系统
分布式文件系统#xff08;Distributed File System#xff09;是指文件系统管理的物理存储资源不一定直接连接在本地节点上#xff0c;而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户…一、分布式文件系统
分布式文件系统Distributed File System是指文件系统管理的物理存储资源不一定直接连接在本地节点上而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外对等特性允许一些系统扮演客户机和服务器的双重角色。例如用户可以“发表”一个允许其他客户机访问的目录一旦被访问这个目录对客户机来说就像使用本地驱动器一样。
判断一个分布式文件系统是否优秀取决于以下三个因素
数据的存储方式例如有1000万个数据文件可以在一个节点存储全部数据文件在其他N个节点上每个节点存储1000/N万个数据文件作为备份或者平均分配到N个节点上存储每个节点上存储1000/N万个数据文件。无论采取何种存储方式目的都是为了保证数据的存储安全和方便获取。数据的读取速率包括响应用户读取数据文件的请求、定位数据文件所在的节点、读取实际硬盘中数据文件的时间、不同节点间的数据传输时间以及一部分处理器的处理时间等。各种因素决定了分布式文件系统的用户体验。即分布式文件系统中数据的读取速率不能与本地文件系统中数据的读取速率相差太大否则在本地文件系统中打开一个文件需要2秒而在分布式文件系统中各种因素的影响下用时超过10秒就会严重影响用户的使用体验。数据的安全机制由于数据分散在各个节点中必须要采取冗余、备份、镜像等方式保证节点出现故障的情况下能够进行数据的恢复确保数据安全。
二、主流分布式文件系统介绍
目前主流的分布式文件系统有GFS、HDFS、Ceph、Lustre、MogileFS、MooseFS、FastDFS、TFS、GridFS等。
1. GFSGoogle File System
Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。尽管Google公布了该系统的一些技术细节但Google并没有将该系统的软件部分作为开源软件发布。
2. HDFSHadoop Distributed File System
Hadoop 实现了一个分布式文件系统简称HDFS。Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch后者是一个开源的网络搜索引擎本身也是Luene项目的一部分。Aapche Hadoop架构是MapReduce算法的一种开源应用是Google开创其帝国的重要基石。 参考链接 http://hadoop.apache.org/docs/r2.9.1/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html 3. Ceph
是加州大学圣克鲁兹分校的Sage Weil攻读博士时开发的分布式文件系统。并使用Ceph完成了他的论文。 由于 ceph 使用 btrfs 文件系统 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。ceph目前还不足够成熟它基于的btrfs本身也不成熟它的官方网站上也明确指出不要把ceph用在生产环境中。 参考链接 https://github.com/ceph/ceph https://ceph.com 4. Lustre
Lustre是一个大规模的、安全可靠的具备高可用性的集群文件系统它是由SUN公司开发和维护的。该项目主要的目的就是开发下一代的集群文件系统可以支持超过10000个节点数以PB的数据量存储系统。目前Lustre已经运用在一些领域例如HP SFS产品等。 参考链接 http://lustre.org/ 5. MooseFS
支持FUSE相对比较轻量级对master服务器有单点依赖用perl编写性能相对较差国内用的人比较多。 参考链接 https://moosefs.com https://sourceforge.net/projects/moosefs/?sourcedirectory https://www.cnblogs.com/hjc4025/p/9956988.html 6. MogileFS
由memcahed的开发公司danga一款perl开发的产品目前国内使用mogielFS的有图片托管网站yupoo等。MogileFS是一套高效的文件自动备份组件由Six Apart开发广泛应用在包括LiveJournal等web2.0站点上。 参考链接 https://github.com/mogilefs 7. FastDFS
是一款类似Google FS的开源分布式文件系统是纯C语言开发的。FastDFS是一个开源的轻量级分布式文件系统它对文件进行管理功能包括文件存储、文件同步、文件访问文件上传、文件下载等解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务如相册网站、视频网站等等。 参考链接 https://github.com/happyfish100/fastdfs https://www.cnblogs.com/shenxm/p/8459292.html 8. GlusterFS
开源分布式横向扩展文件系统可以根据存储需求快速调配存储内含丰富的自动故障转移功能且摈弃集中元数据服务器的思想。适用于数据密集型任务的可扩展网络文件系统具有可扩展性、高性能、高可用性等特点。gluster于2011年10月7日被red hat收购。 参考链接 http://www.gluster.org https://blog.csdn.net/liuaigui/article/details/6284551 9. TFSTaobao File System
TFS是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统主要针对海量的非结构化数据它构筑在普通的Linux机器 集群上可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储通常文件大小不超过1M满足了淘宝对小文件存储的需求被广泛地应用 在淘宝各项应用中。它采用了HA架构和平滑扩容保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构可将文件名映射到文件的物理地址简化 了文件的访问流程一定程度上为TFS提供了良好的读写性能。 参考链接 http://code.taobao.org/p/tfs/src/ 10. GridFS
MongoDB是一种知名的NoSql数据库GridFS是MongoDB的一个内置功能它提供一组文件操作的API以利用MongoDB存储文件GridFS的基本原理是将文件保存在两个Collection中一个保存文件索引一个保存文件内容文件内容按一定大小分成若干块每一块存在一个Document中这种方法不仅提供了文件存储还提供了对文件相关的一些附加属性比如MD5值文件名等等的存储。文件在GridFS中会按4MB为单位进行分块存储。 参考链接 https://docs.mongodb.com/manual/core/gridfs 三、分布式文件系统的对比
1. 综合性对比
文件系统开发者开发语言开源协议易用性适用场景特性缺点GFSGoogle不开源HDFSApacheJavaApache安装简单官方文档专业化存储非常大的文件大数据批量读写吞吐量高一次写入多次读取顺序读写难以满足毫秒级别的低延时数据访问不支持多用户并发写相同文件不适用于大量小文件Ceph加州大学圣克鲁兹分校Sage WeilCLGPL安装简单官方文档专业化单集群的大中小文件分布式没有单点依赖用C编写性能较好基于不成熟的btrfs自身也不够成熟稳定不推荐在生产环境使用LustreSUNCGPL复杂而且严重依赖内核需要重新编译内核大文件读写企业级产品非常庞大对内核和ext3深度依赖MooseFSCore Sp. z o.o.CGPL V3安装简单官方文档多且提供Web界面的方式进行管理与监控大量小文件读写比较轻量级用perl编写国内用的人比较多对master服务器有单点依赖性能相对较差MogileFSDanga InteractivePerlGPL主要用在web领域处理海量小图片key-value型元文件系统效率相比mooseFS高很多不支持FUSEFastDFS国内开发者余庆CGPL V3安装简单社区相对活跃单集群的中小文件系统无需支持POSIX降低了系统的复杂度处理效率更高实现了软RAID增强系统的并发处理能力及数据容错恢复能力支持主从文件支持自定义扩展名主备Tracker服务增强系统的可用性不支持断点续传不适合大文件存储不支持POSIX通用性较低对跨公网的文件同步存在较大延迟需要应用做相应的容错策略同步机制不支持文件正确性校验通过API下载存在单点的性能瓶颈GlusterFSZ RESEARCHCGPL V3安装简单官方文档专业化适合大文件小文件性能还存在很大优化空间无元数据服务器堆栈式架构(基本功能模块可以进行堆栈式组合实现强大功能)具有线性横向扩展能力比mooseFS庞大由于没有元数据服务器因此增加了客户端的负载占用相当的CPU和内存但遍历文件目录时则实现较为复杂和低效需要搜索所有的存储节点不建议使用较深的路径TFSAlibabaCGPL V2安装复杂官方文档少跨集群的小文件针对小文件量身定做随机IO性能比较高实现了软RAID增强系统的并发处理能力及数据容错恢复能力支持主备热倒换提升系统的可用性支持主从集群部署从集群主要提供读/备功能不适合大文件的存储不支持POSIX通用性较低不支持自定义目录结构与文件权限控制通过API下载存在单点的性能瓶颈官方文档少学习成本高GridFSMongoDBC安装简单通常用来处理大文件超过16M可以访问部分文件而不用向内存中加载全部文件从而保持高性能文件和元数据自动同步
2. 特性对比
文件系统数据存储方式集群节点通讯协议专用元数据存储点在线扩容冗余备份单点故障跨集群同步FUSE挂载访问接口HDFS文件私有协议TCP占用MDS支持存在不支持支持不支持POSIXCeph对象/文件/块私有协议TCP占用MDS支持支持存在不支持支持POSIXLustre对象私有协议TCP/ RDAM远程直接访问内存双MDS支持不支持存在未知支持POSIX/MPIMooseFS块私有协议TCP占用MFS支持支持存在不支持支持POSIXMogileFS文件HTTP占用DB支持不支持存在不支持不支持不支持POSIXFastDFS文件/块私有协议TCP无支持支持不存在部分支持不支持不支持POSIXGlusterFS文件/块私有协议TCP/RDAM远程直接访问内存无支持支持不存在支持支持POSIXTFS文件私有协议TCP占用NS支持支持存在支持未知不支持POSIX什么是POSIX POSIX表示可移植操作系统接口Portable Operating System Interface of UNIX缩写为 POSIX 也就是Unix下应用程序共同遵循的一种规范。支持POSIX的应用程序意味着在各个Unix系统间提供了跨平台运行的支持。 四、选型参考
1. 按特性分类
适合做通用文件系统的有CephLustreMooseFSGlusterFS
适合做小文件存储的文件系统有CephMooseFSMogileFSFastDFSTFS
适合做大文件存储的文件系统有HDFSCephLustreGlusterFSGridFS
轻量级文件系统有MooseFSFastDFS
简单易用用户数量活跃的文件系统有MooseFSMogileFSFastDFSGlusterFS
支持FUSE挂载的文件系统有HDFSCephLustreMooseFSGlusterFS。
2. 初步筛选
考虑到GFS不开源学习成本高且相关特性资料不全面的情况下暂时先不考虑使用GFS
Ceph目前不够成熟稳定很少有使用在生产环境的案例暂时排除
Lustre对内核依赖程度过重且不易安装使用暂时排除
TFS安装复杂且官方文档少不利于以后的学习使用暂时先排除
经初步筛选剩下的文件系统有HDFS、MooseFS、MogileFS、FastDFS、GlusterFS、GridFS。
3. 根据需求分析进一步筛选
需求
需要搭建一部管理原始凭证的文件系统原始凭证的文件类型主要是小图片写操作量少读操作量大且对安全性要求较高。随着系统在使用过程中数据量逐步庞大图片的量会变得繁多对图片读取速率要求尽可能高但不追求极致无需到毫秒级。文件系统需要有较完善的冗余备份与容错机制功能尽量精简耐用安装配置应简单且适合于国产环境部署。
分析
根据需求首选需要选择适合海量小图片存储的文件系统适合的文件系统有MooseFSMogileFSFastDFS。其次需要支持冗余备份适合的文件系统有MooseFS、FastDFS、GlusterFS。符合条件12且功能精简的文件系统有FastDFS。符合条件12且功能全面的文件系统有MooseFS。
总结
MooseFS功能较为全面支持在线扩容、冗余备份、FUSE挂载和POSIX访问接口不支持跨集群同步存在单点故障性能相对较差。
FastDFS功能精简支持在线扩容、冗余备份部分支持跨集群同步不支持FUSE挂载和POSIX访问接口不存在单点故障性能较好。
提供的建议选型参考为FastDFS或MooseFS可根据需求的细化进一步分析选取。 备注此选型参考提供的是分布式文件系统的选型建议根据系统需求也可选择NFS等其他更合适的文件系统类型此选型参考仅局限于分析范围内的文件系统仍然有其他类型的文件系统可能是更好的选择此选型参考中没有确切的性能测试数据作为对比无法提供性能方面的精确比较。 五、参考文献
开源分布式存储系统的对比 [http://my.525.life/article?id1510739742054]
分布式文件系统MFS、Ceph、GlusterFS、Lustre的对比 [https://www.cnblogs.com/zhiguo/p/3334993.html]
使用 FUSE 开发自己的文件系统 [https://www.ibm.com/developerworks/cn/linux/l-fuse]