UFS

UFS

新型快閃存儲方案
UFS是一種新的快閃存儲方案,能夠有效地減小擺動,提高訪問效率。
    中文名:UNIX文件系統 外文名:UFS 别名: 類型:快閃存儲方案 數碼存儲介質:sd卡、tf卡、cf卡、mmc卡

簡介

UFS是UNIX文件系統的簡稱,它來源于4.3Tahoe發行版中提供的BSD Fat Fast File System(FFS)系統,屬于FFS的演化版本。UFS幾乎是大部分UNIX類操作系統默認的基于磁盤的文件系統,包括Solaris、Free BSD、Open BSD、Net BSD、HP-UX等,甚至Apple的OSX也能支持UFS文件系統。

在最初的FFS文件系統的設計中,為了使文件系統在遭到毀滅性打擊,如硬盤發生整個磁道、整個盤面或者整個柱面損壞時能夠得以恢複,在文件系統初始化時,會将文件系統的重要數據結構複制到整個磁盤的多個位置,以便在發生硬件損壞時能夠讀取,而UFS文件系統也繼承了這些優良的特性。

另外,為了提高運行效率,UFS文件系統與磁盤的結構也有着完美的結合,UFS将整個磁盤的所有邏輯柱面平均分配為若幹個組,每組稱為一個“柱面”。在UFS内部就用柱面組隊文件系統進行分段組織和管理,每個柱面組中都有文件系統關鍵數據結構的備份,所有文件在各個柱面組中相對獨立地存儲而又有機地結合在一起。

系統結構總覽

UFS文件系統在創建時,磁盤的盤片被分成若幹個柱面組,每個柱面組由一個或多個聯系的磁盤柱面組成,在文件系統的前部會有一個叫做“柱面組概要”的結構對整個文件系統中的每個柱面組信息進行統計,并且在每個柱面組中還有一個“柱面組描述符”用來管理當前柱面組。

每個柱面組又進一步被分成若幹個可尋址的塊,以控制和組織柱面組中文件的結構,所以“塊”是UFS文件系統中文件分配和存儲的基本單位,類似于FAT文件系統和NTFS文件系統中“簇”的概念。

在UFS文件系統中,“塊”有多種類型,每種類型的塊都具有特定的功能。UFS文件系統主要具有四種類型的塊:引導塊、超級塊、i-節點、數據塊。

UFS文件系統中的“塊”又被分成更小的單位,叫做“段”。在創建UFS文件系統時,可定義段的大小,默認的段大小一般為1KB。每個塊都可以分成若幹個段,段大小的上限就是塊的大小,下限實際上為磁盤扇區大小,通常為512字節。

當文件寫入文件系統時,首先為文件分配完整的塊,然後為不滿一個塊的剩餘部分分配某個塊的一個或者多個段。對于比較小的文件,首先分配段進行存儲。能夠為文件分配塊中的段而不是僅分配完整的塊,就減少了塊中未使用的空間,從而提高了磁盤的利用率。

在創建文件系統時,選擇段的大小需要考慮時間和空間的平衡,小的段大小可節省空間,但是需要更多的時間進行分配,通常,當大多數文件都很大時,要提高存儲效率,應為文件系統使用較大的段大小,當大多數文件都比較小時,應為文件系統使用較小的段大小。

綜上所述,UFS文件系統由若幹個“柱面組”構成,每個柱面組包含一定數量的“塊”,每個塊又由若幹個“段”組成。“段”是UFS文件系統的最小存儲單元。每個柱面組、塊、段在文件系統中都有自身的編号,它們的起始編号都是0。

另外,“超級塊”是UFS文件系統中非常重要的一個結構,其重要性類似于FAT文件系統和NTFS文件系統中的DBR,所以UFS在每個柱面組中都對超級塊做了備份,但備份的位置卻各不相同,在每個柱面組中都會發生一定的偏轉,這是因為在原來的硬盤中每個磁道具有相同的扇區數,這個就導緻每個柱面組的第一個扇區都位于同一個盤面上。為了減小因無力故障而産生的數據損壞,将超級塊的備份在每個柱面組中錯位存放就可以使它們不再存儲于同一個盤面,從而降低了風險。而現在的新式硬盤每個柱面的扇區數并不相等,所以也就不存在這樣的隐患,實際上UFS2已經不再考慮數據錯位存放的問題。

