linux 文件系统详解

linux 文件系统

         最近转向linux的c的学习,想通过写博文的方式来记录下学习中遇到的问题,以及我对这些问题的解决方式。

         言归正传,想必大家对于linux文件结构都有过困惑吧,我反正是看的是晕头转向的,看了些大牛的讲解,我理解了不少并且将其整理如下,请各位斧正:

         在linux中一个重要的概念:一切都是文件。也就是说linux运行的核心就是对于文件系统的操作,所以我觉的理解文件系统很重要。

         问题:

linux或者说unix是怎么对文件进行操作的,系统是怎么记录文件的?当新建文件和目录的时候系统干了什么?

对于这些问题我觉得还是一步一步来:

首先得说说的是物理设备(磁盘:放置所有数据的地方)

大家肯定知道磁盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。每个盘片有一个磁头。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2N次方(N0.1.2.3)字节信息。在一个盘面中,不同半径的圆圈就称为磁道,而对于不同盘面的,相同半径就组成了柱面。容量的计算方法:

capacity = 磁头 *扇区存储值 *磁道 *扇区数

通过上面对与数据在物理设备上的存储有了了解了吧(学软件的对这个实在是很蛋疼的)。。

 

                   那么文件和物理的对应关系到底是什么样子的呢?可以简单的认为是下面这样:


一整块是一个硬盘的分区,一个分区只能对应一个文件系统。

文件系统是什么?请听我慢慢道来。我们都知道硬盘分区后都要进行格式化,由于每种操作系统所设定的文件属性、权限都不相同,为了存放需要的数据,则需要将分割槽进行格式化,就被称之为操作系统能够使用的filesystem

而对于传统的磁盘和文件系统,一个分割槽就只能格式化为一个文件系统,但是由于磁盘整列的发展,现在我们一般说一个可挂载的数据块为文件系统。

那么文件系统又是怎么运作的呢?

对于linux中文件包括属性(文件拥有者等)和权限(读写执行等)还有数据。对于属性和权限都保存在inode块中,而文件真正的数据确保存在data block中操作系统,而超级块中就保存的是整个文件系统的中容量,以及inodedata block的使用情况等

超级块(superblock):这里保存的是文件系统的信息,包括:inodedatablock的总量,已用和未用情况,以及文件系统的格式以及相关信息。(这一块出错,后果那是相当的严重)

inode块:记录文件的属性,一个文件用一个inode,并且里面包含了指向该文件的内容的block号码。

block:记录文件的真实内容,可能占有多个block

         在这里我就说这么多,如果那位同学想了解的更多,比如当block太多以至于一个inode节点记录不了,则系统为之提出了一级间接记录区以及二级记录区,请参考其他书籍。

 

通过上面的知识是不是对文件系统有了初步的认识呢?

 

下面我们通过详细介绍当创建文件时文件系统的操作过程。


对于文件系统create文件:

第一步   在inode区里面找到一个空闲的inode节点,如图节点921130

         第二步   在data block区中找到一系列的空闲block块,保存文件的信息,并且将对于那个的block块块号写到第一步中的inode节点中,如图 600,922,200,并且会更新超级块中的block和inode的使用情况

         第三步     将文件的入口inode与文件名字映射写入到目录项中,记住文件名字是保存在目录项中的哦。所以通过文件名字就能找到inode,找到inode就能够找到对应文件内容

 

目录的创建过程:

        

创建目录和创建文件过程大致相同:


         第一步:         仍然是查找一块空闲的inode节点,并且写入相应的信息。

         第二步:         也是查找空闲的block节点,这里写入的信息就不同了,为inode节点号码和文件名字键值对,这个列表其实也就是文件的入口,新建的目录至少包含两个个目录”.””..”其中”.”指向自己,”..”指向上级目录,我们可以通过比较对应的i-节点号来验证,887270 对应着上级目录中的child对应的i-节点号

         第三步     将更新block中inode和block使用情况

         第四步     添加目录的入口到父目录,即在父目录中的child入口。

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值