一、硬盘分区与文件系统
1) 通常在拿到一块新的硬盘时,会将硬盘分割成几个不同的分区(partition)
2) 分好分区后,要把这些分区格式化(Format)成特定的文件系统格式(File System Format),才能够用来储存文件。格式化就是把分区切割成一个个小单位(称为block),并且block依序编号。block是储存文件内容的最小单位。在预设情况下,一个block的大小为4K,一个block最多只能用来储存一个文件。
二、Linux文件系统的体系结构
1) 从图2.1可以看出,Kernel对上(用户空间的应用程序)提供统一的系统调用(System Call)作为接口,对下(物理存储设备)使用设备驱动进行存取数据。而系统调用和设备驱动之间就是文件系统。
图2.1 Linux文件系统体系结构
2) Linux使用虚拟文件系统(Virtual File System)来屏蔽底层异构文件系统的差异,VFS提供一个统一的抽象接口。VFS最早由Sun公司提出以实现NFS(网络文件系统)。但是现在Unix家族大多数系统都采用了VFS(包括Linux、FreeBSD、Solaris等)。
图2.2 VFS
VFS并不是一种用于外部存储器的文件系统格式(如Ext2,NTFS等)。它是kernel的一部分,VFS在系统启动时建立,在系统关闭时消亡。
VFS采用面向对象的架构,主要对象如下:
•superblock对象:表示一个具体的可封装的文件系统
•inode对象:表示一个文件的元数据(metadata)
•dentry对象:表示一个目录项
•file对象:表示一个与进程相关联的已打开的文件