博客專欄

        EEPW首頁 > 博客 > 超能課堂(281):常見文件系統格式介紹

        超能課堂(281):常見文件系統格式介紹

        發布人:超能網 時間:2021-07-23 來源:工程師 發布文章

        在現代計算機中,文件系統(file system)是命名文件及放置文件的邏輯存儲和恢復的系統,是操作系統用于明確存儲設備或分區上的文件的方法和數據結構,也就是在存儲設備上組織文件的方法,管理和存儲文件的軟件機構。我們日常見到的Windows、macOS、Linux甚至UNIX等操作系統,都有文件系統。不同的操作系統間,可以使用的文件系統格式也不一樣。在日常生活里,可能會遇到在Windows里插入U盤或移動硬盤可以隨意讀取和寫入,但到了Mac上卻發現不能把資料放進去。

        文件系統格式有很多,其結構、邏輯、存取速度、體積大小、安全性和穩定性等都不一樣,同時面向的存儲介質也有不同。這個問題如果細究起來會非常復雜,涉及到很多計算機軟件方面的專業知識。接下來會介紹幾種不同系統下的常見文件系統格式,包括了普通用戶最常用的Windows系統,還有部分用戶會使用的macOS系統,以及個別用戶會接觸到的Linux系統,讓大家有個大致的了解。

        Windows

        FAT

        FAT全稱是File Allocation Table,即文件配置表,是在1977年為了管理磁盤而發明的。比爾蓋茨是其中一位發明人,微軟擁有部分專利。經過多次適配逐漸使用在硬盤上,也被后來的MS-DOS以及Windows 9x操作系統所使用,是當時的文件系統格式,使用了相當長的一段時間。

        不過FAT有一個比較明顯的缺點,當文件刪除后寫入新數據,不會將文件整理成完整片段再寫入,用戶長期使用后會使文件數據變得分散,最終會減慢讀寫速度。在過去Windows 9x操作系統時期,不少用戶每隔一段時間就會使用系統里的工具進行碎片整理,以保證FAT文件系統的效率。后來隨著硬盤容量的增大,硬盤進行碎片整理的時間會越來越長,FAT磁盤效率低的缺點更加明顯,已經變得有點不適應發展需要了。

        FAT使用廣泛,幾乎被所有操作系統支持。雖然早已不是Windows操作系統的主流文件系統格式了,但仍廣泛存在于軟盤、U盤和嵌入式設備上,適用于不同操作系統之間交換數據。在日常使用中,用戶最容易接觸到的是FAT32,常見于U盤,不過會有單個文件體積4GB的限制,隨著數據量的增大,往后使用率會慢慢降低。

        NTFS

        NTFS全稱是New Technology File System,最早出現于1993年,使用Windows NT內核的操作系統開始提供支持。從Windows 2000開始,包括后來的Windows XP直到現在我們使用的Windows 10,默認文件系統都是NTFS。

        從Windows 9x時代過來的用戶都會記得,當年Windows系統崩潰是常有的事情,對于喜歡折騰的用戶來說,重裝系統是家常便飯了。到了Windows XP時期,除了界面的巨大變化,在使用上最讓人印象深刻的莫過于穩定性,重裝系統的機率大幅度減少。NTFS文件系統具有錯誤預警功能、磁盤自我修復功能和日志功能三個功能,相比原來的FAT文件系統,NTFS文件系統在安全性、易用性和穩定性上都有了質的飛躍。

        NTFS系統是一個日志文件系統,是為網絡和磁盤配額、文件加密等管理安全特性設計的磁盤格式,提供長文件名、數據保護和恢復,能通過目錄和文件許可實現安全性,并支持跨越分區。在NTFS系統中,除了寫入信息,還會對操作進行記錄,當NTFS文件系統在發生錯誤的時候,利用日志功能可以修復數據,使得系統恢復變得更加容易。

        在日常使用中,個別使用Mac的用戶可能會遇到不能正常使用NTFS文件系統格式U盤的情況。這是因為在macOS系統里,默認對NTFS文件系統格式的U盤只能讀取,不能寫入、刪除或修改,需要額外的工具才可以。

        exFAT

        exFAT全稱是Extended File Allocation Table File System,意思是擴展FAT,即擴展文件分配表。這是微軟專門為閃存設備設計的文件系統,在Windows Embeded 5.0開始提供支持,一方面可以解決NTFS不太適用于閃存的問題(不斷讀寫可能會影響使用壽命),另一方面是為了解決FAT32單個文件體積4GB限制等問題。

        如果用戶使用Windows 8及更高版本的操作系統,可原生支持exFAT啟動,同時支持以特殊方式安裝在exFAT分區中。由于exFAT文件系統在Windows,Linux以及macOS上都能進行讀寫操作,而且支持大文件,這些特性讓exFAT使用在U盤上就非常適合了。雖然exFAT兼容性比起FAT32會差一些,但長遠來說使用率會越來越高。

        macOS

        HFS/HFS+

        HFS全稱是Hierarchical File System,即分層文件系統,也稱Mac OS 標準格式。這是由蘋果開發可用于軟盤、磁盤和光盤的文件系統格式,首次出現在1985年。HFS用于取代更為老舊的MFS(Macintosh File System),即Macintosh 文件系統。很長時間內,HFS都是Mac專有的主要文件系統,也是蘋果Open Firmware所支持的最基本的文件系統。

        HFS+稱為Mac OS 擴展格式,是蘋果在1998年發布(首見于Mac OS 8.1)的Mac專有大容量硬盤文件系統,以改善HFS對磁盤空間的地址定位效率低下的問題,并加以改進。HFS+使用了相當長的時間,差不多有20年的時間,一直到macOS 10.12。不過HFS+是一個飽受爭議的文件系統格式,Linux之父Linus Benedict Torvalds曾稱HFS+是有史以來最爛的文件系統,原話是:

        “Quite frankly, HFS+ is probably the worst filesystem ever. Christ what shit it is.”

        當然,Linus的吐槽能力在業內是很出名的,值得一提的經典事件不止一兩次。

        APFS

        APFS全稱Apple File System,即Apple 文件系統。隨著2017年蘋果推出macOS10.13,APFS取代了 HFS+,成為Mac電腦所使用的默認文件系統。新的文件系統具有強加密、空間共享、磁盤快照、快速目錄大小統計等特性,以及改進的文件系統基礎,優化了SSD性能。

        隨著計算機技術的發展,CPU多核心、內存和硬盤的容量不斷增大、存儲介質從HDD逐漸轉向SSD等,硬件的改變需要軟件的配合,而HFS+已不能適應新時代硬件的發展節奏了。APFS不但適用于閃存/SSD存儲,還可以與HDD和外置直連儲存設備的低版本系統配合使用。值得一提的是,APFS的開發和設計是從2014年開始的,而且是從零開始構建,前后僅用了三年的時間,可以說非常高效。

        Linux

        Ext2/Ext3

        Ext2全稱Second Extended Filesystem,是Linux內核所使用的文件系統,首次出現于1993年,是許多早期Linux發行版默認的文件系統。Ext2可以說的Linux系統中使用最多的一種文件系統,其存取文件的性能極好,CPU占用率極低,既可以用在磁盤這樣的標準存儲設備,也能用在磁盤等移動存儲設備上。

        Ext3全稱Third Extended Filesystem,這也是不少Linux發行版默認的文件系統,首次出現于1999年。Ext3屬于一種日志文件系統,是對Ext2的擴展,并兼容Ext2,兩者共享相同的工具集,而且兩種文件系統之間進行轉換非常容易。簡單來說,Ext3就是Ext2基礎上加入日志功能,實現了三個級別的日志記錄方式,包括日記(journal))、順序(ordered)和回寫(writeback)。

        在Ext3文件系統里,會將整個磁盤的寫入動作完整記錄在磁盤的某個區域上,詳細記錄每個細節,以便有需要的時候可以回溯追蹤。即使在某個過程被中斷,系統可以根據記錄重整,動作會非常迅速。

        Ext4

        Ext4全稱Fourth Extended Filesystem,是在Ext3基礎上新的高級功能,首次發布于2006年。由于改動導致Ext3變得不穩定,最終從Ext3中剝離并單獨發展。經過了一段時間的不斷改進,Ext4才變得穩定,成為現今大部分Linux發行版默認的文件系統。

        在功能上,Ext4和Ext3非常相似,但支持大文件系統,提高了對碎片的抵抗力,有更高的性能以及更好的時間戳。由于在Ext4開發過程中仍依賴于不少舊技術,存在一定的局限性,但在Linux下一代文件系統誕生前還會不斷改進,以適應現階段硬件的發展需要。未來一段時間內,Ext4還會繼續開發新的功能,包括元數據校驗和、一流的配額支持和大分配塊。

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 系統

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 四平市| 湘阴县| 基隆市| 株洲县| 抚州市| 达拉特旗| 安顺市| 彭水| 普陀区| 钟山县| 平利县| 湾仔区| 鹿泉市| 清苑县| 奈曼旗| 台北市| 若尔盖县| 喜德县| 湘潭县| 龙泉市| 武川县| 忻州市| 新龙县| 黄浦区| 家居| 云安县| 和林格尔县| 江山市| 保定市| 咸丰县| 巩留县| 逊克县| 邵阳市| 基隆市| 昆山市| 井冈山市| 安化县| 郁南县| 渝中区| 泸西县| 綦江县|