UFS

UFS

UFS是一種新的快快閃記憶體儲方案。當前市場上的數碼存儲介質種類比較多:sd卡 tf卡 cf卡 mmc卡 索尼Memory Stick Pro Duo卡以及高速m2卡等。

簡介


UFS是UNIX文件系統的簡稱,它來源於4.3Tahoe發行版中提供的BSD Fat Fast File System(FFS)系統,屬於FFS的演化版本。UFS幾乎是大部分UNIX類操作系統默認的基於磁碟的文件系統,包括Solaris、Free BSD、Open BSD、Net BSD、HP-UX等,甚至Apple的OS X也能支持UFS文件系統。
在最初的FFS文件系統的設計中,為了使文件系統在遭到毀滅性打擊,如硬碟發生整個磁軌、整個盤面或者整個柱面損壞時能夠得以恢復,在文件系統初始化時,會將文件系統的重要數據結構複製到整個磁碟的多個位置,以便在發生硬體損壞時能夠讀取,而UFS文件系統也繼承了這些優良的特性。
另外,為了提高運行效率,UFS文件系統與磁碟的結構也有著完美的結合,UFS將整個磁碟的所有邏輯柱面平均分配為若干個組,每組稱為一個“柱面”。在UFS內部就用柱面組隊文件系統進行分段組織和管理,每個柱面組中都有文件系統關鍵數據結構的備份,所有文件在各個柱面組中相對獨立地存儲而又有機地結合在一起。這就使磁碟中的磁頭在訪問文件系統中的數據時有效地減小了擺動,提高了訪問效率。
眾誠365數據恢復
眾誠365數據恢復

UFS文件系統結構總覽


UFS文件系統在創建時,磁碟的碟片被分成若干個柱面組,每個柱面組由一個或多個聯繫的磁碟柱面組成,在文件系統的前部會有一個叫做“柱面組概要”的結構對整個文件系統中的每個柱面組信息進行統計,並且在每個柱面組中還有一個“柱面組描述符”用來管理當前柱面組。
每個柱面組又進一步被分成若干個可定址的塊,以控制和組織柱面組中文件的結構,所以“塊”是UFS文件系統中文件分配和存儲的基本單位,類似於FAT文件系統和NTFS文件系統中“簇”的概念。
在UFS文件系統中,“塊”有多種類型,每種類型的塊都具有特定的功能。UFS文件系統主要具有四種類型的塊:引導塊、超級塊、i-節點、數據塊。
引導塊:在引導系統時使用的信息
超級塊:記錄文件系統的詳細信息
i-節點:記錄文件的各種信息
數據塊:存儲每個文件的實際內容
UFS文件系統中的“塊”又被分成更小的單位,叫做“段”。在創建UFS文件系統時,可定義段的大小,默認的段大小一般為1KB。每個塊都可以分成若干個段,段大小的上限就是塊的大小,下限實際上為磁碟扇區大小,通常為512位元組。
當文件寫入文件系統時,首先為文件分配完整的塊,然後為不滿一個塊的剩餘部分分配某個塊的一個或者多個段。對於比較小的文件,首先分配段進行存儲。能夠為文件分配塊中的段而不是僅分配完整的塊,就減少了塊中未使用的空間,從而提高了磁碟的利用率。
在創建文件系統時,選擇段的大小需要考慮時間和空間的平衡,小的段大小可節省空間,但是需要更多的時間進行分配,通常,當大多數文件都很大時,要提高存儲效率,應為文件系統使用較大的段大小,當大多數文件都比較小時,應為文件系統使用較小的段大小。
綜上所述,UFS文件系統由若干個“柱面組”構成,每個柱面組包含一定數量的“塊”,每個塊又由若干個“段”組成。“段”是UFS文件系統的最小存儲單元。每個柱面組、塊、段在文件系統中都有自身的編號,它們的起始編號都是0.
另外,“超級塊”是UFS文件系統中非常重要的一個結構,其重要性類似於FAT文件系統和NTFS文件系統中的DBR,所以UFS在每個柱面組中都對超級塊做了備份,但備份的位置卻各不相同,在每個柱面組中都會發生一定的偏轉,這是因為在原來的硬碟中每個磁軌具有相同的扇區數,這個就導致每個柱面組的第一個扇區都位於同一個盤面上。為了減小因無力故障而產生的數據損壞,將超級塊的備份在每個柱面組中錯位存放就可以使它們不再存儲於同一個盤面,從而降低了風險。而現在的新式硬碟每個柱面的扇區數並不相等,所以也就不存在這樣的隱患,實際上UFS2已經不再考慮數據錯位存放的問題。

UFS文件系統的引導塊:

引導塊是UFS文件系統中的第一個塊,也就是0號塊。它的結構因操作系統的不同而稍有區別,但一般都是由磁碟標籤和引導程序組成。
只有當UFS文件系統中包含操作系統內核時,引導塊中才會有引導程序。如果UFS文件系統中不保護操作系統內核,引導塊中則沒有引導程序,只有磁碟標籤。

UFS文件系統的超級塊:

UFS文件系統超級塊的重要性類似於FAT文件系統和NTFS文件系統中的DBR,但比DBR的結構複雜很多,超級塊中記錄著許多參數,主要包括:
文件系統的大小和狀態
文件系統名稱和卷名稱
文件系統塊的大小及段大小
上次更新的日期和時間
柱面組的大小
柱面組中的數據塊數
柱面組概要的地址
文件系統狀態
最後一個掛載點的路徑名
由於超級塊包含文件系統的關鍵數據,因此在創建文件系統時建立了多個超級塊,在每個柱面組內都有一個超級塊的備份。

UFS文件系統的i-節點

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 操作的多個元數據更改打包成一個事務。事務集記錄在盤上日誌中,然後會應用於實際文件系統的元數據。
重新引導時,系統會廢棄未完成的事務,但是會對已完成的操作應用事務。文件系統將保持一致,因為僅應用了已完成的事務。即使在系統崩潰時,也仍會保持此一致性。系統崩潰可能會中斷系統調用,並導致 UFS 文件系統出現不一致。

UFS 日誌記錄功能有兩個好處:

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

UFS 事務日誌具有以下特徵:

從文件系統上的空閑塊分配而來
對於每 1 GB 的文件系統,其大小約為 1 MB,最大為 64 MB
填滿時會不斷刷新
取消掛載文件系統或使用任何 lockfs 命令之後也會刷新。
所有 UFS 文件系統均預設啟用 UFS 日誌記錄。
如果需要禁用 UFS 日誌記錄,請在 /etc/vfstab 文件中或手動掛載文件系統時,向文件系統的項添加 nologging 選項。
如果需要啟用 UFS 日誌記錄,請在 /etc/vfstab 文件中或手動掛載文件系統時,在 mount 命令中指定-o logging選項。可以在包括根 (/) 文件系統的任何 UFS 文件系統上啟用日誌記錄。另外,fsdb 命令還包含支持 UFS 日誌記錄的新調試命令。
在一些操作系統中,啟用了日誌記錄的文件系統稱為日記記錄文件系統。