一个ext2文件系统的文件或目录包括索引结点和数据块两个部分,索引结点存放文件的属性、存取权限、修改时间以及其他的一些信息,而数据块存放文件的内容。文件和目录不一样的地方:
• 目录:
当我们在 Linux 下的 ext2 档案系统建立一个目录时, ext2 会分配一个 inode 与至少一块Block 给该目录。其中,inode 记录该目录的相关属性,并指向分配到的那块 Block ;而 Block则是记录在这个目录下的相关连的档案(或目录)的关连性!
• 档案:
当我们在 Linux 下的 ext2 建立一个一般档案时, ext2 会分配至少一个 inode 与相对于该档案大小的 Block 数量给该档案。例如:假设我的一个 Block 为 4 Kbytes ,而我要建立一个 100KBytes 的档案,那么 linux 将分配一个 inode 与 25 个 Block 来储存该档案!
ext2文件有以下持点:
• Blocks 与 inodes 在一开始格式化时 (format) 就已经固定了;
• 一个 partition 能够容纳的档案数与 inode 有关;
• 一般来说,每 4Kbytes 的硬盘空间分配一个 inode ;
• 一个 inode 的大小为 128 bytes;
• Block 为固定大小,目前支持 1024/2048/4096 bytes 等;
• Block 越大,则损耗的硬盘空间也越多。
• 关于单一档案:
若 block size=1024,最大容量为 16GB,若 block size=4096,容量最大为 2TB;
• 关于整个 partition :
若 block size=1024,则容量达 2TB,若 block size=4096,则容量达 32TB。
• 文件名最长达 255 字符,完整文件名长达 4096 字符。
当一个 ext2 的 filesystem 被建立时, 他拥有 superblock / group description / block bitmap / inode bitmap / inode table / data blocks 等等区域。要注意的是,每个 ext2 filesystem 在被建立的时候,会依据 partition 的大小, 给予数个 block group ,而每个block group 就有上述的这些部分。整个 filesystem 的架构可以下图展现:
• SuperBlock:如前所述, Superblock 是记录整个 filesystem 相关信息的地方, 没有Superblock ,就没有这个 filesystem 了。他记录的信息主要有:
o block 与 inode 的总量;
o 未使用与已使用的 inode / block 数量;
o 一个 block 与一个 inode 的大小;
o filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间等档案系统的相关信息;
o 一个 valid bit 数值,若此档案系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。
• Group Description:纪录此 block 由由何处开始记录;
• Block bitmap:此处记录那个 block 有没有被使用;
• Inode bitmap:此处记录那个 inode 有没有被使用;
• Inode table:为每个 inode 数据存放区;
• Data Blocks:为每个 block 数据存放区。
如果想要知道某个 ext2/ext3 的档案系统内,关于上述提到的相关信息时,可以使用 dumpe2fs 这个指令来读取,如 dumpe2fs /dev/sda6
阅读(1985) | 评论(0) | 转发(0) |