主流分布式文件系统比较
主流集群文件系统架构分类对比

1、共享与非共享存储集群共享存储集群:所有节点共享使用后端存储(共享使用一个LUN或多个LUN)非共享存储集群(分布式文件系统):所有节点不共享使用后端存储,各自的存储空间只能自己使用,别的节点不可以使用(不可使用不代表不能访问)。
客户端从B节点访问,但是访问的数据放在节点A,则B节点收到数据后发现数据放在A节点,B节点则找A节点要数据(一般是使用前端以太网),A节点讲数据返回给B节点,B节点再将数据返回客户端。
2、对称式与非对称式集群对称式集群:所有节点的角色都是相同的,所有节点都掌管着文件系统的元数据,当某个元数据更新要同步到所有节点,这样所有节点都可以掌握最新的元数据,优点就是当有用户要访问数据时,不管是通过那个节点都可以请求到最终数据,付出的代价就是要时刻保持交流,对交换性能消耗较大非对称式集群:有专门的节点保存Metadata,掌管Metadata数据的节点叫做Metadata server (MDS)或者Metadata Controller(MDC)。
当客户端要读数据时,将请求发给节点A了,但是节点A是普通节点,则节点A或找M节点,问一下对应的数据放在那里了,当M节点告诉A节点对应的LBA,A节点则去对应的LBA去读取数据,返回客户端。
非对称式集群的优点是节点间不需要时刻进行交流,只需要在有Read或Write任务时找MDS节点要对应的LBA,减少了交流的成本,但是如果只有一个MDS的话那么这个MDS出故障了,所有节点都不可以访问了,所有为了安全行考虑一般都会有2个MDS或多个MDS,而缺点也是MDS只有固定的几个,所以容易出现瓶颈。
3、自助型与服务型集群自助型集群:自己形成集群自己用,自己即是服务者又是消费者服务型集群:真正的消费者并不是集群内的主机,而是集群外面的主机,集群内的主机只负责提供服务(现实生活中应该绝大部分都是服务型集群)根据上面所说的对现在常见集群分析1、IBM XIVInterface Module口:共享对称式服务型集群Data Moudule口:不涉及共享,对称这些,Data 口是为前面的Interface口服务的,当有一个IO进来时,会首先到达Interface口,如果请求的数据刚好在这个模块上,则直接返回,如果没有在这个模块上则查找Distribution Map找到对应的模块,返回所以Data口不涉及共享,对称这些2、3PAR Inserv—T800每节点对间是共享对称服务型集群,但是不同节点对之间是非共享对称服务型节点3、EMC symmetrix V-MAX每Engine间是共享对称服务型集群,但是不同Engine之间是非共享对称服务型节点4、HP IBRIXNFS、CIFS:非共享Fusion:共享。
分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析

6苏州大学学报(工科版)第30卷图1I-IDFS架构2HDFS与LinuxFS比较HDFS的节点不管是DataNode还是NameNode都运行在Linux上,HDFS的每次读/写操作都要通过LinuxFS的读/写操作来完成,从这个角度来看,LinuxPS是HDFS的底层文件系统。
2.1目录树(DirectoryTree)两种文件系统都选择“树”来组织文件,我们称之为目录树。
文件存储在“树叶”,其余的节点都是目录。
但两者细节结构存在区别,如图2与图3所示。
一二Root\图2ItDFS目录树围3LinuxFS目录树2.2数据块(Block)Block是LinuxFS读/写操作的最小单元,大小相等。
典型的LinuxFSBlock大小为4MB,Block与DataN-ode之间的对应关系是固定的、天然存在的,不需要系统定义。
HDFS读/写操作的最小单元也称为Block,大小可以由用户定义,默认值是64MB。
Block与DataNode的对应关系是动态的,需要系统进行描述、管理。
整个集群来看,每个Block存在至少三个内容一样的备份,且一定存放在不同的计算机上。
2.3索引节点(INode)LinuxFS中的每个文件及目录都由一个INode代表,INode中定义一组外存上的Block。
HDPS中INode是目录树的单元,HDFS的目录树正是在INode的集合之上生成的。
INode分为两类,一类INode代表文件,指向一组Block,没有子INode,是目录树的叶节点;另一类INode代表目录,没有Block,指向一组子INode,作为索引节点。
在Hadoop0.16.0之前,只有一类INode,每个INode都指向Block和子IN-ode,比现有的INode占用更多的内存空间。
2.4目录项(Dentry)Dentry是LinuxFS的核心数据结构,通过指向父Den姆和子Dentry生成目录树,同时也记录了文件名并指向INode,事实上是建立了<FileName,INode>,目录树中同一个INode可以有多个这样的映射,这正是连分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析作者:许春玲, 张广泉, Xu ChunLing, Zhang Guangquan作者单位:许春玲,Xu ChunLing(苏州大学计算机科学与技术学院,江苏,苏州,215006), 张广泉,Zhang Guangquan(苏州大学计算机科学与技术学院,江苏,苏州,215006;中国科学院软件研究所计算机科学国家重点实验室,北京,100080)刊名:苏州大学学报(工科版)英文刊名:JOURNAL OF SUZHOU UNIVERSITY(ENGINEERING SCIENCE EDITION)年,卷(期):2010,30(4)1.John Howard.Michael Kazar.Sherri Menees Scale and performance in a distributed file system 1988(1)2.Luiz A Barroso.Jeffrey Dean.Urs H¨olzle Web search for a planet:the Google cluster architecture 2003(2)本文链接:/Periodical_szscgxyxb201004002.aspx。
分布式存储解决方案

