15.[文件]文件系统

15.[文件]文件系统

一,文件是如何在磁盘中进行创建的呢?

首先提出一个概念:什么是inode?

系统会进行分区,分区之后的结构如下图所示:

image

我们会注意到有inode table的存在,inode table就会对inode进行管理,那么其实一个文件就对应一个inode,inode中存储了文件的所有属性,例如后面的数据块信息(Data Blocks)。并且文件名是唯一的不能重复,这也是因为inode和文件名互为映射关系(互为key值)

现在我们进一步来思考分组还有什么以便继续进行我们的讲解map:

image

inode table中包含了很多inode编号。

怎么确定inode究竟有没有被分配过呢,这就需要查召inodemap来进行确定。

文件=内容+属性

**inode中存储了文件的所有属性,**那么内容呢?

block bitmap来进行表示哪些数据款被使用了,哪些没有被使用。

所以文件系统整体是怎么被管理的呢?

image

这就上图红色的来进行管理了

Super Block用于存放文件系统本身的结构信息,存储了整个文件系统的inode的数量,数据块的数量等

GDT描述了各个区域的起始位置,以及当前分组的总体状态

Boot Block用于计算机开机时告知磁盘的分区情况,帮助计算机加载操作系统等。Boot Block不仅仅是一个分区只有一个,而是整个硬盘中只有一个,放在整个硬盘的第一个分区头部

总结:

inode Table:存储当前分组所有文件的inode

inode Bitmap:标识当前分组的inode的使用情况

Data Blocks:管理当前分组的数据块

Block Bitmap:标识当前分组的数据块的使用情况

GDT:宏观描述一个分组

Super Block:描述一个分区,文件系统的核心

Boot Block:描述整个硬盘的分区情况,帮助计算机加载操作系统

所以文件创建的步骤是:

  1. 申请一个空闲的inode,将文件信息(文件类型、所有者、权限、时间戳等)记录在inode属性中

  2. 寻找空闲的Data Block,将数据块的地址(通常是块号)填入inode中。

  3. 文件系统将新文件的名字和inode添加到父目录中,作为一个目录项,这个目录项记录了新文件的名字和inode号码(对应起来的)

  4. 初始化数据块(如清零)

  5. 更新map

image

这前面的数字就是inode

二,文件访问和修改

比如说现在通过路径/usr/bin/ls来访问一个文件,其过程为:

1.先在根目录中找到文件名usr对应的inode编号

2.访问文件usr,在文件usr中找到文件名bin对应的inode编号

3.访问文件bin,在文件bin中找到文件名ls对应的inode编号

4.访问文件ls

三,软硬链接

软链接

ln -s 源文件/目录 软链接名称
  • 在不同文件系统或分区之间创建快捷方式

  • 链接到可能会被移动或删除的文件或目录

  • 创建指向目录的快捷方式

硬链接

ln -s 源文件/目录 软链接名称
  • 为同一个文件创建多个名称

  • 提高文件访问效率,因为硬链接直接指向文件数据块

  • 备份或归档文件时保留文件的硬链接关系

取消链接操作:

image

practice1:

image

practice2:

image

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值