文件系统结构分析军事联盟

文件系统结构

军事联盟 1

磁盘是由若干扇区组成,每种扇区有512B(将磁盘存款和储蓄区扇区化是为了更好的治本磁盘)。又由若干个扇区组成二个块(ext2默许是由8个扇区组成3个块,即4kb,那里为了简化表明,就把一个扇区组成二个块,即1kb)。由图知,将磁盘分成若干个分区,每一个分区由若干个块组成。

  • 自举块(boot block):私吞1
    block;首要囤积分区的操作系统类型、分区开端地址;pc联盟规定的尺寸,和顺序文件系统非亲非故;每种分区只有三个;
  • 超级块:占据1 block;存款和储蓄分区操作系统版本、块大小、文件系统;
  • 块组描述表(GDT):占用3 block;存款和储蓄叁个块组的讲述消息;
  • 块位图(block bitmap):占用1
    block;各种比特位表示1个数据块是还是不是被标记使用;1:已使用,0:未利用;
  • inode 位图(inode bitmap):占据1
    block;每三个比特位表示多个inode节点。1:已选取,0:未接纳;
  • inode节点:占用128B;分为文件属性部分和数据指针部分;数据指针占用60B,长度为15的指针数组;各样数据块的分寸是1
    block,那么1五个指针最多只好尊敬15*1K个文件大小,显明,文件大小的上限太小了。所以文件系统通过三级直接寻址的主意来增长文件大小的上限。块大小若以1
    block划算,文件大小的上限为16G,若以4
    block为块大小,那文件大小的上限超越了1T;ext4文件系统中,数据指针有256B,那文件大小上限就分外大了;
  • 数据块:存款和储蓄文件的剧情;

三级直接寻址策略

三级直接寻址图

军事联盟 2

将数据指针数组命名为data数组。文件系统中,将data[12]展开一级直接寻址。即:将data[12]
指针指向的数据块,转化为2个更大的指针数组,长度为1024/4=256。在将这些更大的指针数组的分级数指向2六十多少个数据块;data[13]开展二级直接寻址,data[14]
进行三级直接寻址。都和一流直接寻址同理。

目录文件

多少块存款和储蓄内容

军事联盟 3

多少块中存款和储蓄的是一条一条的记录项,每条记下项都由文件名、indoe编号、记录长度(该记录项首地址到下一条记录项的首地址的尺寸)。每几个笔录项正是该目录下“ls
-a”的结果。

一般说来文书结构

军事联盟 4

由图能够观望,每种inode节点能够对应八个数据块,和上文在条分缕析inode节点的始末相同。然后,若干个目录块中的记录项针对各种inode节点,通过inode节点中链接数那一个数量成员来标识指向其的笔录项个数,那正是硬链接。当然,这一个目录块都以目录文件的数据块;

目录文件结构

军事联盟 5

由上航海用体育场所知,inode节点在文件系统中被保安成了结构体数组,inode编号为数组的下标;2549号i节点是1267号i节点的子目录,因为1267号i节点的数目块中有2549号i节点的记录项;“.”目录文件和
“..”目录文件都以硬链接。

从以上分析能够得出结论:所有的目录块都是不同目录文件的数据块。

文件创设和查询进程

执行命令:mkdir /home/aaron/a.c

(1)通过块位图区找到空闲的数据块,存放a.c中的内容
(2)通过inode位图区找到空闲的inode节点块,生成相应的inode节点
(3)在aaron目录文件的数据块中添加一条a.c的记录项

执行命令:vim /home/aaron/a.c

(1)找到inode编号为2的inode节点,
(2)遍历根目录文件的数据块中的记录项,匹配aaron记录项,获取其inode编号
(3)通过aaron目录文件的inode编号,找到aaron文件对应的数据块
(4)遍历aaron文件的数据块中的记录项,匹配a.c记录项。同理,找到对应的a.c的数据块。用vim打开相应文件
  • unix和Linux系统是透过文件名来对应inode节点号,从而找到相应的数据块,完毕文件查询的进程
  • inode节点中从不公文名就是因为依据那种稳定文件地方的机制
admin

网站地图xml地图