分布式存储解决方案下面将系统地介绍几种常见的分布式存储解决方案。
1. 分布式文件系统(Distributed File System, DFS):分布式文件系统将文件分割为多个块,并将这些块存储在不同的节点上,实现文件的高可靠性、高可扩展性和高性能。
其中比较著名的有Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)和谷歌分布式文件系统(Google File System, GFS)。
HDFS将文件分割为固定大小的数据块,并将这些数据块复制到多个节点上。
通过对数据块的复制,实现了数据的冗余和高可靠性。
同时,HDFS还采用了主从架构和数据局部性原理,使得数据的读写操作能够高效地在节点之间实现负载均衡和数据局部性。
GFS采用了类似的设计思想,将文件分割为大量的数据块,并将这些数据块按照一定的规则分布到多个节点上。
通过为每个文件存储多个副本和采用主从架构,实现了数据的冗余和高可靠性。
同时,GFS还使用了日志结构文件系统和数据局部性原理,使得数据的读写操作能够高效地在节点之间实现负载均衡和数据局部性。
2. 分布式对象存储(Distributed Object Storage, DOS):分布式对象存储将数据存储为对象,并将这些对象通过哈希算法分布到多个节点上,实现对象的高可靠性、高可扩展性和高性能。
其中比较著名的有亚马逊云存储服务(Amazon S3)和谷歌云存储服务(Google Cloud Storage)。
这些分布式对象存储系统采用了分布式哈希表的设计思想,将对象根据其哈希值分布到多个节点上。
通过为每个对象存储多个副本和采用主从架构,实现了对象的冗余和高可靠性。
同时,这些系统还使用了一致性哈希算法和数据局部性原理,使得对象的读写操作能够高效地在节点之间实现负载均衡和数据局部性。
3. 分布式块存储(Distributed Block Storage, DBS):分布式块存储将数据划分为固定大小的块,并将这些块存储在多个节点的硬件设备上,实现块的高可靠性、高可扩展性和高性能。
分布式文件系统对比

分布式⽂件系统对⽐1⽂件系统⽂件系统是操作系统⽤于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的⽂件的⽅法和数据结构;即在存储设备上组织⽂件的⽅法。
操作系统中负责管理和存储⽂件信息的软件机构称为,简称⽂件系统。
⽂件系统由三部分组成:⽂件系统的接⼝,对对象操纵和管理的软件集合,对象及属性。
从系统⾓度来看,⽂件系统是对⽂件存储设备的空间进⾏组织和分配,负责⽂件存储并对存⼊的⽂件进⾏保护和的系统。
具体地说,它负责为⽤户建⽴⽂件,存⼊、读出、修改、转储⽂件,控制⽂件的存取,当⽤户不再使⽤时撤销⽂件等。
2⽂件系统的分类2.1本地⽂件系统linux的ext3,ext4 windows的FAT32 NTFS ..如下是window下格式化硬盘时可以选择的⽂件系统。
注意下其中有个参数分配单元⼤⼩,稍后讨论。
2.2分布式⽂件系统利⽤分布式技术将标准X86服务器的本地HDD、SSD等存储介质组织成⼀个⼤规模存储资源池,同时,对上层的应⽤和虚拟机提供⼯业界标准的SCSI、iSCSI和对象访问接⼝,进⽽打造⼀个虚拟的⽂件存储系统。
3 ⽂件的存储1.块级概念:块级是指以扇区为基础,⼀个或我连续的扇区组成⼀个块,也叫物理块。
它是在⽂件系统与块设备(例如:磁盘驱动器)之间。
2.⽂件级概念:⽂件级是指⽂件系统,单个⽂件可能由于⼀个或多个逻辑块组成,且逻辑块之间是不连续分布。
逻辑块⼤于或等于物理块整数倍,3.物理块与⽂件系统之间的关系图:映射关系:扇区→物理块→逻辑块→⽂件系统⽂件级备份:⽂件级备份是指在指定某些⽂件进⾏备份时,⾸先会查找每个⽂件逻辑块,其次物理块,由于逻辑块是分散在物理块上,⽽物理块也是分散在不同扇区上。
需要⼀层⼀层往下查找,最后才完成整个⽂件复制。
⽂件级备份时⽐较费时间,效率不⾼,实时性不强,备份时间长,且增量备份时,单⽂件某⼀⼩部份修改,不会只备份修改部份,⽽整个⽂件都备份。
常见的分布式文件系统

