一、文件系统概述

  1. 硬盘的组成

    硬盘可由一个或多个盘片组成。每个盘片又有多个磁道,一圈为一个磁道,磁道的多少由柱面决定。由圆心向外划直线,又把磁道划了很多个扇区。扇区是最小的存储单位,大小为512字节。盘片柱面扇区*512字节=硬盘容量

  2. MBR

    位于0磁道,0扇区,共512字节。其中446字节用于存放bootloader。常用的bootloader程序有grub,lilo等。64字 节用于存放分区,其中16字节存放一个分区,所以硬盘只能划分四个主分区,要想划分更多的分区,就需要用到扩展分区。2字节标注MBR是否有效。

  3. 分区的文件系统格式

    每个分区只能为一个格式。windows的文件系统格式为:fat32,ntfs。 linux为的ext2,ext3

  4. 逻辑块

    硬盘的物理最小存储大小为扇区,但文件系统的最小存储单位是逻辑块。可以把一个扇区大小指定为一个块,也可以指定扇区*n为块的大小,即逻辑块是扇区的整数倍。一个逻辑块只能存一个文件。建议当文件大小比较大时,块划分大一点。文件比较小时块划分小一点。

二、linux的 ext2/ext3文件系统

  1. ext2

    由inode和块组成。inode存储文件的属性及文件所在块的索引信息,块存储文件的内容。要将分区格式化为ext2,需要指定inode和块的大小。

  2. ext2文件系统中目录的创建

    ext2文件系统创建目录时,会分给该目录一个inode和至少一个块(当目录的关联文件较多一个块放不下时,就分多个块)。inode存储目录的 属性,并指引分配给目录的那个块;块存储目录的关联文件,即目录所属的文件(本目录下的文件的inode)或下级目录的关联性数据(下级目录的 inode)。

  3. ext2文件系统中文件的创建

    ext2创建文件时,会分配给该文件至少一个inode和相对于该文件大小的块数量。

  4. ext2文件系统中文件的查找过程

    从inode表中找到文件所在目录的inode--->通过目录inode的指引,找到目录的块(此块中存有目录中所有文件及下级目录的关联 性数据)--->通过目录块中的数据,找到文件的inode--->通过文件的inode中找文件的块所在 地,然后从块从读出文件内容。即找到文件。目录的最大功能就是提供下级目录或言语件的关联性,即下级目录或文件的inode

  5. ext2文件系统的分区

    ext2文件系统,每个分区都有一个超级块,根据分区的大小,分为一个或多个块组。即分区为一个超级块再加一个和多个块组组成。

    • 超级块:记录整个分区文件块与inode的总量;未使用块和inode的数量;单个块和inode的大小;文件系统载入时间,修改时间等。

    • 块组:每个块组包括:组描述、块位图(记录块的使用情况)、inode位图(记录inode的使用情况),inode表(inode的存放区),数据块:块的数据存放区。

  6. 硬盘分区方式及寻找文件过程:

    不同分区indoe号可以重复。同一分区inode不可重复。

    • 块组划分为 inode区(元数据存储区)和数据存储块区,元数据存储了块位图、inode位图,和Inode表。数据存储区划分为很多个逻辑块,为扇区大小的整数倍。

    • 查找文件的方式:先从inode区的inode表中查找文件所在目录的inode,然后找到目录的数据块,再从目录数据块中找到文件的inode号,再通过inode号找到文件的数据块。

    • 新建一个文件或目录:先在inode位图中扫描,找到一个未用的inode号给新的文件或目录,然后再把在块位图中扫描,找到没有用过的块分配给新的文件或目录,并把此inode号与此块作关联,存放于inode表中。

    • 删除一个文件或目录:找到要删除的文件或目录的inode,从inode表中删除此项关联信息,并把此inode和相关数据块在inode位图和块位图中标记为未用。其实数据本身并未从数据块中删除,下次分配给新的数据块时,会覆盖。

    • 硬盘划分为MBR(存放硬盘分区信息和bootloader)和分区

    • 分区划分为一个超级块(存放整个分区里块和inode的大小,数量,修改时间等信息,不是指inode或块的存放地点)和一个或多个块组(块组中主要存有inode表和数据块(实际存放数据的地方))。

三、要点及示例:

  1. 块与inodes在一开始格式化时就已设定好固定的数目。

  2. ext2支持块大为 1024/2048/4096字节,都是扇区大小512的倍数。

  3. inode的大小为128字节

  4. 分区能容纳的文件数与inode有关。

  5. 一般每4kb的硬盘空间分配一个inode.

例:如果一个块大小为4KB,一个文件占用两个块,大小为8KB。分区容量为1G。则inode的数量为:1024M1024k/8k=131072(1G先换成多少K,然后再除以文件的大小,可以计算出可存放文件数)131072个文件就需要131072个inode. 而一个inode的大小为128字节。所以  131072128=16777216b=16384kb。所以如果1G的分区在还没有存任何数据前就少了16M的内容。

五、常用文件系统命令

  1. dumpe2fs   /dev/hda1   //即可查看所在分区的信息

你可能感兴趣的内容
0条评论

dexcoder

这家伙太懒了 <( ̄ ﹌  ̄)>
Owner