关于目录和文件系统的概念很清晰,但是对于目录本身,
它是像普通文件一样拥有inode和block存在于文件系统里的,系统启动后由内核/进程来维护的?
还是在内核启动后,生成的临时文件?
或者是目录本身是文件系统的一部分?
求大神解惑!!
小白求解惑目录与文件系统的问题
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 2
- 注册时间: 2017-10-31 3:07
- astolia
- 论坛版主
- 帖子: 6465
- 注册时间: 2008-09-18 13:11
Re: 小白求解惑目录与文件系统的问题
它是像普通文件一样拥有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除了包含磁盘上的文件系统数据以外,还有以文件和目录的形式组织成的部分系统资源和内核信息,比如/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
-
- 帖子: 2
- 注册时间: 2017-10-31 3:07
Re: 小白求解惑目录与文件系统的问题
首先感谢指点和提供的三篇文章,之前的理解有点局限于 目录二字 和格式化后的具体文件系统,忽略了VFS,看来VFS才是起到承上启下的核心作用。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会根据链表中注册的磁盘上的具体文件系统来进行动态挂载,其中链表中有一种特殊的注册方式叫init_rootfs(),这个注册方式是内核的一部分。
VFS初始化时不存在根节点,也就是说在任何磁盘具体文件系统挂载之前,VFS可以看做是一个空树。
然后VFS会生成根节点init_mount_tree(),和挂载链表中用init_rootfs()方式注册的磁盘文件系统。
在init_mount_tree()中,do_kern_mount("rootfs")生成根节点,在链表中注册的rootfs作为参数挂载到VFS中。
那么有个小问题,请问那个目录规范FHS,可不可以这样理解,在有分区就挂载分区,没分区由VFS统一来创建。
由于c/c++水平不够,只能尽量了解运行过程来达到使用目的。