带你走进Linux VFS文件系统的世界

VFS文件系统即虚拟文件系统,它是Linux系统里面文件系统的一个核心,那么下面我就来讲解一下关于VFS文件系统的相关知识,如果你有什么不明白的,可以在评论里面留言,我们会找时间逐个回复的。

文件系统

带你走进Linux VFS文件系统的世界

文件系统就是操作系统里面对文件进行统一管理的一系列软件和数据的集合,有了文件系统,我们的上层应用才能够使用文件系统提供的接口对相关文件进行删除、重命名、移动等等操作,我们才能够用鼠标右键完成新建文件、删除文件、重命名文件等操作,虽然对于一般人来说,看不到文件系统,但是其实我们一直都在经常使用。

Linux下的多种文件系统

带你走进Linux VFS文件系统的世界

ext2/3/4文件系统:ex4文件系统对于3和2来说,应该是发生了质的改变,在3中,子目录数的上线是32000个,而4中打破了这种局限,在4之前如果对文件进行写数据之后,文件系统将立即将数据同步到文件中去,但是在4中,当发生写数据的时候,不是立即同步,而是延迟等到不得不同步的时候才进行同步,这种特征提高了IO的性能。

分布式文件系统:所谓分布式文件系统,其实大家也不陌生,比如现在的百度网盘、360云盘等等,其实都是分布式文件系统的应用,其中GFS(2)就是一种分布式文件系统,有了分布式文件系统,我们的应用里面的文件存储就能够使用这种文件系统进行存储,然后提供一个域名进行访问,即可实现我们自己的图片存储系统,从此告别NFS和服务器之间通过脚本完成数据同步的时代,因为数据保存和数据同步等等都是分布式文件系统帮我们完成了。

xfs文件系统:xfs文件系统是一个高扩展、高性能的文件系统,它是Red Hat Enterprise Linux 7的默认文件系统,它支持对元数据进行日志记录,提供快速宕机恢复能力;同时它支持超大文件的存储和超大数量的目录;IO性能也非常高,从CentOS 7开始,也将这个文件系统作为默认的文件系统,因为该文件系统比ext4更优秀。

nfs文件系统:即网络文件系统,该种类型的文件系统,就是本地NFS客户端能够透明的读取远端NFS服务器上面的文件,同时就像访问本地文件一样,在我们的网站初期,由于成本、技术问题等,我们可以将网站的一些上传图片通过这种文件系统来存储,这样不管有几台服务器,都可以通过NFS客户端进行访问。

还有很多文件系统我们就不一一列举了,只需要知道每种文件系统都有每种文件系统的特征,同时一些先进的文件系统会提供很多高级的功能。

VFS文件系统

带你走进Linux VFS文件系统的世界

从上面的多种文件系统,我们能够看到,有很多类型的文件系统,每种文件系统要么兼容之前的同类型文件系统并添加一些新的特征,比如ext4兼容ext3,ext3兼容ext2,要么会提供和其他文件系统截然不同的新特征以满足某些特定的需求,那么现在问题来了,每种文件系统都是有区别的,那么如果我们现在需要读不同文件系统下面的某个文件,估计都要分别单独处理,这样肯定会造成很多代码的冗余,同时维护成本也很高,于是诞生了VFS文件系统,用一个统一的接口提供给上层应用,然后具体的对不同文件系统的操作兼容由VFS来完成,也就是VFS为我们访问不同文件系统里面的文件提供了一个统一的抽象接口。

从上面的讲解,我们能够看到,VFS文件系统是一种先进的设计模式,大家想想现在的基于接口的编程或者分层设计思想、PHP里面的数据访问抽象层PDO等是不是都和VFS有异曲同工之处呢。

相关推荐