常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。
各自适用于不同的领域。
它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
Google学术论文,这是众多分布式文件系统的起源==================================Google File System(大规模分散文件系统)MapReduce (大规模分散FrameWork)BigTable(大规模分散数据库)Chubby(分散锁服务)一般你搜索Google_三大论文中文版(Bigtable、 GFS、 Google MapReduce)就有了。
做个中文版下载源:/topics/download/38db9a29-3e17-3dce-bc93-df9286081126做个原版地址链接:/papers/gfs.html/papers/bigtable.html/papers/mapreduce.htmlGFS(Google File System)--------------------------------------Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。
尽管Google公布了该系统的一些技术细节,但Google并没有将该系统的软件部分作为开源软件发布。
下面分布式文件系统都是类 GFS的产品。
HDFS--------------------------------------Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。
它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。
Aapche Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。
分布式文件系统HadoopHDFS与传统文件系统LinuxFS的比较与分析-论文总结

[1] 许春玲,张广泉.分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析[J].苏州:苏州大学学报(工科版), 2010,30(4):6-9.一、HDFS实现分布式的关键技术分析1.用户群空间和物理空间的彼此独立:通过添加Block层来实现●Map1: < Block, INodeF ile> ;●Map2: < Block, DataNode> ;(以上两组映射封装在B locksMap< Block, BlockIn fo> 以哈希映射实现, 作为描述Block 的重要元数据Blockinfo封装了该Block相关的INode、DataNode。
)●Map3: < INode, Block> (Map1逆向), 作为目录树的最底层存放在FSImage;●Map4: < DataNode , Block> (Map2逆向), DataNodeDescr iptor中定义的Block List。
2.数据块映射BlockMap从HDFS目前的设计架构来看, 前面的Map1、Map2通过Java的Map界面实现, 而Hadoop基于MapReduce范式也实现了自己的应用程序界面Mapper、Rducer。
JavaMap以整个集合为操作对象, 不利于任务的分解和并行处理, 因此HDFS仅在数据的存储上实现分布式, 对算法和操作的实现依旧是集中式的。
这样的设计, 造成集群过分依赖NameNode, 当文件系统越来越庞大、目录树的结构越来越复杂时, NameNode的处理能力将成为HDFS 的瓶颈。
也许正是考虑到HDFS整个集群目录的操作都集中在一台NameNode上, 所以出现了前面HDFS设计的两个重点, 努力简化目录树结构以减少空间占用。
即便如此, 从长远来看日益庞大的集群(甚至可能在将来出现涵盖整个互联网的唯一集群)使简化的目录树无法从根本上解决问题, 而一旦NameNode崩溃, 则意味着集群的瘫痪。
主流分布式存储技术架构对比分析
主流分布式存储技术架构对比分析目录主流分布式存储技术架构对比分析 (1)一、 Ceph (3)二、 GFS (6)三、 HDFS (9)四、 Swift (10)五、 Lustre分布式存储 (15)六、主流分布式存储技术的比较 (16)存储根据其类型,可分为块存储,对象存储和文件存储。
在主流的分布式存储技术中,HDFS/GPFS/GFS属于文件存储,Swift属于对象存储,而Ceph可支持块存储、对象存储和文件存储,故称为统一存储。
一、 CephCeph最早起源于Sage就读博士期间的工作、成果于2004年发表,并随后贡献给开源社区。
经过多年的发展之后,已得到众多云计算和存储厂商的支持,成为应用最广泛的开源分布式存储平台。
Ceph根据场景可分为对象存储、块设备存储和文件存储。
Ceph相比其它分布式存储技术,其优势点在于:它不单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡。
同时,由于采用了CRUSH、HASH等算法,使得它不存在传统的单点故障,且随着规模的扩大,性能并不会受到影响。
1.Ceph的主要架构Ceph的最底层是RADOS(分布式对象存储系统),它具有可靠、智能、分布式等特性,实现高可靠、高可拓展、高性能、高自动化等功能,并最终存储用户数据。
RADOS系统主要由两部分组成,分别是OSD和Monitor。
RADOS之上是LIBRADOS,LIBRADOS是一个库,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言,比如C、C++、Python等。
基于LIBRADOS层开发的有三种接口,分别是RADOSGW、librbd和MDS。
RADOSGW是一套基于当前流行的RESTFUL协议的网关,支持对象存储,兼容S3和Swift。
librbd提供分布式的块存储设备接口,支持块存储。
MDS提供兼容POSIX的文件系统,支持文件存储。
各种分布式文件系统的比较
各种分布式⽂件系统的⽐较1、MooseFS⽀持FUSE,相对⽐较轻量级,对master服务器有单点依赖,⽤perl编写,性能相对较差,国内⽤的⼈⽐较多,易⽤,稳定,对⼩⽂件很⾼效。
+ ⽀持⽂件元信息+ mfsmount 很好⽤+ 编译依赖少,⽂档全,默认配置很好+ mfshdd.cfg 加 * 的条⽬会被转移到其它 chunk server,以便此 chunk server 安全退出+ 不要求 chunk server 使⽤的⽂件系统格式以及容量⼀致+ 开发很活跃+ 可以以⾮ root ⽤户⾝份运⾏+ 可以在线扩容+ ⽀持回收站+ ⽀持快照- master server 存在单点故障- master server 很耗内存测试性能还不错。
吞吐量在15MB/秒以上2、MogileFSKey-Value型元⽂件系统,不⽀持FUSE,应⽤程序访问它时需要API,主要⽤在web领域处理海量⼩图⽚,效率相⽐mooseFS⾼很多,据说对于 Web 2.0 应⽤存储图⽚啥的很好。
不适合做通⽤⽂件系统,适合存储静态只读⼩⽂件,⽐如图⽚⽹上说这个是性能最⾼的,不过是perl编写的代码,对外提供API来进⾏使⽤,搭建相对⽐较复杂⼀点,因为需要安装很多依赖的第三⽅perl包,另外还要安装MySQL数据库来⽀持。
安装完毕后,服务器端起来了,客户端有Java, PHP, PERL, RUBY 等开发的,我需要的是要⽀持 FUSE 的,但是这个分布式的⽂件系统,对FUSE的⽀持需要安装⼀个PERL与C通信的模块,这个模块死活编译不过去,最后⽆法测试成功,⽆奈只能有时间了继续研究。
5、OCFS2GFS 的 Oracle 翻版,据说性能⽐ GFS2 好 (Debian: aptitude install ocfs2-tools, 图形配置⼯具包 ocfs2console)不⽀持 ACL、flock,只是为了 Oracle database 设计6、OpenAFS/Coda是很有特⾊的东西。
分布式文件系统比较Ceph-Swift-HDFS
Ceph Ceph 现在已经是 Openstack 官方主要支持的存储后端,而最新的 Ceph 不仅可以提 供块服务,文件服务,而且还可以提供对象存储。
Openstack Swift 也提供对象存储服务, 那这两者到底是竞争关系,还是互补关系呢? Ceph 是一个基于伪随机算法的强一致性分布式存储系统,它主要提供块服务,能 很好的支持顺序 IO 和随机 IO。
除了用作 cinder 后端给虚拟机提供卷服务,同时也可以作 为 glance 的后端; 一般来说,为了同时保证写性能和一致性,一个强一致性系统节点间通讯的延迟要 尽量小,所以这样的系统一般不支持跨机房,跨地域的大规模部署。
Ceph 也有自己的问题,特别是在云环境上。
它的多地域支持,虽然经常被当做优 势来宣传,但实际上还是 master-slave 模型。
因为只能从 master 到 slave 进行复制,所以 在多于两个地域时,基础架构上的负载分布会很不均衡。
Ceph 的两地域设计也不太实际,因为只支持 master 上的写入,而不阻隔 slave 上的 写入。
这样的配置最严重时可能导致整个集群的崩溃。
Ceph 的另一个短板是安全性。
云计算节点上的 RADOS 客户端直接与 RADOS 服务 器交互所使用的网络与 Ceph 用于未加密复制流量的网络相同。
如果某个 Ceph 客户端节 点被入侵,攻击者便能得到存储网络的所有流量。
为什么不直接构建一个 Ceph 集群,扩展到两个地域呢?一个原因是 Ceph 只能同步 写入,并且要求写入节点达到 quorum 数才能成功返回。
假定有一个集群跨越两个地域,相隔数千英里,100ms 延时,非常慢的网络连接。
假定将两个副本写入到本地地域,另外两个写入到远程地域。
这时四次副本的 quorum 数 是三次,这就意味着这次写请求在至少完成一次远程拷贝前都不会返回。
也就意味着即使 是很小量的一次写入也会延迟 0.2 秒,而大批量写入则会因为吞吐量限制严重受阻。
hdfs(分布式文件系统)优缺点
hdfs(分布式⽂件系统)优缺点hdfs(分布式⽂件系统)优点⽀持超⼤⽂件⽀持超⼤⽂件。
超⼤⽂件在这⾥指的是⼏百M,⼏百GB,甚⾄⼏TB⼤⼩的⽂件。
⼀般来说hadoop的⽂件系统会存储TB级别或者PB级别的数据。
所以在企业的应⽤中,数据节点有可能有上千个。
检测和快速应对硬件故障在集群的环境中,硬件故障是常见的问题。
因为有上千台服务器连接在⼀起,这样会导致⾼故障率。
因此故障检测和⾃动恢复是hdfs⽂件系统的⼀个设计⽬标。
流式数据访问Hdfs的数据处理规模⽐较⼤,应⽤⼀次需要访问⼤量的数据,同时这些应⽤⼀般都是批量处理,⽽不是⽤户交互式处理。
应⽤程序能以流的形式访问数据集。
主要的是数据的吞吐量,⽽不是访问速度。
简化的⼀致性模型⼤部分hdfs操作⽂件时,需要⼀次写⼊,多次读取。
在hdfs中,⼀个⽂件⼀旦经过创建、写⼊、关闭后,⼀般就不需要修改了。
这样简单的⼀致性模型,有利于提⾼吞吐量。
缺点低延迟数据访问低延迟数据。
如和⽤户进⾏交互的应⽤,需要数据在毫秒或秒的范围内得到响应。
由于hadoop针对⾼数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟来说,不适合⽤hadoop来做。
⼤量的⼩⽂件Hdfs⽀持超⼤的⽂件,是通过数据分布在数据节点,数据的元数据保存在名字节点上。
名字节点的内存⼤⼩,决定了hdfs⽂件系统可保存的⽂件数量。
虽然现在的系统内存都⽐较⼤,但⼤量的⼩⽂件还是会影响名字节点的性能。
多⽤户写⼊⽂件、修改⽂件Hdfs的⽂件只能有⼀次写⼊,不⽀持写⼊,也不⽀持修改。
只有这样数据的吞吐量才能⼤。
不⽀持超强的事务没有像关系型数据库那样,对事务有强有⼒的⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FastDFS是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站,视频网站等等。FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度的工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:
诸如软驱、CDROM、和ZIP之类的存储设备可以在网络上面被别的机器使用。可以减少整个网络上的可移动介质设备的数量。
MooseFs
Moose File System是个具备容错功能的网路分布式文件统,它将数据分布在网络中的不同服务器上,MooseFs通过FUSE使之看起来就是一个Unix的文件系统
NFS
NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件
本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。
用户不必在每个网络上机器里面都有一个home目录。home目录可以被放在NFS服务器上并且在网络上处处可用。
Hadoop HDFS
授权协议为apache,开发语言java,资源耗费有点大。
本地写缓存,够一定大小(64 MB)时传给服务器
使用流的方式访问数据
不适合通用文件系统
MogileFs
支持应用层的组件扩展
无单点故障
自动文件复制
适合存储静态只读小文件,比如图片
FreeNAS
FreeNAS是网络附加存储(NAS)服务专用操作系统(FreeBSD的简化版)。基于m0n0wall防火墙,该系统通过提供磁盘管理及RAID软件,可让用户home将PC转换为NAS服务器,支持FTP/NFS/RSYNC /CIFS/AFP/UNISON/SSH /pro协议,旨在让人们重新使用旧硬件
主流分布式文件系统比较
Lustre
lustre是一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护。
该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数量存储系统
适合大型集群
支持动态扩展
需要对内核打补丁,深度依赖Linux内核和ext3文件系统
支持文件元信息
支持fuse,可以直接使用mount命令挂载
编译依赖少,文档全,默认配置可满足大部分需求
开发很活跃
可以以非root用户身份运行
可以在线扩容
支持回收站
支持快照
对master server存在单点依赖