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的隨身碟。 |
exFAT的附加功能
exFAT的另一個特點是支援TFAT(Transaction-Safe Fat),TFAT是為了彌補原本FAT系統缺陷而生。
就拿一般FAT格式的隨身碟來說,如果在拷貝或搬移、建立檔案或目錄時,突然將隨身碟拔除或是電力流失等等任何因素都會造成資料的中斷,也就是無法確保資料是否完整的寫入到了磁碟中。
可以做一個實驗:將一個體積較大的檔案拷貝到隨身碟中,在複製到一半時將隨身碟拔除,放到另外一台電腦上看,能看見檔案的大小、資訊與原始檔一模一樣,並沒有減少,實際上此檔案的內容卻是不完整的,但在Explorer裡看起來就像已經複製成功了一樣。
重點是:雖然沒有人會真的無聊到去拔除正在存取中的隨身碟,但不管是NTFS或FAT,都沒有一個確保檔案存取完整性的機制,可以看做是在檔案真正存取完畢前就先將資訊寫入檔案配置表或MFT。
exFAT、NTFS、FAT32的存取效能差異 (單位:MB/s) | ||||||
讀取NTFS_4K | 寫入NTFS_4K | 讀取FAT32_4K | 寫入FAT32_4K | 讀取exFAT_32K | 寫入exFAT_32K | |
exFAT_32K | 116.6719 | 40.8 | 114.3248 | 39.26 | 114.9264 | 39.112 |
exFAT_32M | 119.8438 | 41.99414 | 118.92 | 41.836 | 118.63 | 42.82 |
exFAT_512K | 117.5313 | 41.88477 | 117.13 | 41.274 | 116.23 | 41.63 |
exFAT_4K | 126.4531 | 41.91602 | 124.52 | 40.998 | 125.42 | 41.1 |
exFAT_16K | 117.8906 | 41.9 | 116.923 | 41.219 | 117.792 | 42.25 |
FAT32_4K | 141.9453 | 40.8 | 129.65 | 39.23 | 131.427 | 39.5 |
NTFS_4K | 129.6016 | 42.19 | 129.3 | 42.361 | 129.3012 | 42.92 |
NTFS_64K | 127.4531 | 40.26 | 126.37 | 40.293 | 127.9804 | 40.96 |
FAT_16K | 120.0391 | 41.9 | 120.02 | 41.57 | 119.863 | 41.77 |
測試環境皆為Vista SP1 |
SP1原生不支援用GUI將Fixed Media格式化成exFAT格式,需自行到命令列下指令來處理。 |
TFAT的優點
TFAT的運作方式剛好相反,它 將FAT原始的分層概念(Second Copy):FAT0與FAT1做了有效運用。當檔案系統有變動時先在FAT1上進行存取操作,迨執行完畢後再把FAT1的資料複製到FAT0,如果在 FAT1進行存取時被中斷了,那麼原本的FAT0並不會有變動,拿上面舉的例子來看就是如果檔案沒有複製完成,隨身碟中就看不到該檔案的資訊,雖然實體資 料確實有被寫入磁碟區,但該區塊仍然是被標示為「空」的,對之後的檔案存取並不產生影響,也沒有消耗磁碟空間。這對隨身碟的壽命及檔案系統的健全性有一定 幫助,如果上述情況發生在FAT的話,不但容易流失資料,而且整個配置表會破碎不完整,有時會出現明明刪除了檔案,磁碟空間卻沒有挪出來;或是檔案名稱還 在,卻無實體內容的情況,這時就得靠chkdsk或重新格式化來解決問題。
說了那麼多,其實有點枉然,因為Windows桌面作業系統並不支援TFAT,一切還是以WinCE為主,而XP或Vista會把TFAT 當作FAT來使用,而且沒有辦法刪除TFAT建立的目錄,總之現在TFAT與桌機系統無關,硬是要結合在一起不會有好結果就是了。TFAT是依存在 exFAT之下的檔案系統,並沒有獨立出來。
總結:現在真的需要exFAT嗎?
延續上一段的結論,Vista SP1支援的exFAT不但沒有存取控制的機制,也沒有把TFAT的應用帶到一般桌面作業系統上,毋須逃避的Vista就是要裝在桌機或筆電,沒有人會去 裝在PDA或手機上面,玩家最常接觸的媒介就是記憶卡、硬碟外接盒或隨身碟,如果exFAT帶來的是不怎麼明顯的效能節省與速度提昇,現階段又缺乏相容 性,尤其是無法支援自己的ReadyBoost,要成為一個理想的跨平台檔案系統?理由似乎還不夠充份。
|
讓XP也能讀exFAT
雖然exFAT對大檔案沒有明顯效能增益,但因為相容性而放棄使用還蠻可惜的,至少它可以支援4GB以上的檔案。有個已經不是秘密的公開撇 步可以讓XP認識exFAT,讀取exFAT格式的磁碟,不過只限於讀取,仍然無法直接在XP下格式化或轉換(Convert.exe)磁碟成exFAT 格式。作法很簡單,將exfat.sys及uexfat.dll兩個檔案從Vista SP1的系統目錄下抽出,分別放在XP目錄的system32及system32\driver資料夾下,再把以下登錄檔內容匯入即可。
Windows Registry Editor Version 5.00 |
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\exfat] |
"Description"="exFAT File System Driver" |
"DisplayName"="exFAT File System Driver" |
"ErrorControl"=dword:00000001 |
"Group"="Boot File System" |
"Start"=dword:00000002 |
"Type"=dword:00000002 |
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\System\exfat] |
"EventMessageFile"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\ |
00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\ |
5c,00,49,00,6f,00,4c,00,6f,00,67,00,4d,00,73,00,67,00,2e,00,64,00,6c,00,6c,\ |
00,00,00 |
"TypesSupported"=dword:00000007 |
何謂「日誌式」檔案系統? 日誌式(Journaling File System)主要是用來記錄檔案的詳細變動,不管是複製、搬移、刪除等動作,如果在這些動作進行時遭遇不正常的中斷,在中斷狀況解除後仍能依照記錄來進 行復原或繼續的操作,也不必重新掃描一次來修復亂掉的檔案系統結構,這是大部份日誌式檔案系統的重點。如果電腦中的FAT32磁碟遭受不正當的關機程序, 重開機時會對FAT磁區做一次掃描檢查,如果磁碟區容量愈大回復的動作就會愈久。NTFS卻不會,因為日誌式檔案系統已經有做紀錄,只要按圖索驥去重整 MFT就好,不需要重新整個掃描一次,不過NTFS並沒有回復資料狀態(RollBack)的功能。 |
轉自:PChomeAdvance電腦王46期
0 意見: