JFS 由IBM 公司開發(fā),最初出現(xiàn)在AIX 操作系統(tǒng)之上,它提供了基于日志的字節(jié)級、面向事務(wù)的高性能文件系統(tǒng)。它具有可伸縮性和健壯性,與非日志文件系統(tǒng)相比,它的優(yōu)點(diǎn)是其快速重啟能力:JFS 能夠在幾秒或幾分鐘內(nèi)就把文件系統(tǒng)恢復(fù)到一致狀態(tài)。JFS 是完全 64 位的文件系統(tǒng)。所有 JFS 文件系統(tǒng)結(jié)構(gòu)化字段都是 64 位大小。這允許 JFS 同時支持大文件和大分區(qū)。 為了支持 DCE DFS(分布式計算環(huán)境分布式文件系統(tǒng)),JFS 將磁盤空間分配池(稱為聚集)的概念, 與可安裝的文件系統(tǒng)子樹(稱為文件集)的概念分開。每個分區(qū)只有一個聚集;每個聚集可能有多個文件集。在第一個發(fā)行版中,JFS 僅支持每個聚集一個文件集;但是,所有元數(shù)據(jù)都已設(shè)計成適用于所有情況。 如圖所示,聚集開始部分是32K的保留區(qū),緊隨其后的是聚集主超級塊。超級塊包含聚集的信息,例如:聚集的大小、分配組的大小、聚集塊的尺寸等等。超級塊位于固定位置,這使得 JFS 不依賴任何其它信息,就能夠找到它們。在聚集中還有一個重要的結(jié)構(gòu)是聚集索引結(jié)點(diǎn)表(Aggregate Inode Table)以及用于其映射的聚集索引結(jié)點(diǎn)分配映射表(Aggregate Inode Allocation Map)。AIT表中的inode 0 保留,inode 1 描述聚集本身,inode 2 描述聚集塊映射表(block map), inode 3 描述安裝時的內(nèi)嵌日志,inode 4 描述在聚集格式化期間發(fā)現(xiàn)的壞塊,保留inode 5 到 15 以備將來擴(kuò)展。 從inode 16 開始,每個inode代表一個文件集。文件集中也有索引結(jié)點(diǎn)表以及用于其映射的索引結(jié)點(diǎn)分配映射表,文件集中的inode 描述文件集中的每一個文件。 ![]() JFS磁盤結(jié)構(gòu) JFS 使用基于盤區(qū)的尋址結(jié)構(gòu),連同主動的塊分配策略,產(chǎn)生緊湊、高效、可伸縮的結(jié)構(gòu),以將文件中的邏輯偏移量映射成磁盤上的物理地址。盤區(qū)是象一個單元那樣分配給文件的相連塊序列,可用一個由 <邏輯偏移量,長度,物理地址> 組成的三元組來描述。尋址結(jié)構(gòu)是一棵 B+ 樹,該樹由盤區(qū)描述符(上面提到的三元組)填充,根在 inode 中,鍵為文件中的邏輯偏移量。 JFS 按需為磁盤 inode 動態(tài)地分配空間,同時釋放不再需要的空間。這一支持避開了在文件系統(tǒng)創(chuàng)建期間,為磁盤 inode 保留固定數(shù)量空間的傳統(tǒng)方法,因此用戶不再需要估計文件系統(tǒng)包含的文件和目錄最大數(shù)目。另外,這一支持使磁盤 inode 與固定磁盤位置分離。 JFS 提供兩種不同的目錄組織。第一種組織用于小目錄,并且在目錄的 inode 內(nèi)存儲目錄內(nèi)容。這就不再需要不同的目錄塊 I/O,同時也不再需要分配不同的存儲器。最多可有 8 個項可直接存儲在 inode 中,這些項不包括自己(.)和父(..)目錄項,這兩個項存儲在 inode 中不同的區(qū)域內(nèi)。第二種組織用于較大的目錄,用按名字鍵控的 B+ 樹表示每個目錄。與傳統(tǒng)無序的目錄組織比較,它提供更快的目錄查找、插入和刪除能力。 |