[转]linux 文件系统

转自  https://juejin.im/post/5b8ba9e26fb9a019c372e100 

https://zhuanlan.zhihu.com/p/50873899

设计一个文件系统需要考虑哪些因素  https://www.cnblogs.com/cxuanBlog/p/12517595.html

linux内核浅析--文件系统  https://zhuanlan.zhihu.com/p/61123802

linux内核--文件系统初探   https://juejin.im/post/5bb187a0f265da0aa3593bf9

从内核文件系统看文件读写过程  https://www.cnblogs.com/huxiao-tee/p/4657851.html

 

一些命令

stat filename  看文件inode信息

df -i 看inode总数和使用数量

dumpe2fs 可以dump ext2,ext3,ext4 filesystem information

      sudo dumpe2fs -h /dev/hda | grep "Inode size"

ls -i 看inode号

sysctl -a  | grep fs.file-max  第一个指令查看os最大打开数, 这是系统级限制.

ulimit -n 第二个指令查看单进程最大打开数, 这是用户级限制.

 

 文件系统综述(见上链接)

就像操作系统提取处理器的概念来建立进程的抽象,以及提取物理存储器的概念建立进程(虚拟)地址空间的抽象,我们引入了一个新的抽象 - 文件来解决这个问题。进程(线程),地址空间和文件,这些概念都是操作系统中最重要的概念。

文件是进程创建的信息逻辑单元。一个磁盘一般包含几千甚至几百万个文件,每个文件是独立于其他文件的,唯一不同的是文件是对磁盘的建模,而非对RAM的建模。事实上,如果把文件看成一个地址空间,那么读者就能理解文件的本质了。

  • 所有盘面上的同一磁道构成一个圆柱,称为柱面,柱面是系统分区的最小单位

 

 

文件可以有多种构造方式,下图列出了常见的三种:

 

VFS 

 

 

总结:

硬盘经过分区和格式化,每个区都成为了一个文件系统,挂载这个文件系统后就可以让Linux操作系统通过VFS访问硬盘时跟访问一个普通文件夹一样。

 

文件实现的关键问题是记录各个文件分别用到哪些磁盘块

 

linux kernel中文件系统的实现

 

posted @ 2020-03-25 15:49  yimuxi  阅读(162)  评论(0编辑  收藏  举报