您的位置:首页 > 运维架构 > Linux

LINUX下的ext2文件系统————总体存储布局

2013-09-21 10:37 363 查看
            我们知道一个磁盘可以分成多个分区,每个分区必须先用格式化工具格式化成某种格式的文件系统,才能存储文件,在格式化的过程中会在磁盘上写一些管理存储布局的信息。下面我们来看看一个磁盘分区格式化ext2文件系统后的存储布局。

                                               


                  我们在这先来回顾一下文件存储的知识:文件系统中存储的最小单位是块(Block),一个块的大小是在格式化的时候就已经确定(可以通过mke2fs -b (1024)设定)。

    首先在上图中我们看到的第一部分是启动块(大小确定为1KB,由PC标准规定,用来存储分区信息和启动信息,任何文件系统都不能使用启动块),之后才是ext2文件系统的开始,ext2文件系统将整个分区划分成若干个大小不同的块组(Block Group),每个块组由以下部分构成。

           超级块(Super Block)

   作用:描述整个分区的文件系统信息,such as 块大小,文件系统版本号,上次的mount时间等等。(超级块在每个块组的开头都有一份拷贝)

          块组描述符表(GDT,Group Descriptor Table)

 由很多块组描述符组成,整个分区有多少块组就有多少块组描述符,它存储一个块组的描述信息(从哪里开始是inode表,从哪里开始是数据块,空闲的inode等),和超级块类似它也在每个块组开头有一份拷贝,通常内核只用到第0个块组描述符。

块位图(Block Bitmap)

数组块存储所有文件的数据(如一个文件的块大小是1KB,某个文件时2049字节,就需要三个块位图来存储),超级块,块组描述符表,块位图,inode位图,inode 表这几部分来存储该数组的描述信息。块位图就是用来描述块组中那些块已用哪些是空闲的,它本身占一个块,其中的每个bit代表本块数组中的一个块,这个bit为1表示该块已用,反之则为空闲。

inode位图(inode Bitmap)

和块位图类似,本身占一个块,其中每个bit表示一个inode是否空间可用。

inode表(inode Table)

存储文件的描述信息(文件类型,权限,文件大小创建/修改访问时间等,即ls -l看到的信息),每个文件都有一个inode,一个块组中所有的inode组成了inode表。

(一个块组有多少个8KB就分配多少个inode).

数据块(Data Block )

根据不同文件类型有一下几种情况:

(1)对于常规文件,文件的数据存储在数据块中。

(2)对于目录,该目录下的所有文件名和目录名存储在数据块中,除文件名之外,ls -l命令中看到的信息则存储在inode中;目录也是一种文件,是一种特殊类型的文件。

(3)对于符号链接,如果目标路径名较短则直接保存在inode中以便更快的查找,如果目标路径名较长则分配一个数据块来保存。

(4)设备文件,FIFO和socket等特殊文件没有数据块,设备文件的主设备号和次设备号保存在inode中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息