IPFS技术 |从本地文件系统到分布式文件系统

d688c47d6b89275dea3544403c78090a

我们一直在研究和改进GlusterFS,基于它的商业产品也广泛应用在各种存取非结构化数据的商业项目中。一些人会问到,为什么你用了GlusterFS,还用XFS?虽说都是文件系统,但它们的概念和作用有很大的区别。文件系统的目的是通过特定的机制快速找到用户需要的内容。在这个查找的过程中,需要经过的步骤不止一个,因此,就要不同的模块来实现。可以简单地这么理解:

分布式文件系统(比如GlusterFS):确定文件在哪些节点的哪些盘上面。

本地文件系统(比如XFS):确定文件在硬盘上的具体位置,获取原始的数据。

大多数分布式文件系统都是这么处理的。只是细节差别较大而已,比如,有的架构比较复杂,带有元数据服务器;有的为了维护性和扩展性,不采用元数据服务器。GlusterFS采用的是无元数据架构,理解起来比较简单,且实际应用起来,稳定性也非常好。对于客户端的请求,首先是通过弹性HASH算法,定位到文件应该在哪些节点上,在哪些brick上。Brick为基本的存储单元,可以是一个硬盘,也可以是一个RAID设备,它会被格式化成本地文件系统(一般是XFS),和GlusterFS进行对接。在brick里面定位到具体的文件,就是本地文件系统的事情了,GlusterFS也用不着这些底层的事情。

XFS等本地文件系统十分稳定,经过了超过十年的大规模部署的考验,但是,它们毕竟不是专门为分布式而生。所以,现在就有一个比较重要的观点,如果分布式存储采用这种传统的两层架构,其性能不会得到特别的优化,需要想办法来突破这个障碍。Ceph以前的本地文件系统主要也是XFS,它的基本存储单位OSD和GlusterFS的brick类似,都需要格式化成XFS。但新的版本采用了bluestore,完全抛弃了XFS。可以认为,bluestore的确是一种创新的架构,让ceph能够直接操作硬盘;但另外一个角度来说,bluestore其实是ceph专门为自己定制的一款本地文件系统,能结合本地数据库和SSD的优化,加快其性能。bluestore刚出来不久,势头凶猛,不过,结合CephFS提供文件功能,其稳定性还需要进一步提升。使用bluestore的Ceph的架构并不简单,相对来说,GlusterFS的文件处理流程就要简洁许多。

从上面的描述可以看出,常规情况下,如果就单个节点来说,分布式文件系统的性能是弱于单机用的本地文件系统的性能的。毕竟分布式文件系统底层会用到单机文件系统,且自身需要额外处理很多分布式相关的逻辑,还涉及到不同节点之间的数据同步等问题。但分布式带来的最大好处就是统一命名空间,且节点可以横向扩展。统一命名空间给我们带来了PB级数据卷的功能,可以认为不同的节点,其所有的硬盘容量叠加在一起,给用户提供了一个虚拟的大硬盘,我们是对这个硬盘格式化,在上面进行操作,不用担心数据具体落在哪个节点和哪块盘上。横向扩展带来的好处是当容量不够时,就增加新的节点,且性能可以叠加。以往的磁盘阵列通过SAS线缆连接JBOD的方式属于纵向扩展,新增的磁盘柜不能独立接入网络,其性能和可靠性都受到了较大的制约;横向扩展的话,所有节点都独立接入网络,I/O数据可以直接读写,因此总的带宽能够快速叠加。大家都说分布式存储的性能好,其实是基于它有更多的节点,其总的聚合性能显然强于单机的存储。很多分布式存储都号称性能能线性扩展,但达到此目标是很有难度的。大文件的性能叠加相对来说容易,小文件(尤其是几KB)的小文件,其性能值就惨不忍睹了。有些时候,因为节点冗余导致的数据同步等开销,还有分布式存储本身的算法带来的问题,一台单机存储的小文件性能,甚至强于几个节点组成的分布式文件存储读写小文件的总性能。

当然,分布式文件存储虽然有不少问题,但只要数据量大的场合,必须要用到它。统一命名空间、横向扩展、高可用性等优势,给业务系统带来的价值还是非常大的。我们在给客户提供产品和解决方案的时候,也会基于小文件数目和存储总量等不同的需求,提供了不同版本的存储系统,包括为HPC和AI优化的分布式文件存储,通用场景的分布式文件存储、针对小规模存储集群进行特别优化的文件存储等。

上面讲的分布式文件系统,还是在局域网内提供服务。经过改进,也可以实现跨局域网的多地数据同步,但不同的部署点需要专线互联或者足够高的带宽保证其数据传输。不过,现在又出来了一个开源的文件系统项目,叫做星际文件系统,简称为IPFS。IPFS的目标非常宏伟,就是要取代现在的中心化的互联网架构。它自然是一套分布式文件系统,但和前面讲的GlusterFS等不一样的是,它甚至可以把整个互联网上的节点都连接起来,形成一个超大的统一命名空间。它的目的不是取代用于传统企业业务的分布式文件系统,所以和前述的系统没有任何竞争关系。它的最主要目的是以一种可靠的方式来永久保存数据,且数据不掌握在任何公司或者任何中心化组织的手里。它也可以用于商业领域,比如,因为其P2P的特点,也可以用于互联网视频的加速。因为它的数据分散存放在世界各地,每个存储节点本身都是不可靠的,所以为了获取更高的可靠性,它必须有更大的冗余度。每秒要实现GB级别的读写,或者大量的小文件访问,使用IPFS显然是不合适的。IPFS的文件访问不是POSIX接口,所以无法像通用文件系统那样挂载——古老的POSIX接口可是本地文件系统和大多数分布式文件系统直接支持的,这样是使用文件系统为什么方便的最直接原因。当然也可以通过一些网关,提供HTTP API,甚至模拟POSIX接口,但即使那样,其运行效率也不会很高。 IPFS因为和区块链可以结合,所以最近很热,有不少人都想利用它来挖所谓的文件币,通过提供存储空间、带宽、在线时间来实现挖矿收入。它的深层次技术解析,后面我会提及到。可以简单地这么理解,IPFS这个文件系统,站在了一个更高的层次,实现的功能是整个互联网的数据的分发,想取代的是基于HTTP协议的Web;它的每个节点,可以是基于本地硬盘的单机文件系统,也可以是GlusterFS等分布式文件系统。

因此,单纯的“文件系统”一个词,表示的范围太大。叫“文件系统”的软件,干的活可能完全不是同一类型的。但无论如何,它们都借助“文件”这个抽象的逻辑概念,实现了数据的分发检索、逻辑组织和物理分布,在复杂的数据处理流程中,在不同的环节完成分配给自己的那部分任务。

本文来自投稿,不代表IPFS中文资讯网立场,如若转载,请注明出处:https://www.ipfsnews.cn/2900.html

发表评论

登录后才能评论