【Linux】浅谈Ext2文件系统

Ext2文件系统

在这里插入图片描述
在上图中可以看出,ext2文件系统将整个分区划成若干个同样大小的块组(Block Group),从Block Group 0 到Block Group n。

  1. 启动块(boot block)
      文件系统中存储的最小单位是块(Block),而上图中启动块(Boot Block)的大小是确定的,就是1KB,启动块是由PC标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块。启动块之后才是ext2文件系统的开始。
  2. Block Group
      ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。
  3. 超级块(Super Block)
      存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了。
  4. 块组描述符表(GDT,Group Descriptor Table)
      块组描述符表是由很多块组描述符组成,整个分区分成多少个块组就对应有多少个块组描述符。每个块组描述符(Group Descriptor)存储一个块组的描述信息,例如在这个块组中从哪里开始是inode表,从哪里开始是数据块,空闲的inode和数据块还有多少个等等。
  5. 块位图(Block Bitmap)
      Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用
  6. inode位图(inode Bitmap)
      每个bit表示一个inode是否空闲可用。
  7. i节点表
      包含文件/目录的几乎全部-适用于放置在硬盘上的,需要长久保存的信息。
      例如:文件所有者,文件类型,i节点号(存放在目录块中),主次设备号,连接计数,访问/修改时间,IO块长,文件字节数等等。
    可以用stat函数(#include )获取相关i节点信息信息。
  8. 数据区:存放文件内容

文件索引过程

在这里插入图片描述
dentry是一个目录项(Directory entry),相当于一个文件目录,该文件目录里面有很多文件。其实本质就是一个dir_entry结构体,重要成员有文件的inode索引号,文件名等,存储着文件的信息

struct ext2_dir_entry_2 {
    __u32   inode;          /* 文件的inode号 */
    __u16   rec_len;        /* 目录项长度 */
    __u8    name_len;       /* 文件名包含的字符数 */
    __u8    file_type;         /* 文件类型 */
    char    name[EXT2_NAME_LEN];    /* 文件名 */
 };

  当要查找test.txt文件时,会先从dir_entry结构体中找到与文件名相匹配的inode节点,然后再根据test.txt文件的inode编号找到对应的inode结构体,而在inode结构体中会有一个i_block成员(i_block在inode结构体中是一个非常重要的成员),该成员指出了test.txt文件中的数据在磁盘中的存储位置。

进程与文件关系

在这里插入图片描述
v节点因为它除了包含i节点之外,自身的内容实在是不怎么多,重点看一下文件表吧。
文件表包括:
  文件状态标志:包含读,写,添写,同步和非阻塞等各种文件打开/当前状态。
  当前文件偏移量:记录文件指针位置
  V节点/I节点:文件类型和对此文件进行各种操作的函数的指针,这些信息都是在打开文件时候由磁盘读入内存的。
可用fcntl函数(#include )修改文件表内容。

硬链接与软链接

硬链接

真正找到磁盘上文件的并不是文件名,而是inode。 其实在linux中可以让多个文件名对应于同一个inode

ln   [filename]   [newfilename]

[root@localhost linux]# touch abc
[root@localhost linux]# ln abc def
root@localhost linux]# ls -1i
abc def 263466 abc 263466 def

软链接

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

ln  -s   [filename]   [newfilename]

在这里插入图片描述
软链接文件是一个单独的文件,数据中存储源文件的路径,可以理解为快捷方式,如果源文件被删除,则软链接文件失效。
硬链接是多个文件使用一个inode结点,即使删除源文件,只是硬链接数减1,直到减到0才会删除文件。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值