2013年3月19日 星期二

隨身碟的檔案系統與速度比較



寫在前面

這篇內容, 提到不少格式化的動作 ! 有必要提醒一下, 磁碟或隨身碟格式化後, 資料就不見了(或者說是很難救回來), 所以操作前務必小心, 資料一定要先備份, 也別手滑了搞錯磁碟機 ! 


因為之前的那場惡夢, 所以買了Sandisk SDCZ80 64G隨身碟, 拆封後做了一些傳輸實驗, 速度還不錯, 讀取有到130MB/s 以上, 寫入也有 90MB/s !

但想說網路上說3C的商品瑕疵不少, 我的手氣也挺不好的, 還是 Format一下吧 , 做個驗證. 但就因此又出狀況了! 手氣背呀 !

FAT32有單檔4G的問題, 所以NTFS是比較直覺的選擇,

NTFS格式化後, 寫入速度竟然掉到40MB/s 以下 ! 不會吧, 這是USB 3.0的隨身碟耶 ! 剛到手的速度很好呀, 怎麼格式化後, 速度全沒了, 反而變慢很多!!

仔細參考網路上的說明, 招式不少, 但看來怪怪的, 效果不一... 還是自己實驗比較準..

測速系統平台
Linux ( Ubuntu 12.04, Kernel 3.8.2-030802 )
配備 USB 3.0介面卡

隨身碟
Sandisk SDCZ80 64G

測試檔案
ubuntu-9.10-dvd-amd64.iso 檔案大小 3.89GB ( 4174614528Bytes )


格式化用系統平台
Windows XP


實驗開始


當該隨身碟格式化為NTFS (配置單位大小為預設值 4K)

$ cat ubuntu-9.10-dvd-amd64.iso | pv -abt -B 0 > /media/2CBA24E6BA24ADF0/test1.data
寫入 3.89GB [32.3MB/s]


$ cat /media/2CBA24E6BA24ADF0/test1.data | pv -abt > ./testa.data
讀取 3.89GB [ 132MB/s]





當該隨身碟格式化為FAT32 (配置單位大小為預設值, 16K ?)
$ cat ubuntu-9.10-dvd-amd64.iso | pv -ab -B 0 > /media/26BB-E26D/test3.data
寫入 3.89GB [ 101MB/s]

$ cat /media/26BB-E26D/test2.data | pv -abt > ./testa.data
讀取 3.89GB [ 123MB/s]



當該隨身碟格式化為exFAT  (配置單位大小為預設值, 128K?  exFAT聽說是64GB Flash出廠的預設格式, Sandisk官網說的)

$ cat ubuntu-9.10-dvd-amd64.iso | pv -abt -B 0 > /media/2AC7-BD36/testa.data
寫入 3.89GB 0:00:39 [ 101MB/s]

$ cat /media/2AC7-BD36/testa.data | pv -abt > ./testa.data
讀取 3.89GB 0:00:31 [ 128MB/s]




嘿嘿, 看來找到玄機了 ! 相同環境下, 不同的磁碟格式, 效能差異很大 !!

不過這其中看到幾個變數調整點

  • 格式化的工具
    • 當在檔案總管時中,針對磁碟機按右鍵選擇格式化, 
      • 這邊執行格式化程式, 選項很少, 尤其是要調整配置單位大小, 通常不能調
      • 安裝完exFAT程式後, 格式化64GB隨身碟時, 格式將被鎖住, 只能選exFAT, 要選用其他格式, 需用其他方式.
    • 電腦管理中的磁碟管理, 這是另一個格式化程式的執行點, 要調整配置單位大小, 可從這邊進行
    • 另一個比較完整的掌控方法就是使用Dos Command
      • 下面指令假設 隨身碟的磁碟代號為 R ( 千萬別照抄 !!! )
      • Format R: /FS:FAT32 /A:8192 ( 將 R: 格式化為 FAT32, 配置單位大小為8K )
      • Format R: /FS:NTFS /A:64K ( 將 R: 格式化為 NTFS, 配置單位大小為64K )
      • Format R: /FS:exFAT /A:64K ( 將 R: 格式化為 exFAT, 配置單位大小為64K ) 
  • 格式化中的選項"配置單位大小"

