ext2 文件系统

来源:互联网 发布:淘宝宝贝被删除怎么办 编辑:程序博客网 时间:2024/05/19 22:51

我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息。

首先来看一个简单文件系统,硬盘的读写以扇区为基本单位一个扇区的大小为512Byte。如下图所示一个hello文件要存在磁盘上,需要保存文件名,文件的起始位置,文件大小等信息。一个真正的文件系统远远比这复杂,文件系统可以看做是对磁盘的抽象,方便人们使用。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取等。


接下来我们将引入ext2文件系统,文件系统中存储的最小单位是块(Block),一个块究竟多大是在格式化时确定的,例如mke2fs的-b选项可以设定块大小为1024、2048或4096字。可以使用stat命令看下:stat 后跟文件名或者目录,如下图可以看到块大小是4096Byte


下图是一个磁盘分区格式化成ext2文件系统后的存储布局,其中块和inode是统一编号,比如第一个块组块编号为1~100,则第二块为101~200.

首先是1KB 的启动块,启动块之后才是ext2文件系统的开始,ext2文件系统将整个分区划成若干个同样大小的块组(Block Group)每个块组都由以下部分组成超级块(Super Block)、块组描述符表(GDT,Group Descriptor Table)、块位图(Block Bitmap)、inode位图、inode表、数据块。



那么一个文件是如何存储的呢?这里我们以一个神探狄仁杰.mp4 文件为例,首先文件系统为其分配一个INode,然后INode中有60Byte的数据块指针,很多人不禁要问,假设一个指针为4个字节,那么60Byte只能指向15个数据块,文件要是比较大怎么办?这里会采用一级索引、二级索引、三级索引。这样就可存下非常大的文件。对应的Block bitmap

和INode Bitmap的位为1。

删除文件或者格式化磁盘就是将对应的Block  Bitmap 和INode BItmap 反转即可,这也说明了为什么删除文件比较快,如果要想真正删除文件可以采用大文件覆盖的方法。

0 0
原创粉丝点击