文件系统在正式使用之前需要经过两次格式化:
低级格式化和高级格式化
低级格式化:硬盘在初始情况下,硬件厂商对硬盘所做的划分磁道等一系列格式化工作;
高级格式化:用户使用mkfs,mknod,tune2fs等命令对磁盘进行操作,将硬盘初始化为指定的文件系统的过程。
Linux下常用的文件系统有:
FAT32: vfat NTFS(Windows下) ISO9660(光盘) CIFS ext2/3/4 xfs
reiserfs jfs nfs ocfs2 gfs2 swap
我们都知道,文件系统是为了操作磁盘上的文件而存在的一种建立在硬件之上并存在与内核之中的一种软件。
linux下支持的文件系统类型远不止这几种,然而LInux支持如此之多的文件系统类型,在对文件系统操作的过程中,相同的操作在不同的额文件系统上的有着不尽相同的用户接口,所以在操作的时候就会类似的情况:
在不考虑VFS存在的情况下,在两种不同的FS上创建同一个文件/目录,ext3和xfs对应的操作并不一定都是mkdir,所以在不同的FS上创建一个文件/目录就需要不同的指令来完成操作,这种指令取决与当前FS提供给用户的接口,这就提高了用户操作的难度。更何况linux下存在千百种各种不同的文件系统,因此诞生了VFS 这种神奇的东西:
VFS:虚拟文件系统,是一种存储与内核之中,为各种不同FS与用户之间提供统一接口的软件。
VFS沙漏模型:
VFS为用户操作文件系统提供了统一的接口,用户可以使用统一的指令(cat)来读取ext2,xfs和nfs文件系统上的内容,而不必考虑他们内部的实现机制。
VFS完整模型应该时酱紫滴: