网(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),每个块组又划分为多个区域。
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