2010/08/11

exFAT 的磁簇大小

在一般硬碟上,如果你直接格式化它,是不會出現 exFAT 的選項可以選,你必須用 Disk Management 先把硬碟的分割區給刪除掉,然後用 New Simple Volume 把分割區切出來時,格式化的選項才有 exFAT 可選。


另外一個方式是用 CMD 去下 Format 命令。


 


不過問題在於,這時候的磁簇大小的範圍是 512 ~ 64K,沒有 32M 的選項可選 (我用來測試的硬碟是 500G),只有用 Format 命令的方式可以強迫指定磁簇大小為 32M。


後來我拿手邊兩個容量分別為 4G 和 16G 的隨身碟來試,兩者的磁簇大小都有 32M 的選項可選,不過最小的磁簇大小的選項有點差異,4G 的那個最低可以選到 512,16G 的那個則只到 1024。


底下是我剛剛把一些檔案複製到測試的 500G 的硬碟上的資料。























 SizeSize on DiskFiles
來源:NTFS/64K269G269G3582
目的:exFAT/32M269G349G


值得注意的是,當複製小檔時,會有停頓的現象。


雖然我認為 exFAT 這樣的設計很雞肋,不過我想知道為什麼會有這樣的差異。有誰能提供進一步的資料嗎?


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 甚至超過,這樣比較有意義。


2010/08/02

使用 SSD 該注意的事情

根據水球的鼓吹,我買了 SSD 回來當系統碟。


過去很少注意 Windows 7 系統的調教,不過因為據說 SSD 寫入次數比硬碟少非常多,所以上網找了一些文章來實驗。


我用來修改系統設定的是 Ultimate Windows Tweaker,簡稱 UWT。


底下是一些心得:



  1. 要裝 RAMDisk 把 TEMP、瀏覽器的 Cache、Search 的索引資料等等指到 RAMDisk 上。
    RAMDisk 我是用 DataRAM RAMDisk,固定磁碟機代號的方法請看這篇
    簡單的說就是先改變產生出來的 RAMDisk 磁碟機代號,然後執行 Save Disk Image Now,再把 Load Disk Image at Startup 勾起來,然後按 CTRL+S 把設定存起來即可。(Save Disk Image at Shutdown 不用勾)

  2. 要把 Windows Event Log 和 Superfetch 服務設定為停止,並把 Windows\Prefetch 裡面的所有檔案與目錄刪除。

  3. 把 SSD 系統碟的 Paging file size 設成最小值 16M(不可設成 No paging file 或是 0,這一步必須先做完第二步,否則會無法把 Paging file size 設成 16M),並用 UWT 設定 Disable pagefile。

  4. 停止磁碟重組的自動排程。

  5. 其他的調整可以看這篇