1、文件系统
1.1 文件系统的定义
如果不考虑文件系统的实现,单纯就文件系统的概念而言,理解为一种访问数据(按目录层级组织的文件)的通用协议或者接口更加容易理解。业界比较常见的规范,如POSIX文件接口、NFS协议等。最近十年流行的大数据文件,如HDFS等,其实也并没有逃离文件,目录以及其访问接口这些概念。
如果按严格意义上来定义,文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。
在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。
文件系统通常使用硬盘和光盘这样的存储设备,并维护文件在设备中的物理位置。但是,实际上文件系统也可能仅仅是一种访问资料的界面而已,实际的数据可能是通过网络协议(如NFS、SMB、9P等)提供的或者暂存于内存上,甚至可能根本没有对应的文件(如proc文件系统)。
综合来讲,文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type)。
1.2 文件系统的发展
随着云计算的发展,文件系统实现的方式也是发展非常快速。从实现方式、使用场景以及功能特点等维度来进行分类,文件系统主要可以分为:单机文件系统、网络文件系统、集群文件系统和分布式文件系统。
- 单机文件系统
传统的单机文件系统用于操作系统和应用程序的本地存储。除了传统基于块的实现外,随着Append Only介质的发展,也有“Log-Structured”文件系统的实现,有利于一次append写入,多次随机读的场景。
- 网络文件系统
基于现有以太网架构,实现不同服务器之间传统文件系统数据共享。在云计算兴起后,也有基于分布式云存储的实现。
- 集群文件系统
在共享存储(SAN或者共享云盘)基础上,通过集群锁,实现不同服务器能够共用一个传统文件系统。随着云计算的兴起,也有基于云原生的实现,如阿里云数据库文件存储DBFS企业版等,在高可用性以及性能上有更加突出的表现。
- 分布式文件系统
在传统文件系统上,通过额外模块实现数据跨服务器分布,并且自身集成raid保护功能,可以保证多台服务器同时访问、修改同一个文件系统。性能优越,扩展性很好,成本低廉。
2、竞品分析
以下介绍这几大类文件系统的主要区别:
文件系统种类 |
优点 |
缺点 |
产品 |
单机文件系统 |
实现早,经过数十年发展,成熟稳定。大多数为开源产品,并且免费使用。 |
数据无法在服务器之间共享。不具备特定使用场景的性能优化与功能增强。 |
Ext2、Ext3、Ex4、NTFS、FAT、FAT32、XFS、JFS等。 |
网络文件系统 |
多节点共享访问,实现NFS协议,数据一致性遵守“Open-Close”原则。商用产品居多。 |
两台服务器不能同时访问修改,性能有限。 |
NFS、CIFS、阿里云NAS等。 |
集群文件系统 |
多节点同时并发共享读写,实现POSIX协议,数据一致性与本地文件系统一样。性能优秀,多为企业级关键应用,用来实现高可用,如数据库集群,中间件集群等。有开源与商业产品。 |
扩展性有限(小于16台服务器)。 |
开源产品,如:GFS2、OCFS2等。 商业化产品,如阿里云数据库文件存储DBFS企业版、Veritas Cluster File System等。 |
分布式文件系统 |
有共享与非共享实现。共享实现也与网络文件系统类似。 |
适用场景单一,部分类型存在单点故障风险。 |
元数据集中管理,如lustre、HDFS等,适用于大文件存储,但元数据服务器可能成为系统扩展的瓶颈。 元数据分散管理,如gluster等,适用于小文件存储。 |
了解更多关于数据库文件存储DBFS企业版的产品信息,欢迎访问https://www.aliyun.com/product/dbfs
如果您对数据库文件存储DBFS企业版有任何问题,欢迎钉钉扫描以下二维码加入数据库文件存储DBFS技术交流群。
若有收获,就点个赞吧