網(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