文件系统被划分成很多区。文件系统最主要包括了inode,目录项。

inode(索引节点): Inode包含了文件的元数据,如文件大小、创建和修改时间、权限信息、所有者和组信息,以及指向文件实际数据块的指针列表。每个文件和目录在文件系统中都有一个唯一的Inode与之对应(目录也是文件)

目录项: 记录文件的名字、索引节点指针以及与其他目录项的层级关联关系。多个目录项关联起来,形成目录结构。

但是目录项是由内核维护的一个数据结构,不存放于磁盘,而是缓存在内存。

目录项和索引节点的关系是多对一。一个文件可以有多个别名。比如,硬链接的实现就是多个目录项中的索引节点指向同一个文件。

操作系统:文件系统_文件系统

   目录项可以表示一个目录或文件,一个路径如/a/b/c,a,b,c在内核中都有一个目录项,a、b是目录所以会有一个子目录链表,c是文件所以没有这个子目录链表。a、b、c都有一个inode指针指向对应的索引节点。每个目录项都有指向父目录。

   所以目录的组成可以理解为一个多叉树,有子链表和指向父目录项的指针。这样遍历目录的话会容易一点。

   多个目录可以指向同一个inode节点。如a/b/f,c/d/f,f文件同时存在两个目录下,f文件有多个路径名,两个目录项都指向f的inode节点。这样的连接为硬链接。创建硬链接相当于为现有文件添加一个新的目录项,它们共享相同的inode和数据块。硬链接会增加inode节点的连接计数。只有当所有硬链接都被删除时,文件内容才真正被清除。

     与硬连接对应的是软链接。软链接是一种特殊的文件,有inode和数据块,但是数据块存的是另一个文件的路径名。访问软链接,系统会解析路径名,删除软链接只影响链接本身,不会影响目标文件。删除目标文件后,软链接试图访问会找不到目标文件。

 

操作系统:文件系统_操作系统_02

   磁盘可以被划分为一个或多个分区,每个分区可以格式化为一个独立的文件系统。

   每个文件系统有自己的根目录(/),并建立目录结构和文件。用户通过挂载(mount)操作将分区关联到全局文件系统树的某个挂载点,使得这些分区内的文件和目录对用户可见并可访问。

操作系统:文件系统_硬链接_03