Linux文件系统及其删除原理

Linux文件系统

inode  block  superblock

一.inode是什么

文件储存在硬盘中,硬盘的最小存储单位是扇区(sector),每个扇区的大小为512字节(0.5KB)。
当硬盘读取文件时不会一个扇区一个扇区的读取,那样效率太低,而是一次读取多个扇区,也就是一个块(block),这样由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个块。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

二.inode的内容

 inode包含文件的元信息,具体来说有以下内容:

* 文件的字节数
  * 文件拥有者的User ID
  * 文件的Group ID
  * 文件的读、写、执行权限
  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
   在这里插入图片描述
  * 链接数,即有多少文件名指向这个inode
  * 文件数据block的位置

  •  可以用stat命令,查看某个文件的inode信息:
    

在这里插入图片描述

三.Linux文件系统删除原理

  •  Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除,一般来说每个文件都有2个link计数器:i_count和i_nlink。
    
  •  i_count的意义是当前文件使用者(或被调用)的数量;i_nlink的意义是介质连接的数量(硬连接的数量);可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器。
    

在这里插入图片描述

  • 当一个文件被某一个进程引用时,对应i_count数就会增加,当创建文件的硬连接的时候,对应i_nlink数就会增加。
    
  • 对于删除命令rm而言,实际就是减少磁盘引用计数i_nlink.这里就会有一个问题,如果一个文件正在为某一个进程调用,二用户却执行rm操作把文件删除,会导致虽然文件删除了,但空间没有释放,重启进程即可。进程调用的文件要删除,也可以直接清空文件内的东西,而不是直接rm删除。
    

硬链接:
具有相同INode节点号的文件互为硬链接文件
删除硬链接文件或者删除源文件任意一个,文件数据实际并未删除
只有删除源文件以及所对应的所有硬链接文件,文件数据才被删除,同时释放磁盘空间
硬链接文件是文件的另一个入口
可以通过设置硬链接文件防止误删
软链接 符号链接
类似于windows上的快捷方式
软连接文件类似一个文本文件,存放的是源文件的路径
删除源文件,链接文件依然存在,但是无法指向源文件
软连接文件和源文件是不同类型的文件,也是不同的文件,inode号也不同
rm可以直接删除
目录链接
对于目录来说,只能创建软连接
每一个目录下都有硬链接 . …
对于父目录来说,子目录都会有指向父目录的链接 父目录链接数+1
每一个文件链接计数器, i_count i_nlink
i_count:当前文件被调用的次数 内存引用计数器
i_nlink:链接的数量 硬链接的数量 磁盘引用计数器

文件删除:i_count和i_nlink同时为0时,代表删除。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值