【hello Linux】理解文件系统

目录

创建文件的过程:

删除文件的过程:

创建目录的过程:

查看inode编号:

硬链接

软链接



Linux🌷 

我们知道文件所有数据 = 文件内容 + 文件属性信息;

未打开的文件是被存放到磁盘/固态硬盘中的;

 在这里是以磁盘为例进行说明:

磁盘是以扇区为单位进行读写的;

确定磁盘具体写入位置要知道:盘面(磁头)、磁道、扇区;

我们试着可以将磁盘想象成线性的结构:

要确定磁盘位置:盘面、磁道、扇区;

线性结构:类似数组下标;

因此我们在这要进行地址转化,类似于虚拟地址和物理地址的转换;

磁盘太大,为了方便管理;

1. 分区:将磁盘划分为几个小的区域;

2. 格式化:如果进行格式化,相当于给分区中写入了文件系统(原来的数据不存在);

为了更加方便管理,我们将分区更细小化;

 

创建文件的过程:

一个文件与一个inode编号相对应,首先在inode位图中找到第一个为0的,将其修改为1,在block位图中找到第一个为0的,将其修改为1,在inode块中写入文件所有信息,并且记录对应block块的位置,此后便可以进行数据写入操作。

删除文件的过程:

删除文件很简单,将文件对应inode的位图位置修改为0即可。

我们可以使用debugfs进行文件的恢复功能。

如果想要恢复最好不要在进行操作,避免将该文件inode位图分配给其他文件。

创建目录的过程:

目录也是文件,创建目录也如上述创建文件过程一般,不过目录的数据块中存放的是:

文件名与inode编号的映射关系!

查看inode编号:

ls命令中加上-i选项则可以查看文件inode编号;上述红色框框起来的便是文件inode编号;

Linux中:

文件名在系统层面是没有意义的 ,是给用户使用的。

Linux中真正标识一个文件,是通过文件的inode编号识别的!

一个文件一个inode!

硬链接:

OS找磁盘上的文件并不是通过文件名,而是inode编号

其实在linux中可以让多个文件名对应于同一个inode。

这便是使用硬链接的方法。

ln 源文件名 目标文件名

hard  和 myfile.c  的链接状态完全相同,他们被称为指向文件的硬链接。
内核记录了这个连接数, inode 655831 的硬连接数为 2
硬链接的本质:
在文件所在的目录中添加:新文件名和inode编号的映射关系;
我们在删除文件时干了两件事情:
1. 在目录中将对应的记录删除(文件名和inode编号的映射关系);
2. 将硬连接数 -1 ,如果为 0 ,则将对应的磁盘释放。

软链接:

ln -s 要链接的文件名 链接之后的文件名

软链接的使用场景:

如果在当前目录下访问一个文件特别麻烦,我们便可以建立软链接;

相当于Windows中的快捷方式。

经过查看,我们发现软链接是有自己独立的inode的!因此软链接是一个文件,数据块里面存储

(指向文件的所在路径 + 文件名)。 

补充:

我们新创建了一个文件,发现该文件的硬链接数为1;

新创建了一个目录,发现该目录的硬链接数为2 ;

这是因为该目录中的 . 文件也表示该目录;

它们的 inode 编号是一样的。

在mydir的当前目录下创建了tmp目录,mydir的链接数变为了 3;

光数该文件的别名便可知道;

1. mydir

2. mydir目录下的 . 

3. mydir目录下的tmp目录下的 ..

总共三个!!!

坚持打卡!😃

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

瞳绣

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

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

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

打赏作者

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

抵扣说明:

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

余额充值