文件系統
在計算中,文件系統或文件系統(通常縮寫為FS )是操作系統用來控制數據的存儲和檢索方式的方法和數據結構。沒有文件系統,放置在存儲介質中的數據將是一個大量數據,無法分辨出一個數據停止的位置,下一個數據開始,或者是在檢索該數據時所在的任何數據。通過將數據分為零件並給每個零件一個名稱,可以很容易地隔離和識別數據。從命名基於紙張的數據管理系統的方式中獲取名稱,每個數據都稱為“文件”。用於管理數據組及其名稱的結構和邏輯規則稱為“文件系統”。
有多種文件系統,每個文件系統都具有唯一的結構和邏輯,速度,靈活性,安全性,大小等的屬性。一些文件系統被設計用於特定應用程序。例如, ISO 9660和UDF文件系統專為光盤設計。
文件系統可以使用各種媒體在許多類型的存儲設備上使用。由IBM在1956年推出的HDD(硬盤驅動器)始於1960年代初期,現在仍然是通用計算機的主要次要存儲設備,預計在可預見的將來將保持這種狀態。使用的其他介質包括SSD ,磁性磁帶和光盤。在某些情況下,例如使用TMPF ,計算機的主內存(隨機訪問存儲器,RAM)用於創建臨時文件系統以供短期使用。
某些文件系統用於本地數據存儲設備;其他人則通過網絡協議(例如NFS , SMB或9p客戶端)提供文件訪問。某些文件系統是“虛擬”,這意味著根據請求(例如procfs and sysfs )計算所提供的“文件”(稱為虛擬文件),或者只是映射到用作備份存儲的其他文件系統中。文件系統管理有關這些文件的文件內容和元數據的訪問。它負責安排存儲空間;關於物理存儲介質的可靠性,效率和調整是重要的設計考慮因素。
術語的起源
來自c。 1900年,在計算機出現之前,使用文件系統和備案系統來描述一種存儲和檢索紙質文檔的方法。到1961年,術語文件系統已應用於與原始含義一起計算機化文件。到1964年,它已經普遍使用。
建築學
文件系統由兩層或三層組成。有時這些層是明確分開的,有時將功能組合在一起。
邏輯文件系統負責與用戶應用程序的交互。它為文件操作提供了應用程序程序接口(API) - OPEN
, CLOSE
, READ
等,並將所請求的操作傳遞到下面的圖層以進行處理。邏輯文件系統“管理[S]打開文件表條目和每個程序文件描述符”。該層提供“文件訪問,目錄操作,以及安全和保護”。
第二可選層是虛擬文件系統。 “此接口允許支持物理文件系統的多個並發實例,每個實例稱為文件系統實現”。
第三層是物理文件系統。該層與存儲設備(例如磁盤)的物理操作有關。它處理正在讀取或編寫的物理塊。它處理緩衝和內存管理,並負責在存儲介質上特定位置的物理位置。物理文件系統與設備驅動程序或通道互動以驅動存儲設備。
文件系統的各個方面
空間管理
注意:這僅適用於存儲設備中使用的文件系統。

文件系統以顆粒狀的方式分配空間,通常在設備上多個物理單位。該文件系統負責組織文件和目錄,並跟踪媒體的哪個區域屬於哪些文件和未使用的文件。例如,在1980年代初期的Apple DOS中,140千元磁盤上的256個字節扇區使用了軌道/扇區圖。
當文件不是分配單元的確切倍數時,這會導致未使用的空間,有時稱為鬆弛空間。對於512字節分配,平均未使用的空間為256個字節。對於64 kb的簇,平均未使用的空間為32 kb。創建文件系統時,選擇分配單元的大小。根據預期在文件系統中預期的文件的平均大小來選擇分配大小可以最大程度地減少無法使用的空間的數量。通常,默認分配可能會提供合理的用法。如果文件系統大部分包含非常大的文件,則選擇一個太小的分配大小會導致過多的開銷。

當未使用的空間或單個文件不連續時,就會發生文件系統碎片。當使用文件系統時,創建,修改和刪除文件。創建文件時,文件系統為數據分配空間。某些文件系統允許或需要在文件增長時指定初始空間分配以及隨後的增量分配。隨著文件的刪除,最終將其分配的空間被視為可供其他文件使用。這創建了各種尺寸的交替使用和未使用的區域。這是自由空間碎片。當創建文件並且沒有可用於初始分配的連續空間的區域時,必須將空間分配為片段。當修改文件以使其變得更大時,它可能會超過最初分配給其的空間,必須在其他地方分配另一個分配,並且文件變為片段。
在某些操作系統中,系統管理員可以使用磁盤配額來限制磁盤空間的分配。
文件名
文件名(或文件名)用於標識文件系統中的存儲位置。大多數文件系統對文件名的長度都有限制。在某些文件系統中,文件名不是敏感的(即MYFILE
和myfile
名稱,請參考目錄中的同一文件);在其他情況下,文件名是敏感的(即MYFILE
, MyFile
和myfile
名稱,請參考同一目錄中的三個單獨的文件)。
大多數現代文件系統允許文件名中包含Unicode字符集的各種字符。但是,它們可能對某些特殊字符的使用有限制,在文件名中不服用它們。這些字符可用於指示設備,設備類型,目錄前綴,文件路徑分離器或文件類型。
目錄
文件系統通常具有目錄(也稱為文件夾),該目錄允許用戶將文件分為單獨的集合。這可以通過將文件名與目錄中的索引或類似Unix的文件系統中的Inode相關聯來實現。目錄結構可以是平坦的(即線性),或允許目錄可能包含子目錄的層次結構。多技術操作系統中使用了第一個支持目錄任意層次結構的文件系統。類似Unix的系統的本機文件系統還支持任意目錄層次結構,例如, Apple的層次文件系統及其後繼HFS +經典Mac OS ( MS-DOS 2.0和MS的更高版本)中的後繼HFS+ -dos和Microsoft Windows , Windows NT操作系統家族中的NTFS文件系統,ODS-2(ODS-2結構2)和OpenVMS中的Files-11文件系統的較高級別。
元數據
其他簿記信息通常與文件系統中的每個文件相關聯。文件中包含的數據的長度可以存儲為分配給文件或字節數的塊數。文件最後修改的時間可以存儲為文件的時間戳。文件系統可能會存儲文件創建時間,上次訪問的時間,更改文件的元數據的時間,或者文件最後備份的時間。其他信息可以包括文件的設備類型(例如塊,字符,套接字,子目錄等),其所有者用戶ID和組ID ,其訪問權限和其他文件屬性(例如,文件是否僅讀取,可執行器等)。
文件系統存儲與文件關聯的所有元數據(包括文件名,文件內容的長度以及文件夾層次結構中的文件位置)分別與文件的內容分開。
大多數文件系統將所有文件的名稱存儲在一個目錄中的一個位置(該目錄的目錄表)通常像其他任何文件一樣存儲。許多文件系統僅在目錄表中的文件中放置了一些元數據,而該文件的其餘部分則以完全獨立的結構(例如Inode)中的元數據。
大多數文件系統還存儲與任何一個特定文件無關的元數據。此類元數據包括有關未使用區域的信息- 可用空間位圖,塊可用性圖和有關不良部門的信息。通常,有關分配組的此類信息存儲在分配組本身內。
可以使用擴展文件屬性在文件系統上關聯其他屬性,例如NTF , XFS , Ext2 , Ext3 ,某些版本的UFS和HFS+ 。一些文件系統提供了用戶定義的屬性,例如文檔的作者,文檔的字符編碼或圖像的大小。
一些文件系統允許不同的數據收集與一個文件名相關聯。這些單獨的集合可以稱為流或叉子。 Apple長期以來一直在Macintosh上使用了一個分叉的文件系統,Microsoft支持NTF中的流。一些文件系統在單個文件名下維護文件的多個過去修訂版;該文件名本身會檢索最新版本,而可以使用特殊的命名約定(例如“文件名; 4”或“ filename(-4)”訪問以前保存的版本,以訪問第四個保存版本。
有關文件系統支持哪種元數據的詳細信息,請參見文件系統#元數據的比較。
文件系統作為抽像用戶界面
在某些情況下,文件系統可能無法使用存儲設備,但可以用於組織和表示對任何數據的訪問,無論是存儲還是動態生成(例如procfs )。
公用事業
文件系統包括實用程序來初始化,更改參數並刪除文件系統的實例。一些包括擴展或截斷分配給文件系統的空間的能力。
目錄實用程序可用於創建,重命名和刪除目錄條目,這些目錄條目也稱為Dentries (Singular: Dentry ),並改變與目錄相關的元數據。目錄實用程序還可能包括創建指向目錄( UNIX中的硬鏈接)的其他鏈接,重命名父鏈接(“ ..”在UNIX式操作系統中的“ ..”)的功能,並創建指向文件的雙向鏈接。
文件實用程序創建,列出,複製,移動和刪除文件,並更改元數據。他們可能能夠截斷數據,截斷或擴展空間分配,附加,移動和修改文件。根據文件系統的基礎結構,它們可以提供從文件開頭或從文件中間插入文件中間或從文件中刪除條目的機制。實用程序可為已刪除的文件提供空間,如果文件系統提供了未刪除功能,也屬於此類別。
一些文件系統延遲操作,例如重組自由空間,安全擦除自由空間以及通過提供實用程序在最小活動時執行這些功能來重建層次結構。一個示例是文件系統碎片策劃實用程序。
文件系統實用程序的一些最重要的功能是監督活動,可能涉及繞過所有權或直接訪問基礎設備。這些包括高性能備份和恢復,數據複製以及文件系統中各種數據結構和分配表的重組。
限制和允許訪問
文件系統使用多種機制來控制對數據的訪問。通常,目的是防止用戶或一組用戶讀取或修改文件。另一個原因是確保以受控方式修改數據,以便訪問可能僅限於特定程序。示例包括存儲在文件或其他地方的元數據中的密碼,並以權限位,訪問控制列表或功能的形式進行文件權限。文件系統實用程序的需求能夠在媒體級別訪問數據以重組結構並提供有效的備份,通常意味著它們僅對禮貌用戶有效,但對入侵者無效。
文件系統有時包含用於加密文件數據的方法。這是非常有效的,因為不需要文件系統實用程序知道加密種子有效地管理數據。依靠加密的風險包括攻擊者可以復制數據並使用蠻力解密數據的事實。另外,失去種子意味著丟失數據。
保持完整性
文件系統的一項重大責任是確保輔助存儲中的文件系統結構保持一致,而不管通過訪問文件系統的程序採取何種操作。這包括如果修改文件系統的程序異常終止或忽略以告知文件系統已完成其活動,則採取的措施。這可能包括更新元數據,目錄條目並處理任何被緩衝但尚未在物理存儲媒體上更新的數據。
文件系統必須處理的其他故障包括媒體故障或失去與遠程系統的連接。
如果發生操作系統故障或“軟”功率故障,則必須調用文件系統中的特殊例程,類似於單個程序失敗時。
文件系統還必須能夠糾正損壞的結構。這些可能是由於操作系統故障而導致的,該操作系統無法通知文件系統,電源故障或重置。
文件系統還必須記錄事件,以允許分析系統性問題以及特定文件或目錄的問題。
用戶數據
文件系統的最重要目的是管理用戶數據。這包括存儲,檢索和更新數據。
一些文件系統接受存儲數據作為一個字節流,這些字節是根據媒體有效的方式收集和存儲的。當程序檢索數據時,它指定了內存緩衝區的大小,文件系統將數據從媒體傳輸到緩衝區。運行時庫例程有時可能允許用戶程序根據指定長度的庫調用來定義記錄。當用戶程序讀取數據時,庫將通過文件系統檢索數據並返回記錄。
一些文件系統允許規範固定的記錄長度,該記錄長度用於所有寫入和讀取。這有助於找到n記錄以及更新記錄。
每個記錄的標識(也稱為鑰匙)使得更複雜的文件系統。用戶程序可以讀取,寫入和更新記錄,而無需考慮其位置。這需要對媒體塊的複雜管理通常將關鍵塊和數據塊分開。可以使用用於定位記錄的金字塔結構來開發非常有效的算法。
使用文件系統
實用程序,特定於語言的運行時庫和用戶程序使用文件系統API來提出文件系統的請求。其中包括數據傳輸,定位,更新元數據,管理目錄,管理訪問規格和刪除。
單個系統中的多個文件系統
通常,零售系統配置了一個佔據整個存儲設備的單個文件系統。
另一種方法是分區磁盤,以便可以使用具有不同屬性的幾個文件系統。一個文件系統(用於瀏覽器緩存或電子郵件存儲)可能配置為較小的分配尺寸。這可以使創建和刪除在磁盤的狹窄區域中創建和刪除典型的瀏覽器活動文件的活動,在該區域不會干擾其他文件分配。可以創建另一個分區,以存儲具有相對較大的塊大小的音頻或視頻文件。通常可以將另一個設置為僅閱讀,並且只有定期設置可寫的。
第三種方法主要用於雲系統,是在另一個(主機)文件系統中使用“磁盤圖像”來容納具有相同屬性的其他文件系統。一個常見的示例是虛擬化:一個用戶可以在其/她的生產Windows環境(使用NTFS )下的虛擬機中運行實驗Linux分佈(使用EXT4文件系統)。 Ext4文件系統位於磁盤映像中,該磁盤被視為NTFS主機文件系統中的文件(或多個文件,取決於管理程序和設置)。
在單個系統上擁有多個文件系統具有附加的好處,即在單個分區發生損壞的情況下,其餘的文件系統通常仍然是完整的。這包括對系統分區的病毒破壞,甚至不會引導的系統。需要專用訪問的文件系統實用程序可以有效地完成。另外,碎片製度可能更有效。也可以在細分市場中處理幾種系統維護公用事業,例如病毒掃描和備份。例如,如果自上次備份以來沒有添加,則無需備份包含視頻以及所有其他文件的文件系統。至於圖像文件,可以輕鬆地“旋轉”差分圖像,這些圖像僅包含寫給主(原始)圖像的“新”數據。可以將差異圖像用於兩個安全問題(作為“一次性”系統 - 如果被病毒銷毀或污染,可以迅速恢復,因為可以刪除舊圖像,並且可以在幾秒鐘內創建新圖像,即使沒有自動化過程)和快速的虛擬機部署(因為可以使用批處理中的腳本快速產生差異圖像)。
設計限制
所有文件系統都有一定的功能限制,可以定義該系統中的最大存儲數據容量。這些功能限制是根據存儲系統的大小以及將來大型存儲系統的最大猜測努力。磁盤存儲的速度持續增長(請參閱Moore的定律),因此,幾年後,文件系統一直達到設計限制,這些限制要求計算機用戶反復轉向具有越來越多的容量的新系統。
文件系統複雜性通常與可用的存儲容量成比例地變化。 1980年代初期使用50 KB至512 KB存儲的家用計算機的文件系統對於具有數百GB能力的現代存儲系統而言,這不是一個合理的選擇。同樣,對於這些早期系統,現代文件系統將不是一個合理的選擇,因為現代文件系統結構的複雜性會迅速消耗甚至超過早期存儲系統的非常有限的容量。
文件系統類型
文件系統類型可以分類為磁盤/磁帶文件系統,網絡文件系統和特殊用途文件系統。
磁盤文件系統
磁盤文件系統具有磁盤存儲媒體在短時間內隨機地解決數據的能力的優勢。其他考慮因素包括訪問數據之後的數據速度,以及也可能要求以下數據的期望。這允許多個用戶(或進程)訪問磁盤上的各種數據,而無需考慮數據的順序位置。 Examples include FAT ( FAT12 , FAT16 , FAT32 ), exFAT , NTFS , ReFS , HFS and HFS+ , HPFS , APFS , UFS , ext2 , ext3 , ext4 , XFS , btrfs , Files-11 , Veritas File System , VMFS , ZFS , ReiserFS , NSS和Scoutfs。一些磁盤文件系統是日記文件系統或版本化文件系統。
光碟
ISO 9660和Universal Disk格式(UDF)是針對緊湊型盤, DVD和Blu-ray光盤的兩種常見格式。自2.6系列Linux內核和Windows Vista以來, Rainier Mount Rainier是UDF支持的擴展,並且有助於重寫DVD。
閃存文件系統
閃存文件系統考慮了閃存設備的特殊功能,性能和限制。通常,磁盤文件系統可以使用閃存設備作為基礎存儲媒體,但是使用專門為閃存設備設計的文件系統要好得多。
磁帶文件系統
磁帶文件系統是文件系統和磁帶格式,旨在將文件存儲在磁帶上。磁帶是順序存儲介質,其隨機數據訪問時間比磁盤更長,對通用文件系統的創建和有效管理提出了挑戰。
在磁盤文件系統中,通常有一個主文件目錄,以及二手和免費數據區域的地圖。任何文件添加,更改或刪除都需要更新目錄和使用/免費的圖。隨機訪問數據區域以毫秒為單位測量,因此該系統適用於磁盤。
磁帶需要線性運動才能吹來,並可能會大量的媒體捲軸。此磁帶運動可能需要幾秒鐘到幾分鐘才能將讀/寫頭從磁帶的一端移動到另一端。
因此,主文件目錄和使用圖可能非常緩慢且效率低下。寫作通常涉及閱讀塊用法映射以查找寫作的自由塊,更新使用圖和目錄以添加數據,然後推進磁帶以在正確的位置編寫數據。每個其他文件寫入都需要更新地圖和目錄並編寫數據,每個文件可能需要幾秒鐘。
相反,磁帶文件系統通常允許將文件目錄分佈在與數據相互混合的磁帶上,稱為流,因此不需要時間耗時和重複的磁帶動作來編寫新數據。
但是,該設計的副作用是讀取磁帶的文件目錄通常需要掃描整個磁帶以讀取所有散佈的目錄條目。大多數可與磁帶存儲一起使用的數據歸檔軟件都會在磁盤文件系統上存儲磁帶目錄的本地副本,因此可以在磁帶中添加文件,而無需重新錄製磁帶介質。如果在指定的時間內不使用,通常會丟棄本地磁帶目錄副本,此時,如果將來要使用膠帶,則必須重新掃描磁帶。
IBM已開發了一個用於磁帶的文件系統,稱為線性磁帶文件系統。該文件系統的IBM實現已作為開源IBM線性磁帶文件系統(單驅動器版(LTFS-SDE)產品發布。線性磁帶文件系統使用磁帶上的單獨分區記錄索引元數據,從而避免了與整個磁帶中散射目錄條目相關的問題。
膠帶格式
將數據寫入磁帶,擦除或格式化膠帶通常是一個耗時的過程,可能需要花費幾個小時的大型磁帶。借助許多數據磁帶技術,不必在將新數據列入磁帶之前格式化磁帶。這是由於順序介質上覆蓋數據的固有破壞性性質。
由於可以花費格式化膠帶的時間,因此通常會預先格式化磁帶,因此磁帶用戶無需花費時間來準備每個新磁帶供使用。通常所需的只是在使用前將識別媒體標籤寫入磁帶,即使是第一次使用新磁帶時,也可以由軟件自動編寫。
數據庫文件系統
文件管理的另一個概念是基於數據庫的文件系統的想法。文件是由文件,主題,作者或類似富元的元素類型識別的,而不是除了層次結構化管理。
I(以前稱為DB2/400和I5/OS的DB2)是數據庫文件系統,作為基於對象的IBM I操作系統(以前稱為OS/400和I5/OS),是一個數據庫文件系統,並結合了單個級別,由Frank G. Soltis IBM的IBM i前首席科學家設計的IBM Power Systems(以前稱為AS/400和ISERIES)在IBM Power Systems(以前稱為AS/400和Iseries)。 1978年至1988年,弗蘭克·G·索爾蒂斯(Frank G. Soltis)及其在IBM Rochester的團隊成功地設計和應用技術,例如數據庫文件系統,在這些技術中,像Microsoft這樣的其他人後來未能完成。這些技術被非正式地稱為“羅切斯特要塞”,在幾個基本方面從早期的大型機技術擴展到了一些基本方面,但從許多方面來看,從技術角度來看。
其他一些不是“純”數據庫文件系統的項目,而是使用數據庫文件系統的某些方面:
- 許多Web內容管理系統使用關係DBMS來存儲和檢索文件。例如,將XHTML文件存儲為XML或文本字段,而圖像文件則存儲為blob字段; SQL選擇(帶有可選的XPath )語句檢索文件,並允許使用複雜的邏輯和更多豐富的信息關聯,而不是“常規文件系統”。許多CMS還可以選擇在數據庫中存儲元數據,標准文件系統用於存儲文件的內容。
- 非常大的文件系統,由Apache Hadoop和Google File System等應用程序體現,使用一些數據庫文件系統概念。
交易文件系統
某些程序需要進行多個文件系統更改,或者,如果出於任何原因,一個或多個更改失敗,則不會進行更改。例如,正在安裝或更新軟件的程序可以編寫可執行文件,庫和/或配置文件。如果某些寫作失敗,並且該軟件被部分安裝或更新,則該軟件可能會破壞或無法使用。關鍵系統實用程序(例如命令殼)的不完整更新可能會使整個系統處於無法使用的狀態。
交易處理引入了原子能保證,確保交易內部的操作都是犯下的,或者可以流產交易,並且系統丟棄了其所有部分結果。這意味著,如果發生崩潰或電源故障,恢復後,存儲的狀態將保持一致。該軟件將完全安裝,或者失敗的安裝將完全回滾,但是系統不會在系統上保留不可用的部分安裝。交易還提供了隔離保證,這意味著交易中的操作隱藏在系統上的其他線程之前,直到交易進行為止,並且在系統上的干擾操作將與交易正確序列化。
Windows以Vista開頭,在稱為Transactional NTFS的功能中向NTFS添加了交易支持,但現在不建議使用其使用。有許多用於UNIX系統的交易文件系統的研究原型,包括Valor文件系統,Amino,LFS和TXOS內核上的交易ext3文件系統,以及針對嵌入式系統的交易文件系統,例如TFFS。
如果沒有文件系統事務,就很難(即使不是不可能)確保多個文件系統操作的一致性。文件鎖定可以用作單個文件的並發控制機制,但通常不能保護目錄結構或文件元數據。例如,文件鎖定無法阻止符號鏈接上的Tocttou Race條件。文件鎖定也無法自動回滾失敗的操作,例如軟件升級;這需要原子性。
日記文件系統是一種用於引入文件系統結構的交易級一致性的技術。作為OS API的一部分,期刊交易不會暴露於程序;它們僅在內部用於確保單個系統調用粒度的一致性。
數據備份系統通常不提供以交易方式直接備份存儲數據的支持,這使得可靠且一致的數據集的恢復變得困難。大多數備份軟件都只會注意到自一定時間以來已更改了哪些文件,而不管整個數據集中的多個文件共享的交易狀態如何。作為解決方法,某些數據庫系統只是生成包含所有數據的存檔狀態文件,而備份軟件僅備份備份,並且根本不與主動交易數據庫進行交互。恢復需要在備份軟件恢復文件後,將數據庫單獨恢復與狀態文件。
網絡文件系統
網絡文件系統是一個文件系統,充當遠程文件訪問協議的客戶端,可在服務器上提供對文件的訪問。使用本地接口的程序可以在遠程網絡連接的計算機中透明地創建,管理和訪問層次結構目錄和文件。網絡文件系統的示例包括NFS , AFS , SMB協議以及FTP和WebDAV類似文件系統的客戶端的客戶端。
共享磁盤文件系統是許多機器(通常服務器)都可以訪問相同的外部磁盤子系統(通常是存儲區域網絡)的磁盤系統。文件系統仲裁對該子系統的訪問,以防止寫碰撞。示例包括來自Red Hat , GPF的GFS2 ,現在稱為Spectrum Scale,來自DataPlow的IBM, SFS ,SGI的SFS,來自SGI的CXF ,來自Quantum Corporation的Stornext和Versity的Scoutfs。
特殊文件系統
一個特殊的文件系統將操作系統的非文件元素作為文件呈現,因此可以使用文件系統API進行作用。這是在類似於Unix的操作系統中最常見的,但是在某些類似於Unix的操作系統中,設備也被賦予了文件名。
設備文件系統
設備文件系統代表I/O設備和偽設備為文件,稱為設備文件。類似Unix的系統中的示例包括DEVF和Linux 2.6系統中的UDEV 。在類似於Unix的系統中,例如TOPS-10和其他受其影響的操作系統,其中文件的完整文件名或路徑名可以包括設備前綴,設備除包含文件系統以外的設備是由設備前綴引用的指定設備,無需任何內容。
其他特殊文件系統
最小文件系統 /音頻箱存儲
在1970年代,對於一些早期的微型計算機用戶來說,磁盤和數字磁帶設備太昂貴了。設計了一個廉價的基本數據存儲系統,該系統使用了常見的音頻盒式磁帶。
當系統需要編寫數據時,通知用戶在錄音機上按“記錄”,然後在鍵盤上按“返回”,以通知系統錄音機正在錄製。該系統寫了一條聲音以提供時間同步,然後調製了編碼前綴,數據,校驗和後綴的聲音。當系統需要讀取數據時,指示用戶在錄音機上按“播放”。該系統會聽到磁帶上的聲音等待,直到可以將聲音爆發為同步為止。然後,系統將將後續的聲音解釋為數據。數據讀取完成後,系統將通知用戶在盒式錄音機上按“停止”。它是原始的,但(大部分)起作用。數據是依次存儲的,通常以未命名的格式存儲,儘管某些系統(例如Commodore PET系列計算機)確實允許命名文件。可以通過快速向磁帶進行快速前進並在磁帶計數器上觀察多組數據,以找到磁帶上下一個數據區域的大致開始。用戶可能必須聆聽聲音才能找到合適的位置開始播放下一個數據區域。一些實現甚至包括散佈在數據的聲音。
平面文件系統
在平面文件系統中,沒有子目錄。所有文件的目錄條目都存儲在單個目錄中。
當首先提供軟盤介質時,由於可用的數據空間相對較少,因此這種類型的文件系統就足夠了。 CP/M機器具有一個平面文件系統,可以將文件分配給16個用戶區域之一,而通用文件操作則可以縮小為一家工作,而不是默認用於處理所有操作。這些用戶領域不過是與文件相關的特殊屬性。也就是說,只要磁盤上仍然有免費存儲空間,就不必為每個區域中的每個區域定義特定的配額,並且文件可以添加到組中。早期的Apple Macintosh還配備了平面文件系統Macintosh文件系統。這是不尋常的,因為文件管理程序( Macintosh Finder )在EMF上產生了部分分層歸檔系統的幻想。該結構要求每個文件都具有唯一名稱,即使它似乎位於單獨的文件夾中。 IBM DOS/360和OS/360存儲條目,用於磁盤包上的所有文件(卷)在包裝上的目錄中的所有文件(卷),稱為卷的目錄(VTOC)。
隨著文件的數量的增加,簡單,平坦的文件系統變得尷尬,並且很難將數據組織到相關的文件組中。
Flat File System家族的最新添加是Amazon的S3 ,這是一種遠程存儲服務,該服務有意簡單地允許用戶自定義其數據的存儲方式。唯一的構造是存儲桶(想像一下無限尺寸的磁盤驅動器)和對象(相似,但與文件的標準概念相似)。通過能夠在對象的名稱中使用幾乎任何字符(包括'/'),以及根據相同的前綴選擇存儲桶內容的子集的能力,允許高級文件管理。
文件系統和操作系統
許多操作系統包括支持多個文件系統的支持。有時,操作系統和文件系統緊密地交織在一起,以至於很難將文件系統功能分開。
需要在用戶和文件系統之間提供操作系統軟件提供的接口。該界面可以是文本(例如由命令行界面提供的,例如unix shell或OpenVMS dcl )或圖形(例如圖形用戶界面提供的,例如文件瀏覽器)。如果是圖形的,則經常使用該文件夾的隱喻,其中包含文檔,其他文件和嵌套文件夾(另請參見:目錄和文件夾)。
UNIX和UNIX式操作系統
類似於Unix的操作系統創建一個虛擬文件系統,這使所有設備上的所有文件似乎都存在於單個層次結構中。這意味著,在這些系統中,有一個根目錄,並且系統上存在的每個文件都位於其下方。類似Unix的系統可以使用RAM磁盤或網絡共享資源作為其根目錄。
類似於Unix的系統為每個設備分配一個設備名稱,但這不是該設備上的文件的訪問方式。取而代之的是,要訪問另一個設備上的文件,必須首先將操作系統在目錄樹中出現在哪裡。此過程稱為安裝文件系統。例如,要訪問CD-ROM上的文件,必須告訴操作系統“從此CD-ROM中獲取文件系統,並使其在此類目錄下顯示”。給出操作系統的目錄稱為安裝點- 例如,它可能是 /媒體。 /媒體目錄存在於許多UNIX系統(如文件系統層次結構標準中指定)上,並專門用於可移動媒體的安裝點,例如CD,DVD,USB驅動器或軟盤。它可能是空的,也可能包含用於安裝單個設備的子目錄。通常,只有管理員(IE根用戶)才能授權文件系統的安裝。
類似於UNIX的操作系統通常包括有助於安裝過程並提供新功能的軟件和工具。其中一些策略已被創造為“自動安裝”,以反映其目的。
- 在許多情況下,一旦操作系統啟動,就需要立即可用。因此,所有類似Unix的系統都為啟動時安裝文件系統提供了一個設施。系統管理員在配置文件fstab ( Solaris中的VFSTAB )中定義了這些文件系統,該文件也指示選項和安裝點。
- 在某些情況下,儘管此後可能需要使用它們的使用,但不需要在啟動時安裝某些文件系統。有一些類似於Unix的系統的實用程序,可以根據需要安裝預定義的文件系統。
- 可移動媒體允許在沒有物理連接的情況下將程序和數據傳輸到機器之間。常見的示例包括USB閃存驅動器, CD-ROM和DVD 。因此,已經開發了公用事業來檢測培養基的存在和可用性,然後在沒有任何用戶干預的情況下安裝該培養基。
- 漸進式Unix的系統還引入了一個稱為SuperMounting的概念;參見例如Linux SuperMount-NG項目。例如,可以從系統中物理刪除已被超大型的軟盤。在正常情況下,磁盤應在刪除之前同步,然後在磁盤上卸下。只要發生同步,可以將不同的磁盤插入驅動器中。系統會自動注意到磁盤已更改並更新安裝點內容,以反映新介質。
- 當將其引用到應安裝的目錄上時,自動啟動將自動安裝文件系統。這通常用於網絡服務器上的文件系統,而不是依靠諸如媒體插入之類的事件,因為適用於可移動媒體。
Linux
Linux支持眾多文件系統,但是塊設備上系統磁盤的常見選擇包括Ext* family( Ext2 , Ext3和Ext4 ), XFS , JFS和BTRFS 。對於無閃光平移層(FTL)或內存技術設備(MTD)的原始閃光燈,有UBIFS , JFFS2和YAFFS等。南瓜是一種常見的僅壓縮讀取文件系統。
Solaris
Solaris在較早的早期釋放到可引導和補充文件系統的UFS (非殺人或非遺物)UF。 Solaris默認為,支持和擴展UFS。
隨著時間的推移,對其他文件系統的支持和顯著增強功能都添加了,包括Veritas Software Corp.(日記) VXFS ,Sun Microsystems(聚類) QFS ,Sun Microsystems(日記)UFS和Sun Microsystems(開源,泳池,128位可壓縮,128位可壓縮,和錯誤糾正) ZFS 。
將內核擴展添加到Solaris中,以允許可引導的Veritas VXFS操作。在Sun的Solaris 7中添加了伐木或記錄。 Solaris 10 ,Solaris Express, OpenSolaris和Solaris操作系統的其他開源變體的版本後來支持可引導的ZFS 。
邏輯音量管理允許跨多個設備跨越文件系統,以增加冗餘,容量和/或吞吐量。 Solaris的舊環境可以使用Solaris卷經理(以前稱為Solstice Disksuite )。多個操作系統(包括Solaris)可以使用Veritas卷經理。現代Solaris的操作系統可以通過利用ZFS中的虛擬存儲池進行體積管理的需求。
蘋果系統
MACOS(以前是Mac OS X)使用Apple File System (APFS),該系統在2017年取代了從經典Mac OS (稱為HFS Plus (HFS+))繼承的文件系統。蘋果還為HFS+使用術語“ Mac OS擴展”。 HFS Plus是一種元數據- 富含病例,但(通常)對病例不敏感的文件系統。由於MACOS的UNIX根,將UNIX權限添加到HFS Plus中。 HFS加上添加的日記版的以後版本,以防止文件系統結構的損壞,並對分配算法進行了許多優化,以嘗試自動進行分化文件,而無需外部放射器。
文件名最多可以是255個字符。 HFS Plus使用Unicode存儲文件名。在MACOS上, FileType可以來自存儲在文件元數據中的類型代碼或文件名擴展名。
HFS Plus具有三種鏈接:Unix風格的硬鏈路,Unix風格的符號鏈接和別名。別名旨在維護其原始文件的鏈接,即使它們被移動或重命名;文件系統本身不是解釋它們,而是用Userland中的文件管理器代碼來解釋。
Macos 10.13 High Sierra於2017年6月5日在Apple的WWDC活動中宣布,使用了固態驅動器上的Apple文件系統。
MACOS還支持UFS文件系統,該系統通過NextStep從BSD Unix快速文件系統得出。但是,與Mac OS X Leopard一樣,MACOS無法再安裝在UFS音量上,也無法將安裝在UFS卷上的前斜角系統升級到Leopard。從MAC OS X開始,獅子UFS支持被完全刪除。
MacOS的較新版本能夠讀取和寫入Windows上常見的傳統脂肪文件系統(16和32)。他們還能夠讀取用於Windows的較新的NTFS文件系統。為了在MacOS版本上寫入NTFS文件系統之前,需要在Mac OS X Snow Leopard第三方軟件之前寫入。 Mac OS X 10.6(Snow Leopard),然後允許寫入NTFS文件系統,但僅在非平凡的系統設置更改之後(存在自動化此功能的第三方軟件)。
最後,MACOS支持Exfat文件系統的讀取和撰寫,因為Mac OS X Snow Leopard從10.6.5開始。
OS/2
OS/2 1.2引入了高性能文件系統(HPFS)。 HPFS在不同的代碼頁面,長文件名(255個字符),更有效地使用磁盤空間,一種使相關項目在磁盤捲上保持較短的相關項目,數據的較少,基於範圍的空間將相關項目彼此接近,基於範圍分配,目錄的B+樹結構以及位於磁盤中點的根目錄,以更快地訪問。 1999年運送了日記帳文件系統(JFS)。
PC-BSD
PC-BSD是FreeBSD的桌面版本,它繼承了FreeBSD的ZFS支持,類似於Freenas 。 PC-BSD的新圖形安裝程序可以在ZFS上處理 /( root )和RAID-Z池上的安裝和磁盤加密,從一開始就以簡單的( GUI )方式就可以使用GELI進行加密。當前的PC-BSD 9.0+“同位素版”具有ZFS文件系統版本5和ZFS存儲池版本28。
計劃9
Bell Labs的計劃9將所有內容都視為文件,並將所有對象訪問作為文件(即,沒有IOCTL或MMAP ):網絡,圖形,調試,調試,身份驗證,功能,加密和其他服務可通過i訪問/o文件描述符的操作。 9P協議刪除了本地文件和遠程文件之間的差異。計劃9中的文件系統是藉助私人,每個程序名稱空間組織的,允許每個過程對提供分佈式系統中資源的許多文件系統具有不同的看法。
Inferno操作系統與計劃9共享這些概念。
微軟Windows

Windows利用FAT , NTFS , EXFAT , LIVE FILE FILE SYSTEM和REFS文件系統(其中最後一個僅在Windows Server 2012 , Windows Server 2016 ,Windows 2016, Windows 8 , Windows 8.1和Windows 10中支持和可用; Windows無法啟動從中)。
Windows在用戶級別使用驅動器字母抽象來區分一個磁盤或分區與另一個磁盤。例如,路徑C:\ Windows表示字母C表示的分區上的目錄窗口。驅動器C:最常用於主要硬盤驅動器分區,通常在其上安裝窗口並從中啟動。這種“傳統”已經變得如此根深蒂固,以至於許多應用程序中存在錯誤,這些應用程序假設操作系統安裝在上面的驅動器是C。主要的硬盤驅動器分區可以追溯到MS-DOS ,在該分區中,字母A和B最多可用於兩個軟盤驅動器。這反過來源自1970年代的CP/M ,最終源自1967年IBM的CP/CMS 。
胖的
幾乎所有用於個人計算機的操作系統,包括所有版本的Windows和MS-DOS / PC DOS , OS / 2和DR-DOS的所有操作系統都支持胖文件系統的家族。 (PC DOS是MS-DOS的OEM版本,MS-DOS最初是基於SCP的86- DOS。DR-DOS基於數字研究的同時DOS ,這是CP/M-86的繼任者。)因此,脂肪文件系統非常適合作為計算機和大多數類型和年齡的設備之間的通用交換格式。
脂肪文件系統將其根部追溯到獨立磁盤基本和短暫的MDOS/MIDAS項目中的(不兼容的)8位脂肪前體。
多年來,文件系統已從FAT12擴展到FAT16和FAT32 。已在文件系統中添加了各種功能,包括子目錄,代碼ePage支持,擴展屬性和長文件名。第三方(例如數字研究)為刪除跟踪提供了可選支持,以及基於卷/目錄/基於文件的多用戶安全方案,以支持文件和目錄密碼以及權限,例如read/write/decerute/刪除訪問權限。這些擴展中的大多數不受Windows的支持。
FAT12和FAT16文件系統對文件系統根目錄中的條目數量有限制,並且對脂肪形成磁盤或分區的最大尺寸受到限制。
FAT32解決了FAT12和FAT16的局限性,但文件大小限制接近4 GB,但與NTF相比,它仍然有限。
FAT12,FAT16和FAT32的文件名也有八個字符的限制,擴展名(例如.exe )的三個字符。這通常稱為8.3文件名限制。 VFAT是Windows 95和Windows NT 3.5中引入的FAT12,FAT16和FAT32的可選擴展名,允許以向後兼容的方式將長文件名( LFN )存儲在胖文件系統中。
NTFS
NTFS於1993年在Windows NT操作系統上引入,允許基於ACL的許可控制。 NTF還支持的其他功能包括硬鏈接,多個文件流,屬性索引,配額跟踪,稀疏文件,加密,壓縮和重複點(目錄作為其他文件系統的安裝點,Symlink,symlink,交界處,連接,遠程存儲鏈接)) 。
exfat
ExFAT在File System開銷方面具有某些優勢。
exfat與FAT12,FAT16或FAT32等脂肪文件系統不向後兼容。該文件系統由較新的Windows系統支持,例如Windows XP,Windows Server 2003,Windows Vista,Windows 2008,Windows 7,Windows 8,Windows 8.1,Windows 10和Windows 11。
MACOS以10.6.5版(Snow Leopard)為單位。在其他操作系統中的支持很少,因為實施對EXFAT的支持需要許可。 EXFAT是唯一在MacOS和Windows上完全支持的文件系統,可以容納大於4 GB的文件。
OpenVM
MVS
在引入VSAM之前, OS/360系統實現了混合文件系統。該系統旨在輕鬆支持可移動的磁盤包,因此與一個磁盤上的所有文件有關的信息(IBM術語中的卷)都存儲在該磁盤上,該磁盤稱為“卷”目錄(VTOC)的平坦系統文件。 VTOC將所有元數據存儲在文件中。後來,通過引入系統目錄實施了層次目錄結構,該目錄可以選擇在居民和可移動量上進行目錄文件(數據集)。該目錄僅包含將數據集與特定卷相關聯的信息。如果用戶要求在離線卷上訪問數據集並且具有合適的特權,則係統將嘗試安裝所需的捲。如果將所需的捲ID提供給打開的請求,則仍然可以使用VTOC中的信息來訪問編目和非催化數據集,繞過目錄。後來,對VTOC進行了索引以加快訪問速度。
會話監視器系統
VM/370的IBM對話監視系統(CMS)組件使用每個虛擬磁盤(微型磁盤)使用單獨的平面文件系統。文件數據和控制信息分散和混合。錨是稱為主文件目錄(MFD)的記錄,始終位於磁盤上的第四個街區中。最初,CMS使用了固定長度的800字節塊,但後來的版本使用的尺寸較大,最大為4K。訪問數據記錄需要兩個間接級別,其中文件的目錄條目(稱為文件狀態表(FST)條目)指向包含單個記錄地址列表的塊。
AS/400文件系統
AS/400及其後繼產品的數據由映射到單層存儲中的系統虛擬地址空間中的系統對象組成。定義了許多類型的對象,包括其他文件系統中的目錄和文件。文件對像以及其他類型的對象構成了AS/400對集成關係數據庫的支持的基礎。
其他文件系統
- Prospero文件系統是基於虛擬系統模型的文件系統。該系統是由南加州大學信息科學研究所的B. Clifford Neuman創建的。
- RSRE Flex文件系統- 用Algol 68編寫
- 密歇根終端系統(MTS)的文件系統很有趣,因為:(i)提供“行文件”,其中記錄長度和行號與文件中的每個記錄相關聯,可以添加,更換,更新,並使用相同或不同的長度記錄,並在文件中的任何地方刪除,而無需讀取和重寫整個文件; (ii)除用戶和組外,還可以共享或允許使用程序密鑰文件到命令和程序; (iii)有一個全面的文件鎖定機制,可以保護文件的數據及其元數據。
限制
轉換文件系統的類型
在與當前存在的文件系統中,將文件放在不同的文件系統中可能是有利的或必要的。原因包括需要超出當前文件系統限制的空間需求的需求。路徑深度可能需要超出文件系統限制。可能存在性能或可靠性考慮因素。提供對不支持現有文件系統的另一個操作系統的訪問是另一個原因。
就地轉換
在某些情況下,可以在就位進行轉換,儘管遷移文件系統更為保守,因為它涉及創建數據副本,並建議使用。在Windows上,FAT和FAT32文件系統可以通過Convert.EXE實用程序轉換為NTF,但反向不轉換為NTF。在Linux上,可以將EXT2轉換為EXT3(並轉換後),並且可以將EXT3轉換為Ext4(而不是後背),並且可以將Ext3和Ext4轉換為BTRF ,然後轉換為直到刪除撤消信息。由於對文件數據本身使用相同的格式,因此可以將元數據轉換為空白空間,在某些情況下,使用稀疏文件支持,這些轉換是可能的。
遷移到其他文件系統
遷移的缺點是需要額外的空間,儘管它可能更快。最好的情況是,如果媒體上有未使用的空間,將包含最終文件系統。
例如,要將FAT32文件系統遷移到Ext2文件系統,創建了一個新的Ext2文件系統。然後將FAT32文件系統的數據複製到EXT2 ONE,並刪除舊文件系統。
當沒有足夠的空間保留原始文件系統之前,是使用工作區域(例如可移動媒體)時,一種替代方案。這需要更長的時間,但具有產生備份的好處。
長文件路徑和長文件名稱
在層次文件系統中,通過路徑訪問文件,該路徑是包含文件的目錄的分支列表。不同的文件系統對路徑深度有不同的限制。文件系統還限制了單個文件名的長度。
複製帶有長名或位於一個從一個文件系統到另一個文件系統的重要深度路徑的文件可能會導致不良結果。這取決於實用程序如何處理差異。