背景知识
文件系统的分类
文件系统指的是以文件的方式管理储存设备的系统。对于文件系统的分类方式有很多。围绕本文主题,根据文件系统是否涉及到具体的实现来分类,文件系统可以分成两大类:
第一类:虚拟文件系统(VFS)
第二类:物理文件系统,诸如EXT,FAT,NTFS等。这类文件系统有一个最大的特点是,每个文件系统都对应一种特有实现方式。例如,FAT会使用一个表格来记录存储设备的使用现况的,
虚拟文件系统(VFS)
下面就重点谈谈Kaiwii对VFS的理解。
以linux为例,linux可以同时支持多种物理文件系统共存的。比如说,某个linux系统总共有3个分区,那么第一个分区可以使用NTFS,第二个分区可以使用NTFS、EXT或者任何一种linux支持的物理文件系统。看到这里,你可能有这样子的疑问,linux是怎样子实现的呢?
如果你是linux的构造者,要实现上段中的要求,你可能首先想到的要屏蔽具体物理文件系统实现时的差异吧。的确如此,linux在文件系统的实现上,采用了面向对象的实现。将VFS作为具体物理文件系统的接口。用户使用文件系统的时候,不直接跟具体的物理文件系统打交道。而是通过调用VFS支持的文件管理系统的API,而VFS又具体调用具体物理文件系统的方法,实现文件的存取。
如果你之前有了解过,24个经典面向对象设计模式中的门面模式(facade)的话,可能可以更加容易理解。VFS就是里面谈到的门面,而具体的物理文件系统就是具体的实现。
为什么使用fstab
看完背景知识,你可能有这么一个疑问,VFS是怎么记住他属下的所有具体物理文件系统的呢?
答案是,就VFS本身,他是记不住的。为什么?因为VFS仅存活在内存中。每次,当你关上电源以后,VFS就挥一挥衣袖,不带走一片云彩。
所以,可能就想,太需要一种静态的文件,将VFS的持有的信息保存到一个文件中。那么每次,开机关机,操作系统都可以通过读取这个文件的方式,重新装载关于分区的信息。
而这个文件,就是/etc/fstab。
本文仅仅说明为什么使用/etc/fstab。至于这个文件的书写规范,本文就先不谈了。