分布式文件系统(Distributed File System,DFS)
一、什么是分布式文件系统
1、文件系统的定义:
? 硬盘是计算机最主要的存储设备,数据按扇区存放在硬盘上。硬盘属于硬件,用户无法直接对其进行操作,由操作系统帮我们管理。文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。通俗地说,文件系统就是一个软件,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
2、一般文件系统:
? 在我们日常生活工作中,自己使用的电脑上都会安装操作系统,比如Windows。我们经常进行的操作如新建文件夹、新建文件、删除文件等等,都是文件系统在帮助我们工作,Windows文件系统有FATFS、VFATFS、NTFS等。除了Windows外,Linux也有ext、vfs等等文件系统,像这种一台计算机,单个存储节点、一个操作系统,一个具体的文件系统的场景称之为一般文件系统。
3、分布式文件系统:
? 分布式文件系统中的数据存储在多台机器上,这些专门用来存储数据的机器称之为存储节点,由多个节点构成分布式集群,节点上的小的分布式文件系统组合成总的分布式文件系统,由主服务器对总的文件系统进行管理。用户任意访问某一台主机,都能获取到自己想要的目标文件。
4、一般文件系统与分布式文件系统的比较:
一般文件系统 | 分布式文件系统 | |
---|---|---|
存储方式 | 集中存储在一台机器 | 分散地存储在多台机器 |
访问方式 | 系统总线IO | 网络IO |
特点 | 系统级别的文件系统,数据集中存放在一台机器,对数据的访问,修改和删除比较方便快速,存储服务器成为系统性能的瓶颈,伸缩性较差,扩展有限 | 应用级别的文件系统,分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展 |
适用场景 | 小数据量的存储 | 海量数据的存储 |
设计目标 | 高性能、可用性 | 高性能、可伸缩性、可靠性以及可用性 |
二、常见的分布式文件系统
? 常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
1、GFS(Google File System)
? Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。GFS是一个为Google内部设计的大数据分布式存储框架,由2003年Google发表的论文提出,遗憾的是Google并没有将其开源,但是基于GFS的设计理念,诞生了很多优秀的开源类GFS文件系统。
2、HDFS(Hadoop Distributed File System)
? HDFS是Hadoop(Apache开源项目)的专用文件系统, Hadoop是一个大数据计算框架,它允许使用简单的编程模型跨计算机集群分布式处理大型数据集,是Google发表的MapReduce算法的实现,HDFS是GFS的开源实现。
3、Ceph
? Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统,并使用Ceph完成了他的论文。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。与其它分布式文件系统相比,ceph 性能最高,因为其使用C++编写而成。 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。自2007年毕业之后,Sage开始全职投入到Ceph开 发之中,使其能适用于生产环境,经过十几年的发展,Ceph已经趋向于成熟。
4、Lustre
? Lustre是一个开源、分布式并行文件系统软件平台,具有高可扩展、高性能、高可用等特点。Lustre的构造目标是为大规模计算系统提供一个全局一致的POSIX兼容的命名空间,这些计算系统包括了世界上包含最强大的高性能计算系统。它支持数百PB数据存储空间,支持数百GB/s乃至数TB/s并发聚合带宽。
5、GridFS
GridFS 是MongDB的分布式存储系统,用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 可以更好的存储大于16M的文件。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在files集合中。
6、MogileFS
? MogileFS是一个开源的分布式文件存储系统,是由LiveJournal旗下的Danga Interactive公司开发。目前使用MogileFS的公司非常多,如日本排名先前的几个互联公司以及国内的Yupoo(又拍)、digg、豆瓣、大众点评、搜狗等,分别为所在的组织或公司管理着海量的图片。以大众点评为例,用户全部图片均有MogileFS存储,数据量已经达到500TB以上
7、FastDFS(Fast Distributed File System)
? FastDFS是一个开源的分布式文件系统,由纯C编写,性能很高。她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
8、TFS(Taobao File System)
? TFS是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能。
三、下一代分布式文件系统
1、预想
? 随着5G、AI、云技术的快速普及和发展,数据的产生呈几何级数增长,必然会带来更大的挑战,势必会催生出下一代分布式文件系统。会在解决最基本的数据存储问题后,我认为分布式文件系统需要解决的问题是如何针对当前系统架构缺点的改进,主要围绕在数据的多元化存储、更灵活的适用场景、系统的性价比提升、更强的适用性和更方便的运维等方面。其实,对大数据的操作有90%是对元数据进行操作,HDFS的元数据存储在内存,虽然性能高,但是内存的容量有限,系统支持的文件数量较少。Ceph将元数据保存在RADOS,IO操作多,路径长,性能不理想。
数据存储在内存,虽然性能高,但是内存的容量有限,系统支持的文件数量较少。Ceph将元数据保存在RADOS,IO操作多,路径长,性能不理想。
? 人类的智慧是无限的,相信随着时间的发展,在不断地实践和改进后,“数据革命”必然会取得胜利,分布式文件系统也必然会绽放更加绚丽的花!!