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