linux文件系统

Posted theif

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux文件系统相关的知识,希望对你有一定的参考价值。

                  APP

                  |  |

                  |  GNU C library

                  |  | (上层为用户空间,下层为内核空间)

                 System call  interface

                    |

                 Visual file system(缩写VFS,虚拟文件系统)

                    |

                 Individual file system (各种类型的文件系统,比如NTFS、FAT、EXT2、EXT3等等)

                    |

                 Buffer cache

                    |

                 Device drivers(系统驱动,连接硬件设备)

 

1、从上图看的出整个linux文件系统的核心就在于VFS,链接了用户和硬件,并且在硬件层上将各种类型文件系统隔离开来,实现统一兼容支持,使得开发人员的操作统一(像open、write、read)

 

技术分享图片

2、上面这个图清晰的说明了文件系统与磁盘等硬件设备的关系(图片来源于《The Linux Programming Interface》)

  ①文件系统从磁盘分区映射过来后分为4个部分,分别是:boot block、super block 、i-node table、 data blocks

  ②boot block 启动区,这是硬件中的一段特定区域,相当于主板上的Bios块,硬盘上的MBR,这部分不是本篇的重点,不做详解

  ③super block 超级块,储存了文件系统的相关信息,文件系统块大小、文件系统根目录项、inode、操作函数等等

  ④inode table 索引节点表(就这样翻译吧),每个文件都有一个inode,通过inode可以操作该文件, inode表就相当于所有文件的集合。inode储存了文件的时间信息、用户信息、文件大小、操作函数等等

  ⑤data blocks 数据块,储存具体文件内容

  ⑥dentry table 目录项表,这个是隐藏boss,这个才是真正展现目录结构的表,从根目录下一层一层记录文件名(包括目录名,unix下一切皆文件),每个dentry对应一个inode

 

总结一下,如果要操作一个文件,首先从超级块中获取文件系统根目录项(dentry table),从根目录下一层一层找到文件所属dentry,根据dentry获取inode,根据inode的属性判断用户权限,获取操作函数,操作该文件。

以上是关于linux文件系统的主要内容,如果未能解决你的问题,请参考以下文章

Linux 文件系统管理

linux文件系统类型

linux系统中对文件系统的原理进行分析

Linux文件系统操作命令

linux kernel 文件系统编程接口

linux下啥文件系统支持超个4G的单个(重点)文件?