自学内容网 自学内容网

浅谈EXT2文件系统----inode bitmap

Inode bitmap 是文件系统中的一种位图结构,用于管理 inode 的分配状态。它的主要功能是记录文件系统中哪些 inode 是空闲的,哪些已经被分配。

主要特点:

  1. 位图结构:Inode bitmap 是一个位数组,每一位对应一个 inode。该位的值表示相应的 inode 是否已经被使用。

    • 位为 0:表示该 inode 是空闲的,未分配。
    • 位为 1:表示该 inode 已被分配,用于存储文件或目录的元数据。
  2. 快速查找:通过 inode bitmap,文件系统可以快速找到空闲的 inode 以便为新文件或目录分配。此外,文件系统在回收 inode 时也可以通过该位图快速标记 inode 为可用。

  3. 管理 inode 空间:Inode bitmap 的大小取决于文件系统中 inode 的数量。位图的每一位对应一个 inode,因此它可以有效地管理 inode 的使用和释放。

  4. 与 Inode table 的关系:Inode bitmap 仅记录 inode 是否被使用,而不存储 inode 的详细信息。inode 的实际信息(如文件属性、权限、数据块指针等)存储在 Inode table 中。

总体来说,Inode bitmap 是一个帮助文件系统高效管理 inode 分配和回收的结构。

实例:

通过以下实验观察bitmap是如何变化的,每次创建一个全新的文件后,立刻观察对应inode bitmap变化

[root@node09 disk]# touch z
[root@node09 disk]# sync            #立刻将内存中的内容写入到磁盘上
[root@node09 disk]# touch zz
[root@node09 disk]# sync 
[root@node09 disk]# touch zzz
[root@node09 disk]# sync 
[root@node09 disk]# touch zzzz
[root@node09 disk]# sync 
[root@node09 disk]# touch zzzzz
[root@node09 disk]# touch zzzzzz
[root@node09 disk]# touch zzzzzzz
[root@node09 disk]# touch zzzzzzzz
[root@node09 disk]# sync 
[root@node09 disk]# touch q
[root@node09 disk]# sync 
[root@node09 disk]# touch qq
[root@node09 disk]# sync 

[root@node09 ~]# hexdump -s 8315k -n 1k ./disk.img -C
0081ec00  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0081ec10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0081ecf0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
0081f000

[root@node09 ~]# hexdump -s 8315k -n 1k ./disk.img -C
0081ec00  03 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0081ec10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0081ecf0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
0081f000
[root@node09 ~]# hexdump -s 8315k -n 1k ./disk.img -C
0081ec00  07 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0081ec10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0081ecf0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
0081f000

...

[root@node09 ~]# hexdump -s 8315k -n 1k ./disk.img -C
0081ec00  ff 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0081ec10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0081ecf0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
0081f000
[root@node09 ~]# hexdump -s 8315k -n 1k ./disk.img -C
0081ec00  ff 01 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0081ec10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0081ecf0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
0081f000
[root@node09 ~]# hexdump -s 8315k -n 1k ./disk.img -C
0081ec00  ff 03 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0081ec10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0081ecf0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
0081f000

bitmap中的第一个字节(8bit) ,全为空

00000000

创建8个全新的文件分别为z、zz、zzz、zzzz、zzzzz、zzzzzz、zzzzzzz、zzzzzzzz后,bitmap中的第一个字节中的全0,由低位到高位逐个替换为1,对应的二进制变化分别为00000001、00000011、00000111、00001111、00011111、00111111、01111111、11111111;对应的10进制变化为1、3、7、15、31、63、127、255;对应的16进制即01、03、07、0f、1f、3f、7f、ff

11111111


原文地址:https://blog.csdn.net/zyqash/article/details/142763551

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!