引導塊

引導塊是UFS文件系統中的第一個塊,也就是0号塊。它的結構因操作系統的不同而稍有區别,但一般都是由磁盤标簽和引導程序組成。

隻有當UFS文件系統中包含操作系統内核時,引導塊中才會有引導程序。如果UFS文件系統中不保護操作系統内核,引導塊中則沒有引導程序,隻有磁盤标簽。

超級塊

UFS文件系統超級塊的重要性類似于FAT文件系統和NTFS文件系統中的DBR,但比DBR的結構複雜很多,超級塊中記錄着許多參數,主要包括:

文件系統的大小和狀态

文件系統名稱和卷名稱

文件系統塊的大小及段大小

上次更新的日期和時間

柱面組的大小

柱面組中的數據塊數

柱面組概要的地址

文件系統狀态

最後一個挂載點的路徑名

由于超級塊包含文件系統的關鍵數據,因此在創建文件系統時建立了多個超級塊,在每個柱面組内都有一個超級塊的備份。

節點

UFS文件系統的i-節點用來存儲與文件相關的除文件名以外的所有信息,包括指向文件的硬鍊接數、文件大小、文件的時間信息、文件屬主的用戶ID、文件所屬的組ID、文件内容存放地址的塊指針等重要信息,這些重要信息也被稱為元數據。

UFS文件系統的每個柱面組中都有一個自己的i-節點表。i-節點表由很多i-節點組成,每個文件或者目錄使用一個i-節點。UFS1的i-節點在文件系統創建時即被初始化,而UFS2的i-節點則在需要時才被初始化,所以當文件系統中的數據塊不夠使用時,UFS2能夠使用i-節點表中的空閑空間存放數據。

在每個柱面組的組描述符中都有一個i-節點位圖,用來管理i-節點表中的i-節點使用和分配情況。如果要确定一個i-節點屬于哪個柱面組,可以用當前i-節點号對每個柱面組的i-節點數做取整運算得到,而每個柱面組的i-節點數在超級塊和柱面組描述符中都有記錄。

日志記錄

UFS日志記錄會将組成一個完整UFS操作的多個元數據更改打包成一個事務。事務集記錄在盤上日志中,然後會應用于實際文件系統的元數據。

重新引導時,系統會廢棄未完成的事務,但是會對已完成的操作應用事務。文件系統将保持一緻,因為僅應用了已完成的事務。即使在系統崩潰時,也仍會保持此一緻性。系統崩潰可能會中斷系統調用,并導緻UFS文件系統出現不一緻。

好處

如果文件系統已經通過事務日志達到一緻,則在系統崩潰或異常關機後可能不必運行fsck命令。從Solaris 9 12/02發行版開始,UFS日志記錄的性能已經提高甚至超過了無日志記錄功能的文件系統的性能級别。這一改進之所以能夠實現是由于啟用日志記錄功能的文件系統可以将對相同數據的多重更新轉換為單一更新。因此,減少了磁盤操作所需的開銷。

特征

從文件系統上的空閑塊分配而來。

對于每1GB的文件系統,其大小約為1MB,最大為64MB。

填滿時會不斷刷新。

取消挂載文件系統或使用任何lockfs命令之後也會刷新。

所有UFS文件系統均缺省啟用UFS日志記錄。

如果需要禁用UFS日志記錄,請在/etc/vfstab文件中或手動挂載文件系統時,向文件系統的項添加nologging選項。

如果需要啟用UFS日志記錄,請在/etc/vfstab文件中或手動挂載文件系統時,在mount命令中指定-ologging選項。可以在包括根(/)文件系統的任何UFS文件系統上啟用日志記錄。另外,fsdb命令還包含支持UFS日志記錄的新調試命令。

在一些操作系統中,啟用了日志記錄的文件系統稱為日記記錄文件系統。

上一篇:tinyos

下一篇:浪湧電流

相關詞條

相關搜索

其它詞條