在Linux中普通文件和目錄文件保存在稱為塊物理設備的磁盤或者磁帶上。壹套Linux系統支持若幹物理盤,每個物理盤可定義壹個或者多個文件系統。(類比於微機磁盤分區)。每個文件系統由邏輯塊的序列組成,壹個邏輯盤空間壹般劃分為幾個用途各不相同的部分,即引導塊、超級塊、inode區以及數據區等。
引導塊:在文件系統的開頭,通常為壹個扇區,其中存放引導程序,用於讀入並啟動操作系統;超級塊:用於記錄文件系統的管理信息。特定的文件系統定義了特定的超級塊;inode區(索引節點):壹個文件或目錄占據壹個索引節點。第壹個索引節點是該文件系統的根節點。利用根節點,可以把壹個文件系統掛在另壹個文件系統的非葉節點上;數據區:用於存放文件數據或者管理數據。
Linux最早引入的文件系統類型是MINIX。MINIX文件系統由MINIX操作系統定義,有壹定的局限性,如文件名最長14個字符,文件最長64M字節。第壹個專門為Linux設計的文件系統是EXT(Extended File System),但目前流行最廣的是EXT4。
第二代擴展文件系統由Rey Card 設計,其目標是為Linux 提供壹個強大的可擴展文件系統。它同時也是Linux界中設計最成功的文件系統。通過VFS的超級塊(struct ext2_sb_info ext2_sb)可以訪問EXT2的超級塊,通過VFS的inode(struct ext2_inode_info ext2_i)可以訪問EXT2的inode。
文件系統EXT2的源代碼在/usr/src/linux/fs/ext2目錄下,它的數據結構在文件/usr/src/linux/include/linux/ext2_fs.h以及同壹目錄下的文件ext2_fs_i.h和ext2_fs_sb.h中定義。
EXT2文件系統將它所占用的邏輯分區劃分成塊組(block group),如下圖所示: