Linux学习第十四篇--文件系统和目录树的关系

使用dumpe2fs命令查看文件系统的属性

我们使用man dumpe2fs命令查看该命令的描述,发现该命令的作用主要是输出超级块和块组(BlockGroup)的信息.

个人认为里面比较有用的选项有两个,一个是-b 用它来查询坏道,另一个是-h 这个命令只打印superBlock的信息.
接下来我们试一下这个命令.
首先我们使用df命令查看当前使用的文件系统,.

然后我们使用命令 dumpe2fs  -h /dev/xvad1 来查看当前使用的文件系统的超级块中存储的信息.

查出来的数据,基本都可以通过名称得到其含义,故此处不再进行过多的解释.同样我们可以通过dumpe2fs /dev/xvda1 来查看包含了BlockGroup的信息.
关于BlockGroup的信息根据描述也能比较直观的了解,故不再解释.

文件系统和目录树的关系

通过之前的学习我们了解到每一个文件/目录都会且仅会占用一个inode节点,然后根据文件的大小去分配使用的block.

那么,我们的文件系统又是如何同目录结合到一起的呢?

目录

当我们创建目录的时候,文件系统会分配一个inode节点给这个目录,同是还会分配至少一块block给这个目录.
这个inode节点记录了这个目录的权限以及文件属性等,而这个block则记录了该目录下的文件名称及其对应的inode节点.

通过上图,我们也可以理解,为什么文件的增删改需要目录的w权限了,因为文件名称是存放在目录对应的数据块中的.


文件

当我们创建文件的时候,文件系统会分配一个inode节点给该文件,同时分配至少一个数据块给该文件.

目录树的读取

既然我们了解了目录和文件的存储结构,那么系统又是如何读取目录树的呢?
当我们需要读取一个文件的时候,比如/tmp/panda/default.
系统首先通过挂在信息找到挂载点的inode(通常情况下为2)

然后根据该inode读取对应block中文件名数据,找到tmp/以及其对应的inode节点,依次类推.就能够找到我们需要的数据了.
当然其中每一步都还有其他操作的,比如验证用户权限.

创建新文件的步骤

当我们创建一个新的文件时,通常会经过一下几个步骤:
1.首先判断用户对需要新建文件的目录有没有wx权限,
2.然后获取空白Inode节点,写入权限等信息.
3.获取可用block,写入实际数据.
4.更新InodeMap和BlockMap及SuperBlock.
5.文件创建完毕.

上图就是文件创建的简单流程,我们注意一下红框的部分,如果红框中操作执行过程,突然中断,就会造成数据不一致.
早期的EXT2文件系统中,出现这种状况会根据superBlock中的是否挂在和文件系统的状态来决定是否比对整个硬盘的数据,一旦比对的话,是一件非常耗时的操作,
于是在EXT3中,专门规划出了一个区块,用来专门记录文件的增改操作,这就是日志式文件系统.

日志式文件系统

当我们需要创建或者修改文件的时候,首先会在日志文件系统中记录某个档案及其准备要写入的信息.然后开始写入权限和数据,然后更新inodeMap,blockMap以及SuperBlock. 之后在记录该档案的操作已经完成.
如果,这时候再发生数据不一致的情况时,根据文件操作系统,可以有针对性的修改文件.

附加知识点
我们知道只有将数据加载到内存中,CPU才可以对其进行处理,但是硬盘的读写速度和内存的读写速度,相差很多,难道我们每次使用数据的时候,都要因为硬盘读写速度man而等待吗?那么linux又是如何处理的呢?
在linux中,采用异步方式对文件进行操作,当系统加载了某一文件后,会给该文件添加一个标记,默认为clean,当该文件被修改时,标记变更dirty,系统则会不定时的讲dirty标记的数据写入硬盘.

经过刚才的了解,我们知道文件系统必须要挂载到目录树上才能被使用,那么什么叫做挂载呢?
挂载:将文件系统和目录树结合的动作叫做挂载.
有一点需要注意的是,挂载点必须是目录,这个目录就是这个文件系统的入口.

转载于:https://my.oschina.net/u/3101282/blog/1502888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值