本次測試使用 ADATA SX8200 1TB硬碟(絕版老骨董),比較相同SSD在Win10系統原生NTFS格式和離線掛載到TrueNAS的ZFS格式的速度差異。還有TrueNAS資料集壓縮和加密對使用速度上的差異。

一、如何測試

說到硬碟測速,市面上有非常多種軟體可以快速且方便的檢測,但是TrueNAS是網路硬碟,我是沒有找到可以測網路硬碟的軟體,所以只好自己寫一個……(還好平時開車經驗老道)

以下簡單說明

        private void Start_Button_Click(object sender, EventArgs e)
        {
            string sourceFolder = SourceFolder_Entry.Text;//來源資料夾
            string targetFolder = TargetFolder_Entry.Text;//目的資料夾
            double readtime = 0;//花費時間-讀取
            double writetime = 0;//花費時間-寫入
            int times = Convert.ToInt32(times_Entry.Text);//重複次數
            for (int i = 0; i < times; i++)
            {
                readtime += Move(sourceFolder, targetFolder);
                writetime += Move(targetFolder, sourceFolder);
            }
            readtime_Entry.Text = (readtime / times).ToString();//顯示讀取結果
            writetime_Entry.Text = (writetime / times).ToString();//顯示寫入結果
        }
        private double Move(string sourceFolder, string targetFolder)
        {
            DirectoryInfo source = new DirectoryInfo(sourceFolder);
            FileInfo[] files = source.GetFiles();
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            foreach (var item in files)
            {
                try
                {
                    item.MoveTo(Path.Combine(targetFolder, item.Name));
                }
                catch { }
            }
            stopwatch.Stop();
            Thread.Sleep(3000);
            return stopwatch.ElapsedMilliseconds;
        }
  1. 先把用來測速的檔案放在TrueNAS網路硬碟,路徑輸入到「來源資料夾」
  2. 「目的資料夾」選擇比要測的硬碟更高速度的硬碟裡的資料夾
  3. 啟動後軟體會把「來源資料夾」裡的東西丟到「目的資料夾」,然後再丟回來,只要測花費時間就知道速度了

ADATA SX8200(K槽)的讀寫速度最高不超過3000MB/s,所以我只要找一個比它更快的硬碟……找不到,算了,就用記憶體模擬硬碟吧(A槽)。

用來測速的檔案分為四組

  • 第一組 12552張圖片檔 大小5G
  • 第二組 118個影片檔 大小5G
  • 第三組 286個音樂檔 大小5G
  • 第四組 前面的檔案壓縮成一個7z檔 大小13.9G

二、實測

以下數據都是重複3後平均的結果

1.Win10 NTFS

MB/s第一組第二組第三組第四組
675233319872482
677260730221478

讀寫速度高於預期,手動丟檔案也不會這麼快。

2.TrueNAS 無壓縮

把同一顆SSD加入TrueNAS後,新增儲存集區

把預設的LZ4壓縮改為OFF

MB/s第一組第二組第三組第四組
97191314331859
7610551023828

相較Win10,屬於正常速度。

3.TrueNAS LZ4壓縮(預設)

MB/s第一組第二組第三組第四組
108243316931794
768051023872

和無壓縮相比差別不大,甚至部分速度高於無壓縮。

4.TrueNAS GZIP壓縮

重複前面操作,把壓縮等級改成GZIP。

MB/s第一組第二組第三組第四組
92128213601767
75298249266

寫入速度明顯下降,不推薦用於頻繁使用的資料集。(目前不討論壓縮率)

5.TrueNAS 資料集加密

重複前面操作,關閉壓縮,勾選「加密」選項。

MB/s第一組第二組第三組第四組
8912819451731
771059980890

在寫入的重複測試時,所需時間會漸增,可能是前面寫入的檔案還沒加密好,所以拖累到後面的檔案寫入速度。

5.TrueNAS 儲存集區加密

刪除前面的儲存集區,建立新儲存集區,勾選「加密」選項。

建立資料集,關閉壓縮。

MB/s第一組第二組第三組第四組
93126212161781
759891039827

和前面的資料集加密速度差不多,可能是因為加密法相同(AES-256-GCM),所以速度也相同。

三、結論

1.系統差異

Win10和TrueNAS一定會有速度上的差異,一個是本地硬碟,一個是網路硬碟,資料會經過的電子元件和邏輯判斷數愈多,速度就愈慢。

●Win10

原資料→判斷資料是否可以讀取→寫入記憶體→判斷硬碟是否有足夠空間→把記憶體裡的資料寫入硬碟裡

●TrueNAS

原資料(Win10)→判斷資料是否可以讀取→寫入記憶體(Win10)→藉由SMB通道判斷是否有權限使用TrueNAS→把記憶體(Win10)的資料透過網卡寫入記憶體(TrueNAS)裡→判斷硬碟(TrueNAS)是否有足夠空間→把記憶體(TrueNAS)裡的資料寫入硬碟裡

如果有使用TrueNAS壓縮或加密,資料還會經過CPU(TrueNAS)運算後寫入硬碟。

2.壓縮和加密

就結論來講,直接使用預設LZ4壓縮就好,效率不影響還可以省空間,但是要考慮到CPU和記憶體速度,本測試使用Hyper-V的CPU虛擬化,intel i9-13900K其中的2個核心和16G 4000Hz記憶體,不同平台的表現可能會有所差異。

是否加密全憑使用情況,可以只加密資料集而非儲存集區,用不同的資料集區分檔案是否加密。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *