小白求解惑目录与文件系统的问题

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
sam99
帖子: 2
注册时间: 2017-10-31 3:07

小白求解惑目录与文件系统的问题

#1

帖子 sam99 » 2017-10-31 3:25

关于目录和文件系统的概念很清晰,但是对于目录本身,
它是像普通文件一样拥有inode和block存在于文件系统里的,系统启动后由内核/进程来维护的?
还是在内核启动后,生成的临时文件?
或者是目录本身是文件系统的一部分?
求大神解惑!!
头像
astolia
论坛版主
帖子: 6433
注册时间: 2008-09-18 13:11

Re: 小白求解惑目录与文件系统的问题

#2

帖子 astolia » 2017-10-31 19:32

它是像普通文件一样拥有inode和block存在于文件系统里的,系统启动后由内核/进程来维护的? 是
还是在内核启动后,生成的临时文件? 也算是
或者是目录本身是文件系统的一部分? 是

更惑了吧?因为日常使用中遇到的“文件系统”,实际上是虚拟文件系统VFS,并非是存在于磁盘上的原始的文件系统。
VFS除了包含磁盘上的文件系统数据以外,还有以文件和目录的形式组织成的部分系统资源和内核信息,比如/proc/下的目录,就是由内核在运行时生成的

中文的文章没搜到特别好的,拿这篇凑和一下
http://www.cnblogs.com/soaringEveryday/p/3523026.html
英文好的话直接看这篇
http://teaching.idallen.com/cst8207/14w ... -the-names

如果有编程基础的话,也可以看看这篇VFS的运作原理
https://www.ibm.com/developerworks/cn/l ... index.html
sam99
帖子: 2
注册时间: 2017-10-31 3:07

Re: 小白求解惑目录与文件系统的问题

#3

帖子 sam99 » 2017-11-01 9:21

astolia 写了:它是像普通文件一样拥有inode和block存在于文件系统里的,系统启动后由内核/进程来维护的? 是
还是在内核启动后,生成的临时文件? 也算是
或者是目录本身是文件系统的一部分? 是

更惑了吧?因为日常使用中遇到的“文件系统”,实际上是虚拟文件系统VFS,并非是存在于磁盘上的原始的文件系统。
VFS除了包含磁盘上的文件系统数据以外,还有以文件和目录的形式组织成的部分系统资源和内核信息,比如/proc/下的目录,就是由内核在运行时生成的

中文的文章没搜到特别好的,拿这篇凑和一下
http://www.cnblogs.com/soaringEveryday/p/3523026.html
英文好的话直接看这篇
http://teaching.idallen.com/cst8207/14w ... -the-names

如果有编程基础的话,也可以看看这篇VFS的运作原理
https://www.ibm.com/developerworks/cn/l ... index.html
首先感谢指点和提供的三篇文章,之前的理解有点局限于 目录二字 和格式化后的具体文件系统,忽略了VFS,看来VFS才是起到承上启下的核心作用。

第一篇讲的只能把根目录看走一个软连接,这样理解可能有点牵强。

重点说下对第三篇的理解
既然VFS是核心那么我可以这么理解:
内核启动建立VFS,然后还会有一个链表实例来维护所谓磁盘上具体的文件系统。
既然VFS是树,那么可以认为是数据结构中树的一种,具体是什么树不去深究。
接下来VFS会根据链表中注册的磁盘上的具体文件系统来进行动态挂载,其中链表中有一种特殊的注册方式叫init_rootfs(),这个注册方式是内核的一部分。
VFS初始化时不存在根节点,也就是说在任何磁盘具体文件系统挂载之前,VFS可以看做是一个空树。
然后VFS会生成根节点init_mount_tree(),和挂载链表中用init_rootfs()方式注册的磁盘文件系统。
在init_mount_tree()中,do_kern_mount("rootfs")生成根节点,在链表中注册的rootfs作为参数挂载到VFS中。

那么有个小问题,请问那个目录规范FHS,可不可以这样理解,在有分区就挂载分区,没分区由VFS统一来创建。
由于c/c++水平不够,只能尽量了解运行过程来达到使用目的。
回复