當NTFS格式下, 不同的配置單位大小, 對效能是否有差異 ( 量測使用的Linux指令同上, 就不再贅述 )

當該隨身碟格式化為 NTFS 配置單位大小為64K

寫入 15.2MB/s  (不是一個慘字能形容)
讀取 124MB/s


當該隨身碟格式化為 NTFS 配置單位大小為8K

寫入 30.8MB/s  
讀取 124MB/s



當該隨身碟格式化為 NTFS 配置單位大小為2K

寫入 31.6MB/s  
讀取 126MB/s




當該隨身碟格式化為 NTFS 配置單位大小為512

寫入 31MB/s  
讀取 123MB/s



看來沒有提升, 影響性不大 ....





 換個格式FAT32, 試試不同的配置單位大小, 對效能是否有差異

當該隨身碟格式化為 FAT32 配置單位大小為64K

寫入 229MB/s
讀取 120MB/s



當該隨身碟格式化為 FAT32 配置單位大小為8K

寫入 235MB/s  
讀取 124MB/s



當該隨身碟格式化為 FAT32 配置單位大小為2K

寫入 228MB/s  
讀取 116MB/s




當該隨身碟格式化為 FAT32 配置單位大小為512

寫入 166MB/s  
讀取 121MB/s






 換個格式exFAT, 試試不同的配置單位大小, 對效能是否有差異

當該隨身碟格式化為 exFAT 配置單位大小為128K

寫入 124MB/s
讀取 118MB/s

當該隨身碟格式化為 exFAT 配置單位大小為64K

寫入 137MB/s
讀取 128MB/s


當該隨身碟格式化為 exFAT 配置單位大小為32K

寫入 91MB/s  
讀取 121MB/s


實驗結束


終於可以不用再Format那個可憐的隨身碟 !!





後續測試


CrystalDiskMark 3.0.2


測試條件
Test : 1000 MB [G: 0.0% (0.0/59.6 GB)] (x1)



當該隨身碟格式化為 FAT32 配置單位大小為64K



           Sequential Read :   142.897 MB/s
          Sequential Write :   125.653 MB/s
         Random Read 512KB :   117.681 MB/s
        Random Write 512KB :    20.001 MB/s




當該隨身碟格式化為 FAT32 配置單位大小為32K



           Sequential Read :   142.586 MB/s
          Sequential Write :   115.089 MB/s
         Random Read 512KB :   117.410 MB/s
        Random Write 512KB :    20.011 MB/s




當該隨身碟格式化為 FAT32 配置單位大小為16K




           Sequential Read :   142.838 MB/s
          Sequential Write :   124.905 MB/s
         Random Read 512KB :   117.410 MB/s
        Random Write 512KB :    20.930 MB/s





當該隨身碟格式化為 FAT32 配置單位大小為8K


           Sequential Read :   139.587 MB/s
          Sequential Write :   116.690 MB/s
         Random Read 512KB :   115.401 MB/s
        Random Write 512KB :    21.173 MB/s







當該隨身碟格式化為 FAT32 配置單位大小為4K



           Sequential Read :   140.390 MB/s
          Sequential Write :   125.233 MB/s
         Random Read 512KB :   115.989 MB/s
        Random Write 512KB :    20.146 MB/s







綜合結論


綜合以上數據, 與我個人使用的需求, 我會選擇 FAT32, 16K !

( VM檔案大, 重點在追求速度! 空間浪費問題是比較其次的, 放超過4G的檔案機率不大...)



後記

exFAT是比較新的檔案格式, Windows 7版本以上才有預設支援, 其他系統得升級後才能支援, 會對可攜性造成一定的影響, 請多留意 !  若使用的是XP系統須安裝 KB955704 的升級軟體, 才能支援 !

各格式的預設單位大小Microsoft有個參考表

沒有留言: