不知道大家在童年的時候,在那段尚且天真的歲月裡有沒有做過這種事:打開家中的計算機,將自己喜歡的遊戲的啟動程序.exe複製到一份父母工作需要的3.5英寸軟盤當中,然後跑到學校的電腦室,打算在電腦課老師講解枯燥的內容時為大家演示《星際爭霸》或是《暴力摩託》,但這種時候多半會有兩種可能,一種是你不想被父母質疑這是什麼奇怪的文件而將原名改為非常長的名字,然後發現Windows根本不接受的你的重命名,二是拖到學校發現那個孤零零的.exe文件死都打不開遊戲,在你懊惱的時候,其實你已經在悄悄接觸「文件系統」這一概念,其中字符長度、文件大小、分區大小限制等等都是組成文件系統的基本要素。
文件系統就像我們圖書館的管理,圖為普林斯頓大學圖書館宣傳海報
從我們實際體驗一款作業系統的時候,其使用的文件系統對我們影響最深刻的時候大多數轉移拷貝文件、格式化、重命名、安裝系統、等等。很多時候你不會具體知道在使用的什麼文件系統,但是大多數用戶憑藉使用經驗都會有自己的習慣,比如說儘量用英文命名、字符不要太長、能用字母命名就不要用符號、U盤儘量格式化為exFAT等等,這些都是為適應文件系統而加深的印象,尤其是對於覆蓋率更廣的Windows而言如此,FAT32、NTFS,這兩個概念幾乎不會有人不知道,我們今天就來說說這其中的來龍去脈。
我們現在安裝Windows 10的話,系統裝好後看到的硬碟文件系統都是NTFS,但是在以前,譬如說Windows XP的時代,硬碟文件系統採用FAT32還是很常見的。如果你曾經奇怪過「32」這個數字是什麼意思、怎麼來的,那麼你肯定知道,所謂的「FAT32」並不是獨立存在的,而是屬於文件配置表(File Allocation Table)家族的一員,完整的成員包括FAT12、FAT16、FAT32,當然對於處在2018年的我們來說,目前語境當中的「FAT」基本上就是指「FAT32」。
什麼是FAT32?
早期的FAT文件系統是比爾·蓋茨聯手馬克·麥當勞(Marc McDonald)在1977年開發的,當年微軟還剛剛成立三年時間,還根本沒有MS-DOS、Windows這些存在,當時的主要工作是寫BASIC。而到1984年,當微軟發布MS-DOS 3.0的時候發布FAT16,簇集位址增加至16位元,即是FAT16,至少歷史書是這麼寫的,但是老炮會告訴你知道1987年,真正最終的FAT16才到來,但一個重要的情況是,FAT16的最大卷大小只有2GB,當然部分情況可以達到4GB,但是到發展迅速的90年代,這個數字是嚴重不夠看的,於是微軟在1996年8月,利用當時發布的Windwos 95 OEM Service Releases(OSR)2帶來FAT32,相比過去的FAT16,新的FAT32可以支持最小到4KB的默認簇,空間使用較為高效,支持最大為2TB的驅動器(當然要看作業系統),發展到FAT32,已經進入我們很多同齡人開始接觸電腦的時代,因此FAT32可能是很多讀者最先接觸到的文件系統。
FAT32有哪些特點與優劣?
FAT家族擁有很多共有的特點,而因為Windwos在90年代後期是我們記憶當中的重要部分,比如說FAT32文件系統當中的最大文件大小4GB(準確來說是4GB-1byte)、採用8.3標準命名、最高支持255字符文件命名、並且不支持「. " / \ [ ] : ; | = ,」這幾個符號。也不能在命名種採用空格,而且大家記憶深處的「碎片整理程序」就是FAT32文件系統的一個重要遺產,另外可能說起來大家都會想到的「1980年1月1日」這個不明所以但是非常熟悉的日期,其實也是FAT文件系統的日期支持起點。總的來說,FAT32對於過去的歲月來說是一種FAT16的合理優化版本的文件系統,在那個時代緊跟發展的潮流,對於作業系統也有很好的兼容性,但是因為明顯的單個文件不超過4GB、文件碎片化的缺點,在新的21世紀逐漸被NTFS所取代。
什麼是NTFS?
NTFS看上去好像很難猜出其中的意義,但是如果分拆成「NT」、「FS」相信大家就可以一眼看出端倪,沒錯,NTFS文件系統其實就是「New Technology File System」的意思。雖然大家一般的感覺就是NTFS文件系統更加先進,所以應該是一種到來的更晚,但其實NTFS最初版本到來的時間非常早,甚至要比FAT更早:它是在1993年的Windows NT 3.1當中被發布的,但是最早的1.0版本是無法向後兼容的,隨後的1.X版本都是90年代的產物,我們真正開始熟悉NTFS是要等到新世紀的NTFS 3.0、3.1版本、隨著Windwos 2000、Windows XP才慢慢熟知的。
NTFS有哪些特點與優劣?
NTFS文件系統的簇位元達到64。相較於FAT32,NTFS文件系統在很多方面都擁有優越性,比如說單個文件大小最大理論支持16EB(即1024PB),但實際限制是遠遠沒有這麼大,在Windows 7當中,NTFS的單文件限制是16TB,而在Windows 8往後的系統當中,NTFS的單個文件限制為256TB,而且還有一點很關鍵的就是NTFS是一種日誌文件系統(JFS),工作中會使用$LogFile記錄數據的變化,而FAT32顯然不是,這個屬性可以確保硬碟當中的數據結構在不穩定的環境中保持一致性,但是這需要不小的開銷,顯然這是更適合硬碟工作的文件系統。總的來說,NTFS文件系統擁有相比FAT32很優越的優點,除文件大小限制、新的日誌工作特性,還更加適合大容量的存儲設備,因為NTFS並不會隨著容量較大的卷而降低性能,但是FAT則有這個毛病。總之對於今天的硬碟來說,NTFS已經是主流,如果你將一塊硬碟安裝在Windows 10,那麼默認就是NTFS文件系統。
什麼是exFAT?
說完FAT32、NTFS這兩個大家最熟悉的文件系統,我們再來說說大家經常會說的exFAT,其實據我所知,大家知道exFAT的原因是因為要往行動裝置裡面拖拽文件,比如說高清電影的時候,會發現上文所說的4GB單個文件的大小限制。其實這裡的關鍵就是行動裝置,因為exFAT是微軟在2006年推出的,專為快閃記憶體存儲介質優化的文件系統,exFAT最早也是在Windows Embedded CE 6.0當中被加入的,可見其主要針對的設備,其實exFAT本身的名字也是「Extended File Allocation Table」,也就是「拓展式文件配置表」,當然你也可以選擇說FAT64,就是大家可能不知道你在說什麼。目前exFAT最適合在U盤、拓展存儲卡上見到的文件系統。
exFAT有哪些特點與優劣?
大家要注意的是,如果你使用FAT32,或者是NTFS,基本上是不太需要注意作業系統的支持,但是exFAT是在Windwos XP SP2 With KB955704、Windwos Vista SP1往後才能得到支持。從規格上來說,exFAT最大支持128 PB的卷容量,但實際最多是256TB,並且單個文件大小理論支持16EB,但實際上上限是128PB,所以exFAT、NTFS共同的特點就是突破單個文件4GB的限制,並且針對不同的作業系統,比如說Windows、Linux、macOS都有較好的跨平臺兼容性。不過要注意的是,切不可混淆NTFS、exFAT的地位,雖然這兩者都有很多優勢,但是他們並不處於互相競爭的關係,不存在誰取代誰的問題,總的來說,前者是針對桌面端的硬碟上存在的文件系統,而後者則是針對行動裝置、針對快閃記憶體介質而使用的文件系統,如果調轉過來的話是明顯不合適的。
總結:什麼樣的文件系統更適合你?
總的來說,現在你應該很少看到FAT32文件系統的存在,它對於其他作業系統的兼容程度並不理想,但推動它被取代的最重要一點就是單個文件4GB的限制,對於今天的使用場景來說已經嚴重滯後,在規格之外的特性方面FAT32也說不算先進,這方面NTFS文件系統是理想的替代者,它不僅將單個文件的大小限制拓展到遠遠超過目前用戶消費水平的程度,還擁有諸如日誌記錄等特性,它是目前更加適合桌面級磁碟式硬碟的文件系統,而最後的exFAT雖然屬於FAT家族,但是它是專門為行動裝置、快閃記憶體介質而優化的文件格式,它不僅和NTFS一樣突破單文件4GB的限制,同時也是目前最適合U盤、SD卡等存儲設備設用的文件格式。