徹底研究exFAT (上)
發佈: 2008-6-04 16:46 | 來源: udn | 查看: 42次
【文/洪宛靖】
適用於隨身儲存裝置的檔案系統釋疑與效能實測
嗯……想不出什麼引言來,不如我們就直接開始吧!在前幾期的雜誌裡有提到,Vista SP1的某些新功能不怎麼吸引人,尤其exFAT好像特別冷門,根本沒什麼人會興奮,但隨著大容量平價隨身碟的逐漸普及,勢必有需要了解這個新一代的檔案系統,究竟只是SP1的伴遊新噱頭,還是能為隨身儲存裝置帶來更廣泛的應用?
exFAT與先前檔案系統的區隔
exFAT(Extended File Allocation Table)是適用於隨身碟或隨身型攜帶裝置(如PDA)的新格式,最早出現在2006年的WinCE 6.0,為了增進與桌上型作業系統的相容性還有便於隨身裝置的同步需求,到了Vista SP1正式被納入桌機作業系統所支援的檔案系統,但跟一般玩家息息相關的,還是在於隨身碟上的應用。以往在隨身碟上,FAT32/FAT是比較常見的格式。然而FAT32在目前大體積的檔案應用下逐漸產生問題,它的單檔容量最多只有4GB,在某些用途上還要分割檔案才放得進隨身碟裡,而且XP的抽取式媒體讀寫快取是限定NTFS格式才支援,在拷貝大量且零碎的小檔案時,往往要耗上漫長的等待時間。那為什麼不用NTFS來當隨身碟的主流格式呢?
一、NTFS相容性不如FAT32
FAT32/FAT已經被大多數的作業系統所廣泛支援,不論是OS X、Linux或是隨身PMP裝置,雖然部份非Winodws系統加上外掛也能做NTFS的讀寫,但是畢竟沒有原生支援來得方便。
二、存取效能的差異
NTFS是採用「日誌式」的檔案系統,因為要記錄磁碟的詳細讀寫動作,對隨身碟這種快閃記憶體會造成較大負擔,比如同樣存取一個檔案或目錄,在NTFS磁區上的讀寫次數就會比FAT32來得多,「相較」之下理論上使用NTFS格式存放檔案的隨身碟比較容易損壞,而且在400MB以下的分割區也比較浪費空間。
三、XP預設的格式化選項不是NTFS
一般來說除非手動修改原則,不然XP預設不能把隨身碟格式化成NTFS系統,使用者找不到此選項,自然很順理成章的使用FAT32來格式化。在XP下對抽取式媒體有兩種存取方式:「快速移除最佳化(預設值)」與「效能最佳化」,前者適用於FAT32,後者即是因應NTFS寫入快取的設定,我們常常聽說不要直接拔除隨身碟,其中一個原因就是考量到後者需要把快取中的資料確實寫入隨身碟,因此使用快速移除最佳化時,就不能直接格式化成NTFS。
exFAT有什麼用?
如果不是很在意隨身碟的存取效能,那麼現在市面上4G、8G的MLC隨身碟可以說一點都不貴,這種容量對FAT32支援的單一分割最大容量(32GB)並不成問題,不過超過4GB的單檔就有點麻煩。
雖然說很少有單一檔案超過4GB的機會,但不代表完全沒有:如BD影片的Remux檔、BD/HD影片的原始檔、無失真音樂愛好者的未壓縮音訊檔、DVD光碟的ISO檔、從DV上擷取下來的AVI檔等等,想要完整備份就得選擇NTFS或exFAT做為儲存格式。
大部份讀者可能會問:那用NTFS就好了,為什麼要選擇一個相容性更差的檔案系統呢?exFAT原本設計的目的是在FAT32與NTFS之間取得一個折衷,有FAT32的輕便、不需要耗損太多的效能及記憶體來處理檔案運作,又有類似NTFS的CAL存取控制機制(很可惜在SP1下找不到exFAT對於CAL的支援),以及類似HPFS系統可快速整理可用叢集空間的Free Space Bitmap,來將檔案破碎的情況盡量減少。
然而要真正比較出使用FAT32、NTFS及exFAT時的檔案破碎情況很難做到客觀的評比,剩下所能測試的就是存取效能了,尤其是exFAT最大的叢集大小達到了驚人的32MB,連NTFS都只有64KB,如果隨身碟真的拿來存放BD Remux動輒上GB的大檔案,那麼將exFAT的叢集設大時,將會有多少效能增進呢?
大叢集有用嗎?
叢集(cluster)在檔案系統上是指比檔案還小的邏輯分割單位,比如說一個檔案的大小是64KB,叢集大小設為4KB的話就是用了16個叢集。叢集的大小與實體磁碟區的大小成正比,比如說FAT32在4~8GB及8~16GB的預設叢集大小分別為4KB與8KB,基本上叢集愈小愈能節省磁碟空間,例如一個檔案為12KB,因為叢集是以自然整數的方式存在,如果這時的叢集大小是8K的話就必須動用到兩個叢集(16KB)的空間來存放檔案,當中的4KB就算浪費掉了。
不過叢集設太小理論上也會造成存取效能遲緩,一個64KB的檔案只需要存取4個16KB的叢集,換成1K的叢集就變成了64個。從FAT16、FAT32、到NTFS,在一定的磁碟空間範圍內預設的叢集愈來愈小,但使用者能自訂的最小底限都是512Bytes,如果用安裝光碟來格式化硬碟,一定也是使用512bytes的預設值,因為512bytes是剛好對齊FAT結構的界限;換成Windows桌面的格式化,則會由系統自行挑選適當的預設值來決定。
上述的檔案系統最大叢集都是到64KB,對存取單一大檔案時算不算是理想的設置呢?而且小叢集在進行磁碟重組時會花上比較久的時間。
然而就這次的測試結果來看,叢集的大小對於檔案的存取並沒有多大影響,而且真的把叢集開到32MB是瘋狂的行為,放一個1KB的檔案,32MB的空間就被吃掉了,尤其是1GB的隨身碟格式化完成,光配置表就用掉了96MB的容量。
那麼究竟多大的分割會需要用到32MB的叢集呢?SP1需在命令列模式才能把實體硬碟格式化成exFAT,筆者將320GB的硬碟以exFAT格式化,所得的預設叢集是128KB,真正需要用到32MB叢集的「大」硬碟要問世應該還早。何況微軟目前就沒有把它用在一般固定式媒體(Fixed Media)的打算,叢集大小對於抽取式媒體來說暫無意義。
exFAT與FAT32、NTFS的比較
FAT32
NTFS
exFAT
適用作業系統
Win95 OSR2之後皆可
Windows 2000之後的NTFS5為較成熟版本
Vista SP1、Windows CE 6.0
最小叢集
512bytes
512bytes
512bytes
最大叢集
64KB
64KB
32,768KB
最大單檔大小
4GB-2bytes
受最大分割容量影響
16EB(理論值)
最大分割容量
32GB、2TB
2TB
16EB(理論值)
檔案數限制
4194304
無
單一目錄至少大於1000個
支援CAL
無
有
SP1並無採用
最少叢集數
65,527
(註a)
至少大於127
(註b)
至少大於13
(註c)
最大叢集數
4,177,918
無
無
註a:FAT32系統的叢集數不可少於65,527個,也就是說磁碟容量小於32MB左右(最小叢集(512bytes) x 65527)的話,就不能用FAT32檔案系統。筆者手邊有一顆31.2MB的隨身碟就無法格式化成FAT32。而FAT(16)系統所能支援的叢集數最多為65,525,單一叢集容量最大為64KB,所以最大分割區容量大約是4GB(65,525x64)。
註b:在Windows下無法做出小於8MB的NTFS分割區,以8MB的容量用64K叢集來格式化得到的叢集數是127個,但此數字不具意義,因為這種分割容量不太可能會出現,而且採用NTFS格式太浪費空間。(NTFS適用400MB以上空間)
註c:以2048KB(不含)以上的叢集大小無法格式化31.2MB的隨身碟。
【PChomeAdvance電腦王46期】
徹底研究exFAT (下)