Linux文件系统删除原理及inode,block,superblock

一、 Linux文件系统之 inode,block,superblock

Linux文件系统可以简单分为 inode table和data area
inode table:存有inode,每个inode中记录了文件的元数据,可以通过stat命令查看文件的元数据
data area:存有data

  • superblock:记录此filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及 档案系统的格式与相关信息等;
  • inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的资料所在的block 号码
  • block:实际记录文件的内容,若文件太大时,会占用多个block 。
    Linux文件系统删除原理及inode,block,superblock_第1张图片
    #File:文件名称;
    #Size:文件大小;
    #Blocks:占用的磁盘块数;
    #IO Block:IO块大小;
    #regular file:这里是显示文件的类型,这是一个普通文件
    #Device:所在设备;
    #Inode:Inode节点号;
    #Links:被链接的次数;
    #Access(第一个):访问权限;
    #Uid:uid号和属主;
    #Gid:gid号和属组;
    #Access(第二个):文件近一次的访问时间;
    #Modify:文件的修改时间;
    #Chang:文件的改变时间

inode也会消耗磁盘空间,在磁盘格式化时,操作系统会自动将磁盘分为两个区域,一个数据区,一个 inode区,存放inode所包含的信息,整个磁盘的可以使用容量由inode和磁盘空间共同决定,当inode 消耗完之后,磁盘空间还有剩余也无法存储数据。
读取文件流程,以要读取/etc/fstab文件内容为例:Linux文件系统删除原理及inode,block,superblock_第2张图片

二、Linux文件系统删除原理

1、硬链接

  • 具有相同INode节点号的文件互为硬链接文件;
  • 删除硬链接文件或者删除源文件任意一个,文件数据实际并未删除;
  • 只有删除源文件以及所对应的所有硬链接文件,文件数据才被删除,同时释放磁盘空间;
  • 硬链接文件是文件的另一个入口;
  • 硬链接文件可以用rm命令删除;
  • 可以通过设置硬链接文件防止误删。

Linux文件系统删除原理及inode,block,superblock_第3张图片

2、软链接(符号链接)

  • 类似于windows上的快捷方式
  • 软连接文件类似一个文本文件,存放的是源文件的路径
  • 删除源文件,链接文件依然存在,但是无法指向源文件
  • 软连接文件和源文件是不同类型的文件,也是不同的文件,inode号也不同
  • rm可以直接删除
    Linux文件系统删除原理及inode,block,superblock_第4张图片

3、目录链接

  • 对于目录来说,只能创建软链接;
  • 每一个目录下都有硬链接"."号;
  • 在父目录里面创建一个子目录,父目录的链接数增加1(子目录里都有指向父目录的链接)。但是在父目录里 创建文件,父目录的链接数不会增加。

4、Link计数器

Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。
一般来说,每个文件都有2个link计数器:i_count 和 i_nlink。

  • i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器。当一个文件被某一个进程引用时,对应i_count数就会增加
  • i_nlink是磁盘的引用计数器。当创建文件的硬链接的时候,对应i_nlink 数就会增加。

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

你可能感兴趣的:(Linux文件系统删除原理及inode,block,superblock)