Linux操作系统系列之文件系统


  烈火网(LieHuo.Net)教程 Linux 分区以柱面划分,且必须格式化成 Linux 标准文件系统 (ext2/ext3 等) 才能使用。通常来说,每个分区只能格式化为一个文件系统。

  尽管硬盘的最小存储单位是扇区,但对于文件系统而言,扇区的读写效率过低,因此以 n 个扇区为一个块 (Block),这是文件系统的最小存储单位,当前支持 1024/2048/4096 三种大小的块。当分区存储大文件时,大的块有助于提高读写效率。以 10MB 文件为例,扇区是 512 字节,需要读取 (I/O) 20480 次,而对于 4096 字节的块而言只需 2560 次。但也正因为块是最小存储单位,对于众多的小文件来说,存储空间浪费也就非常严重。即便文件小于块,其剩余空间也是无法继续使用的。

  1. EXT2 文件系统结构

  在 EXT2 文件系统中,文件存储分为 Inode 和数据块两部分。inode 中存储了文件元数据(metadata 文件属性)信息和块指针(指向数据块位置),数据块中存储了文件内容数据。整个分区被划分为 n 个块组 (Block Group),每个块组又划分为多个区域。

uploads/view/_115715_1.png

  Super Block: 超级块,记录文件系统信息,包括块和 inode 总量、使用情况等等。

  Group Description: 组描述,记录块组信息。

  Block Bitmap: 块位图,记录块使用状态,用于分配和回收数据块。

  Inode Bitmap: Inode 位图,记录 Inode 使用状态,用于分配和回收 Inode。

  Inode Table: Inode 表,存储 Inode。

  Data Blocks: 数据块。

  可以用 dumpe2fs 查看分区的相关信息

  yuhen@yuhen-desktop:~$ sudo dumpe2fs /dev/sda1

  Filesystem magic number: 0xEF53

  Filesystem revision #: 1 (dynamic)

  Filesystem OS type: Linux

  Inode count: 498736

  Block count: 1994060

  Reserved block count: 99703

  Free blocks: 1333369

  Free inodes: 381040

  First block: 0

  Block size: 4096

  Fragment size: 4096

  Reserved GDT blocks: 486

  Blocks per group: 32768

  Fragments per group: 32768

  Inodes per group: 8176

  Inode blocks per group: 511

  Filesystem created: Sun Jul 19 14:03:01 2009

  Last mount time: Wed Jul 29 11:21:01 2009

  Last write time: Wed Jul 29 11:21:01 2009

  First inode: 11

  Block size: 4096

  Inode size: 256

  ... ...

  Group 0: (Blocks 0-32767)

  Primary superblock at 0, Group descriptors at 1-1

  Reserved GDT blocks at 2-487

  Block bitmap at 488 (+488), Inode bitmap at 489 (+489)

  Inode table at 490-1000 (+490)

  1172 free blocks, 8161 free inodes, 2 directories

  Free blocks: 19992, 20034-20035, 20037-20043, 31605-31606, 31608-32767

  Free inodes: 16-8176

  Group 1: (Blocks 32768-65535)

  Backup superblock at 32768, Group descriptors at 32769-32769

  Reserved GDT blocks at 32770-33255

  Block bitmap at 33256 (+488), Inode bitmap at 33257 (+489)

  Inode table at 33258-33768 (+490)

  20522 free blocks, 4056 free inodes, 175 directories

  Free blocks: 33771-33773, 34053-34062, 34107-34136, 34141, ...

  Free inodes: 11956-11957, 11965, 11984, 11988, 11991, 11998, ...

  Group 2: (Blocks 65536-98303)

  Block bitmap at 65536 (+0), Inode bitmap at 65537 (+1)

  Inode table at 65538-66048 (+2)

  17487 free blocks, 5021 free inodes, 724 directories

  Free blocks: 67305-67307, 67309, 68035, 68043-68044, 70506-70514, ...

  Free inodes: 19508-24528

  • 共2页:
  • 上一页
  • 1
  • 2
  • 下一页

相关内容