【Linux】理解文件系统

本文详细介绍了Linux文件系统的结构,包括BlockGroup、超级块、GDT、块位图等组件。创建文件涉及存储属性、数据、分配情况记录和目录添加等步骤。硬链接通过inode实现多个文件名指向同一内容,删除时减少硬链接数,为0则释放磁盘空间。软链接则通过文件名引用。理解这些概念有助于更好地管理和操作Linux文件系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


我们使用 ls -l命令,除了可以看到文件名,还可以看到文件元数据,如图
在这里插入图片描述
这是因为 ls -l是读取磁盘上的文件信息,然后显示出来
在这里插入图片描述
stat命令也可以看到更多信息,如图
在这里插入图片描述
我们来解释一下

什么是文件系统

在这里插入图片描述
上图为Linux ext2文件系统,磁盘的文件系统图,擦盘是典型的块设备,硬盘分区被划分为一个个block,一个block的大小是由格式化的时候确定的,并且不可以更改,

Block Group

ext2文件系统会根据分区的大小划分为数个Block Group,而每个Block Group都有着相同的结构组成

  • 超级块(Super Block)
    存放文件系统本身的结构信息,记录的主要信息有:
    1.blockinode的总量
    2.未使用的blockinode的数量
    3.一个blockinode的大小
    4.最近依次挂载的时间
    5.最近依次写入数据的时间
    6.最近依次检验磁盘的时间等其他文件的相关信息
    Super Block被破坏了,整个文件系统结构就被破坏了
  • GDTGroup Descriptor Table)
    块组描述符,描述块组属性信息
  • 块位图(Block Bitmap)
    Block Bitmap 中记录着Data Block 中哪个数据块被占用了,哪个数据块没有被占用
  • inode 位图
    每一个bit表示一个inode是否空闲可用
  • i节点表
    存放文件的属性,例如 文件大小、所有者、最近修改时间等
  • 数据区
    存放文件内容的

创建文件的四个操作

我们输入以下命令创建文件,主要有四个操作

touch abc

在这里插入图片描述

1.存储属性
内核先找到一个空闲的i结点,内核把文件信息记录到其中
2.存储数据
找到空闲的磁盘块,将内核缓冲区的数据依次复制到磁盘块中
3.记录分配情况
将文件内容按照顺序存放,内核在inode上的磁盘分布区记录了上述块列表
4.添加文件名到目录
内核将入口添加到目录文件,文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来
在这里插入图片描述

理解硬链接

通过上面的图解,我们发现,找到一个磁盘上的文件依靠的并不是文件名,而是inode,linux中可以让多个文件名对应同一个inode

方法
ln [源文件] [硬链接]

在这里插入图片描述
连接后
在这里插入图片描述

  • abcdef的链接状态完全相同,他们被称为指向文件的硬链接,内核会记录下这个链接数,inode69634591的硬链接数就为2
  • 删除文件时,需要做两件事
    1.在目录中将对应的记录删除
    2.将硬链接数减一,如果为0,则将对应的磁盘释放

理解软链接

硬链接是通过inode引用另外一个文件,软链接是通过名字引用另外一个文件

方法
ln -s [源文件] [生成软链接文件]

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风铃奈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值