2010/08/09

如何在 Windows 下選擇合適的檔案系統

先講結論:


如果你的儲存媒體是電子式的 (例如:RAMDISK、SSD、Flash 隨身碟等),請用 exFAT。


如果你的儲存媒體是機械式磁性紀錄的 (例如:傳統硬碟),請用 NTFS。


不過有兩個例外:SSD 當系統碟使用、Flash 隨身碟當安裝碟使用時,則必須使用 NTFS。


如果你懶的管這兩個檔案系統的差異,那就都格式化成 NTFS,磁簇大小 64K 來使用就行了。


 


這幾天我在研究這兩種檔案系統的特點,試圖找出增加其搜尋、存取效能的關鍵以及適用的方式,底下是純理論的分析。


對於搜尋方面,在不靠 Windows Search Index 的前提下,由於NTFS 的目錄內容使用 B+ 樹的關係,所以在相同的儲存媒體中,效能會比 exFAT 來的好。


不過由於電子式比機械式在搜尋速度跟存取速度都有強大的壓倒性優勢,因此對於這兩個檔案系統在電子式的儲存媒體中的搜尋效能來說,並沒有很明顯的差異。


 


對於存取方面,磁簇大小則是關鍵,底下是這兩種檔案系統的磁簇大小的比較表,單位是 Byte。
























 檔案系統最小最大預設
NTFS51264K4K
exFAT51232M32K


一般來說,磁簇越大,存取效能也越好,但相對的對於小檔空間損耗也比較大。


另外,檔案的 Fragmentation 對存取效能也是一個問題,由於 exFAT 一樣使用 linked list 來分配檔案空間,所以這個問題也許會變得很糟。


不過如同上面提及電子式的儲存媒體的特性,這個問題在電子式的儲存媒體中基本上可以無視。


 


雖然 exFAT 有許多新的特性,例如:TFAT、free space bitmap、ACL 等等,不過我在 Windows 7 裡面沒有確認到這些特性有被實做出來。


另外 exFAT 一樣是兩個 FAT 是連續存放的,如果該區域損毀則整個分割區的資料都無法重建,因此我很難就可靠度、搜尋的議題上,在硬碟中使用 exFAT。


 


以目前來說,硬碟的每 GB 價格仍然遠低於電子式的儲存媒體,因此在適合 exFAT 的環境中,很難出現真正使用大量的大型檔案的應用。


如果要給 MS 建議的話,我會說請把未來新版的 NTFS 的最大磁簇大小放大成跟 exFAT 甚至超過,這樣比較有意義。