一文了解文件系統(tǒng)
文件系統(tǒng)是操作系統(tǒng)中重要的組成部分。文件系統(tǒng)對存儲介質上的數(shù)據(jù)進行組織及管理,并實現(xiàn)了數(shù)據(jù)的訪問和存儲功能,它是用戶通過系統(tǒng)管理和訪問數(shù)據(jù)的界面。
各種操作系統(tǒng)都有自己“專屬”的文件系統(tǒng),例如:Windos系統(tǒng)的NTFS、Linux系統(tǒng)的ext4和MacOS系統(tǒng)的APFS。但也存在一些通用的文件系統(tǒng),以方便不同的系統(tǒng)之間進行數(shù)據(jù)交換。例如:FAT32和exFAT文件系統(tǒng)。文件系統(tǒng)將物理存儲設備進行“分割”和“合并”,為操作系統(tǒng)提供一個統(tǒng)一的邏輯設備。文件系統(tǒng)可以將一個物理磁盤“分割”成多個邏輯分區(qū),也可以將多個邏輯分區(qū)“合并”成一個卷。當跨多個物理磁盤完成“合并”卷操作時,文件系統(tǒng)就實現(xiàn)了對單一物理設備容量的邏輯擴容。
分區(qū)和卷示意圖
對用戶而言,文件系統(tǒng)的主要功能是管理和組織文件。在文件系統(tǒng)中存儲的任何數(shù)據(jù)集合都是一個文件。文件在文件系統(tǒng)中必須有唯一的路徑和名稱,“路徑+名稱”就是文件在文件系統(tǒng)中的標識也是文件在系統(tǒng)中的位置。所有文件的最上級是某個邏輯分區(qū)或者邏輯卷,然后我們再逐級對文件進行分類存儲到不同的目錄,自然而然文件系統(tǒng)就形成了一個樹形的文件結構。
樹形文件結構示意圖
從文件系統(tǒng)的角度看所有的文件只有訪問權限和執(zhí)行權限的區(qū)別,文件內容的差異都是由文件自身定義的。不同類型的文件根據(jù)自定義的文件協(xié)議訪問文件內部的數(shù)據(jù),通常在文件頭部聲明文件的類型。文件名稱的格式也可以幫助系統(tǒng)和用戶識別文件的類型,但文件名稱并不能真正意義上改變文件的類型和內容。早期的Windows采用8.3格式的文件名命名標準,"."后面的3個字符幫助系統(tǒng)識別文件類型,最常見的exe便代表可執(zhí)行文件。
文件系統(tǒng)中除了硬件上容量的限制,文件數(shù)量也有一個上限。當系統(tǒng)中有大量的小體積文件時,文件系統(tǒng)的文件索引數(shù)量就會用盡,即使物理磁盤上還有存儲空間也無法創(chuàng)建新的文件。出現(xiàn)這種情況時,我們就需要依賴一些應用級別的文件管理程序,對這些小文件進行統(tǒng)一的管理。在這些應用級別的文件管理程序中,會創(chuàng)建一些固定尺寸的“大”文件,例如64MB、128MB等。文件管理程序會將小文件存儲到這些大文件內部指定的位置,文件系統(tǒng)中的一個“大”文件會包含了多個小文件。這樣有效降低了文件系統(tǒng)中的文件數(shù)量。雖然文件管理程序訪問文件可能導致訪問性能降低和空間使用率下降,但是文件系統(tǒng)中存儲的都是大文件。存儲大文件有效的避免文件系統(tǒng)的磁片碎片化和文件數(shù)量過多導致的性能下降,是一種有效的平衡手段。
文件系統(tǒng)是所有數(shù)據(jù)的基礎,不管是各種文檔、多媒體文件還是數(shù)據(jù)庫文件。理解文件系統(tǒng)的特性,有助于實現(xiàn)應用程序數(shù)據(jù)存儲的設計和開發(fā)。




































