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