TS-433提升效能

嗨,

我正在嘗試在我的 NAS(TS-433)上獲得高順序資料吞吐量,用於影片剪輯和娛樂。我所有操作都是用 Windows 檔案複製。產品頁面顯示,使用 4 顆 SSD、RAID 5 配置時,讀取速度可達 280 MB/s,寫入速度可達 202 MB/s。

這算是腦力激盪,歡迎大家回饋!
如果可以的話,請大家分享一下自己的效能表現和磁碟配置?

我是在真正研究之前就買了 NAS/硬碟。我不想丟掉或賣掉現有設備,也許加點東西提升效能或微調設定,至少要搞懂現狀。這是我的目標。

我的設定

TS-433 Qnap v5.2.3.3006(2025 年 1 月 8 日)
2x Seagate 4TB IronWolf,RAID 1(鏡像)
2.5 Gbit 網路,客戶端與 NAS 都支援
客戶端是高階機型,配備 NVMe 儲存

剛買 NAS 的前幾天,寫入資料感覺比較快……但現在已經存了約 2TB 資料,感覺變慢了(這也合理)。

目前測試結果

從 NAS 複製檔案,平均 155 MB/s,偶爾飆到 175 MB/s。
複製檔案到 NAS,平均 80 MB/s,沒有飆高(起初 1 秒較快)。

我想了解為什麼會有這種速度,瓶頸在哪裡。

磁碟效能
Qnap 軟體顯示的磁碟吞吐量:
afbeelding

透過 CLI 用一些舊指令測試:

$ hdparm -t /dev/sda -t /dev/sdb -t /dev/md1
/dev/sda:
緩衝磁碟讀取:608 MB,3.01 秒 = 202.32 MB/sec
/dev/sdb:
緩衝磁碟讀取:592 MB,3.01 秒 = 196.79 MB/sec
/dev/md1:
緩衝磁碟讀取:802 MB,3.02 秒 = 265.61 MB/sec

$ echo 3 > /proc/sys/vm/drop_caches && dd if=/dev/sda of=/dev/null bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (3.9GB) copied, 20.796743 seconds, 192.3MB/s

$ echo 3 > /proc/sys/vm/drop_caches && dd if=/dev/sdb of=/dev/null bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (3.9GB) copied, 21.137790 seconds, 189.2MB/s

$ echo 3 > /proc/sys/vm/drop_caches && dd if=/dev/md1 of=/dev/null bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (3.9GB) copied, 18.758039 seconds, 213.2MB/s

硬碟是 5400 RPM,原本預期值會更低。
但這個網站 UserBenchmark: Seagate IronWolf 4TB (2016) ST4000VN008
顯示硬碟表現還不錯。

但 RAID 裝置(md1)比預期慢。為什麼不是 350 MB/s……

執行 “dd” 時我用 iostats 檢查磁碟:

                               extended device statistics
 device mgr/s mgw/s    r/s    w/s    kr/s    kw/s   size queue   wait svc_t  %b
 sda        1     1  224.9    4.0 113348.4     7.0  495.2   5.6   23.3   4.2  97
 sdb        1     1  220.9    4.0 111802.8     7.0  497.1   5.1   21.8   4.1  92
 md1        0     0  445.8    3.0 224636.0     6.0  500.5  10.1   22.6   2.2 100
                              extended device statistics
 device mgr/s mgw/s    r/s    w/s    kr/s    kw/s   size queue   wait svc_t  %b
 sda        0     0  241.4    0.5 121807.5     0.0  503.6   4.2   17.6   3.7  90
 sdb        0     0  240.4    0.5 121807.5     0.0  505.6   4.5   18.6   3.8  92
 md1        0     0  477.3    0.0 241061.3     0.0  505.0   8.8   18.5   2.1 100
                              extended device statistics
 device mgr/s mgw/s    r/s    w/s    kr/s    kw/s   size queue   wait svc_t  %b
 sda        0   529  224.5    9.0 113152.0  2129.8  493.7   5.2   21.4   3.9  91
 sdb        1   529  222.5    9.5 111362.0  2139.8  489.2   5.6   23.1   4.2  97
 md1        0     0  449.0    0.0 225280.0     0.0  501.7   9.8   21.8   2.2 100

我看到鏡像是平均分配到兩顆硬碟。

網路吞吐量
我安裝了 iperf。參考 https://www.qnap.com/en/how-to/faq/article/how-do-i-install-iperf3-in-qts-and-quts-hero

C:\iperf>iperf3.exe -c qnap
Connecting to host qnap, port 5201
[  5] local 192.168.178.174 port 59051 connected to 192.168.178.190 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.01   sec   282 MBytes  2.34 Gbits/sec
[  5]   1.01-2.01   sec   282 MBytes  2.37 Gbits/sec
[  5]   2.01-3.01   sec   284 MBytes  2.37 Gbits/sec
[  5]   3.01-4.01   sec   282 MBytes  2.37 Gbits/sec
[  5]   4.01-5.01   sec   282 MBytes  2.36 Gbits/sec
[  5]   5.01-6.01   sec   282 MBytes  2.37 Gbits/sec
[  5]   6.01-7.01   sec   279 MBytes  2.34 Gbits/sec
[  5]   7.01-8.01   sec   283 MBytes  2.37 Gbits/sec
[  5]   8.01-9.01   sec   283 MBytes  2.36 Gbits/sec
[  5]   9.01-10.01  sec   279 MBytes  2.35 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  2.75 GBytes  2.36 Gbits/sec                  sender
[  5]   0.00-10.04  sec  2.75 GBytes  2.36 Gbits/sec                  receiver
iperf Done.

看起來很不錯!網路沒問題。這是 NAS 傳送到客戶端。

NAS 設定

兩顆硬碟 RAID1。鏡像沒有 bitmap。
磁碟設定為一個 thick 類型邏輯磁區,沒有快照。

所以速度損失在哪?

網路效能看起來沒問題。單顆硬碟吞吐量也不錯,但 RAID 合併後沒有達到預期的提升。原因不明。也許資料到達時 ARM CPU 沒準備好?也許 CPU 忙著處理網卡和磁碟讀取?中斷等等。

哪些設定可以改善?

  • SMB 多通道(SMB multichannel)
  • Jumbo MTU
  • SMB v3
  • SMB 非同步(SMB Async)

我猜 Jumbo frames 最有感……會測試看看。

敬祝安好,
Harry

1個讚

我忘了說,我需要更新 NIC(網路介面卡)驅動程式才能獲得穩定的效能。
請查看舊論壇 ts-433 acting strange - Page 2 - QNAP NAS Community Forum

我正在考慮添加 NVME 或 SSD 作為寫入快取。
(這對於影片剪輯來說,讀取速度不會因此提升……)

擴充 NAS

NAS 有一個 USB 5 Gbit 端口。
在我的 Windows 客戶端上,我的 USB NVME(10 Gbit USB)可以達到 800MB/s。
我把 USB NVME 連接到 NAS 上。
測試 NAS 分享 NVME 時,我只能得到 150 MB/s。
(在客戶端的 5 Gbit USB 插槽上,這顆 NVME 可以達到約 400 MB/s)

$ hdparm -t /dev/sdc
/dev/sdc:
Timing buffered disk reads: 880 MB in 3.00 seconds = 293.06 MB/sec

我猜 ARM CPU 處理磁碟/USB/NIC 的能力,無法超過 150 MB/s。

那 NAS 上的兩個空硬碟槽呢?

SSD 快取

這台 NAS 不支援。請參考:

3. 由於硬體限制,TS-216G 及 TS-x33 NAS 不支援 SSD 快取。

QTier
這倒是可以,但我認為風險比較高。使用 Qtier 時,SSD/NVME 會成為儲存空間的一部分。那我就必須加一組 SSD/NVME 鏡像。
這種儲存空間每 TB 價格較高,所以我覺得不是理想方案。當然,這種儲存空間速度一直都很快。

或許加更多硬碟,也能提升讀取效能……

我的兩顆鏡像硬碟「理論上」應該有雙倍讀取效能,但寫入效能會稍低。
三顆硬碟做 raid 5 應該有三倍讀取效能,但寫入效能會更低。(單次寫入會是 1 次寫 + 1 次讀 + 1 次寫入校驗,或是一次三重寫入「完整條帶」)
所以 raid 5 用三或四顆硬碟,對寫入效能沒幫助,不考慮。

假設加上同型號硬碟,每顆只有 80 Mb/s:

硬碟數 Raid SMB 讀取 / 寫入
2 1(鏡像) 155 / 80(目前)
2 0 155 / 155(推測)
3 0 235 / 200(推測)
3 5 235 / 60(推測)
4 5 235 / 80(推測)
4 6 235 / 60(推測)
4 0 280 / 200(推測)
4 10 280 / 160(推測)

Raid 0 不考慮。Raid 5/6 對寫入效能沒幫助。
所以我唯一的方案就是加兩顆硬碟,建立 raid 10 卷。

前提是 CPU 能夠處理來自硬碟的資料……

但首先我的測試計劃:

  • Jumbo 測試
  • 在 NAS 上獨立卷做單顆 SSD 吞吐量測試

敬祝安好,
Harry

NAS就是太慢了……沒必要嘗試快取(反正也壞了)

如果你需要更快的速度,請換用 x86/x64 NAS

我了解這台 NAS 的速度不是很快。我正在嘗試達到宣稱的速度。
TS-433 | 產品效能 | QNAP

測試是在 RAID5 和 SSD 上進行的

我最近安裝了一台 431XeU,讀取速度低於 200MB/s,寫入速度更低。

這些 ARM 架構的 NAS 就是這樣,只適合 1GbE 或稍高一點的速度。不要指望它們能穩定支援 2.5/5 或 10 GbE 的需求。

我已設定了9000大小的Jumbo Frame(巨型幀)。

C:\Users\Beheerder>ping -f -l 8972 192.168.178.200

正在 ping 192.168.178.200,使用 8972 位元組的資料:
來自 192.168.178.200 的回覆:bytes=8972 time<1ms TTL=64
來自 192.168.178.200 的回覆:bytes=8972 time<1ms TTL=64
來自 192.168.178.200 的回覆:bytes=8972 time<1ms TTL=64
來自 192.168.178.200 的回覆:bytes=8972 time<1ms TTL=64

192.168.178.200 的 Ping 統計資料:
    封包:已傳送 = 4,已接收 = 4,遺失 = 0 (0% 遺失)
大約的往返時間(毫秒):
    最小 = 0ms,最大 = 0ms,平均 = 0ms

使用Jumbo Frame從USB上的NVME複製資料,速度從130 MB/s提升到162 MB/s。
複製到NVME最高可達213 MB/s,且穩定在200 MB/s左右。

奇怪的是讀取速度比寫入慢……
不過寫入已達到QNAP官方所說的最大值,很棒!

在鏡像上測試時,我看到高峰值,但聽到硬碟尋找的聲音很多,這會大幅降低吞吐量。

所以我在儲存池上額外建立了一個厚卷(thick volume)並再次測試。

寫入檔案到NAS時,峰值達180 MB/s,平均約160 MB/s
這已經是磁碟陣列的最大速度了!

從NAS讀取檔案時,平均約220 MB/s,峰值達250 MB/s。

我可以得出以下結論:

  • 新的RTL8125確實有差!
  • 空的卷似乎能防止硬碟大量尋找。
  • Jumbo Frame真的有幫助。

目前的效能已經足夠。
寫入部分提升空間有限(我已達最大值的80%)
讀取部分也提升有限(我已達最大值的78%)

我稍後會測試SSD。

讓我們用我的猜測來更新表格。
表格使用 5400 Ironwolf 硬碟並將 Jumbo frames 設為 9000
在全新空的磁區上。

硬碟數 RAID SMB 讀取 / 寫入
2 1(鏡像) 220 / 160(目前)
2 0 240 / 200(我猜)
3 0 280 / 200(我猜)
3 5 280 / 120(我猜)
4 5 280 / 160(我猜)
4 6 280 / 105(我猜)
4 0 280 / 200(我猜)
4 10 280 / 200(我猜)
1 單顆 SSD 硬碟 290 / 290(目前!)

這讓我開始思考空磁碟區的問題。
我的硬碟只有 5400 rpm,隨機 I/O 效能很差,應該盡量避免。

所以磁碟區填滿後的問題就是碎片化。
我用 Entware 安裝了 filefrag。這可以讓我檢查檔案的碎片化情況。

將 10 GByte 檔案快速複製到空磁碟:

$ /opt/sbin/filefrag -v TEST_FILE
TEST_FILE: 11 extents found

複製到一般磁碟(2.4 TB / 300 GB 可用空間)時效能很差。

$ /opt/sbin/filefrag -v TEST_FILE
TEST_FILE: 124 extents found

124 vs 11 extents。 這證實了碎片化的問題。

我發現了「e2freefrag」工具,可以提供一些洞見。

新的磁碟區

$ e2freefrag /dev/mapper/cachedev2
Device: /dev/mapper/cachedev2
Blocksize: 4096 bytes
Total blocks: 78643200
Free blocks: 77744836 (98.9%)

Min. free extent: 4 KB
Max. free extent: 2080640 KB
Avg. free extent: 1851064 KB
Num. free extent: 168

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
    4K...    8K-  :             1             1    0.00%
   64M...  128M-  :             6        170768    0.22%
  128M...  256M-  :             5        322362    0.41%
  256M...  512M-  :             2        191417    0.25%
  512M... 1024M-  :             6       1236804    1.59%
    1G...    2G-  :           148      75823484   97.53%

我的生產用磁碟區

$ e2freefrag /dev/mapper/cachedev1
Device: /dev/mapper/cachedev1
Blocksize: 4096 bytes
Total blocks: 655360000
Free blocks: 74780720 (11.4%)

Min. free extent: 4 KB
Max. free extent: 2080640 KB
Avg. free extent: 16856 KB
Num. free extent: 17743

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
    4K...    8K-  :           751           751    0.00%
    8K...   16K-  :           689          1639    0.00%
   16K...   32K-  :           892          4733    0.01%
   32K...   64K-  :          1221         13626    0.02%
   64K...  128K-  :           683         14679    0.02%
  128K...  256K-  :           550         25336    0.03%
  256K...  512K-  :           716         66956    0.09%
  512K... 1024K-  :          1414        260150    0.35%
    1M...    2M-  :          1720        648493    0.87%
    2M...    4M-  :          2645       1989195    2.66%
    4M...    8M-  :          3854       5748362    7.69%
    8M...   16M-  :          1349       3778962    5.05%
   16M...   32M-  :           466       2614941    3.50%
   32M...   64M-  :           270       2748786    3.68%
   64M...  128M-  :           396      11086409   14.83%
  128M...  256M-  :            17        834022    1.12%
  256M...  512M-  :             7        666937    0.89%
  512M... 1024M-  :            20       3767726    5.04%
    1G...    2G-  :            83      40509017   54.17%

我不太確定我在看什麼…

我最近讀了很多關於 ext4 和碎片化的資料。
看起來你應該確保至少有 20% 的可用空間。
(這不是我之前在做的…)

查了一下磁碟陣列的重組(defragmentation)。
我找不到 e4defrag 在 QNAP 上,但有找到「shake」。

$ filefrag ccie.rtf
ccie.rtf: 2 extents found
$ shake --old 0 --bigsize 0 ccie.rtf
$ filefrag ccie.rtf
ccie.rtf: 1 extents found

所以現在我有武器了 :slight_smile:

能不能移除一些磁碟上不必要的 I/O?

我試了一些方法

我停用了檔案系統日誌,但 QNAP 完全不喜歡這個做法…
也玩了一下 ext4 的選項,比如 largefile4 和 bigalloc。
結果 QNAP GUI 不喜歡這樣…
我最後用 qnap cli 重新格式化磁碟區,GUI 又恢復正常了。
qcli_volume -f volumeID=2 action=start inode=65536

用 cli 可以做到,但這對影片剪輯沒什麼幫助…

$ mount /dev/mapper/cachedev1 -o remount,noatime

唯一可能的進步就是格式化 QNAP 時用 65k 選項。
但我也不確定…

我想我應該建立兩個 thick volumes:
一個專門給影片(大檔案做連續存取)
一個給其他所有東西。

我還沒測試 SSD,但我很確定可以拿到很高的分數。

乾杯!

Entware 工具:

shake - 1.0-20170702-1 - Shake 是一個在使用者空間運行的重組工具。
filefrag - 1.47.0-2 - Ext2 檔案系統檔案碎片報告工具
e2freefrag - 1.47.0-2 - Ext2 檔案系統可用空間碎片資訊工具

安裝了 SSD,獲得了 290 MB/s / 290 MB/s 的吞吐量。
寫入部分比我預期的還要高。

在 QNAP 軟體中的測試顯示磁碟吞吐量達到 530 MB/s

我猜如果用 RAID 10 配 HDD,只要能處理好碎片問題,也能達到這種效能。

目前我會先用兩顆硬碟做鏡像。
會建立一個大檔案專用的儲存空間,另一個則給其他檔案,兩者都會保留足夠的空間。這樣應該能減少碎片產生。

任何建議都很感謝!請告訴我你用哪些硬碟、效能如何。

我遇到的問題是載入修正過的網路驅動後,GUI 介面就不再顯示網卡了。有人知道解決方法嗎?我正在等 QNAP 推出內建此驅動的更新。

謝謝!

我重新思考並重新測試了一些內容。
而且在測試期間,我沒有得到相同的效能。

重新測試網路

C:\iperf>iperf3.exe -c 192.168.178.200
Connecting to host 192.168.178.200, port 5201
[  5] local 192.168.178.174 port 50682 connected to 192.168.178.200 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.01   sec   270 MBytes  2.23 Gbits/sec
[  5]   1.01-2.01   sec   290 MBytes  2.43 Gbits/sec
[  5]   2.01-3.01   sec   295 MBytes  2.48 Gbits/sec
[  5]   3.01-4.01   sec   295 MBytes  2.48 Gbits/sec
[  5]   4.01-5.01   sec   295 MBytes  2.48 Gbits/sec
[  5]   5.01-6.01   sec   284 MBytes  2.39 Gbits/sec
[  5]   6.01-7.00   sec   266 MBytes  2.24 Gbits/sec
[  5]   7.00-8.00   sec   296 MBytes  2.48 Gbits/sec
[  5]   8.00-9.00   sec   296 MBytes  2.48 Gbits/sec
[  5]   9.00-10.00  sec   295 MBytes  2.48 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  2.81 GBytes  2.42 Gbits/sec                  sender
[  5]   0.00-10.03  sec  2.81 GBytes  2.41 Gbits/sec                  receiver

iperf Done.

刪除並重新建立磁區,並且用不同的大小重複幾次,結果突然又變好了。

這讓我覺得很奇怪。這表示磁碟陣列上某個甜蜜點很重要。

我用簡單的 DD 並加上 offset 來測試效能。結果發現,磁碟尾端的速度真的慢很多!
當然,這對於一顆磁碟來說,外圈比內圈快是預期的,但沒想到竟然會差到兩倍。

我分別測試了每顆磁碟,然後再測試了鏡像:

[admin@QNAP /]# for i in `seq 0 500 3500`; do  echo  "offset $i Gigabytes";echo 3 > /proc/sys/vm/drop_caches && dd if=/dev/sda of=/dev/null bs=1M count=500 skip=${i}K; done
offset 0 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.454363 seconds, 203.7MB/s
offset 500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.506304 seconds, 199.5MB/s
offset 1000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.983244 seconds, 167.6MB/s
offset 1500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.825006 seconds, 177.0MB/s
offset 2000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 3.615630 seconds, 138.3MB/s
offset 2500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 3.578937 seconds, 139.7MB/s
offset 3000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 4.422567 seconds, 113.1MB/s
offset 3500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 4.839563 seconds, 103.3MB/s
[admin@QNAP /]# for i in `seq 0 500 3500`; do  echo  "offset $i Gigabytes";echo 3 > /proc/sys/vm/drop_caches && dd if=/dev/sdb of=/dev/null bs=1M count=500 skip=${i}K; done
offset 0 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.588500 seconds, 193.2MB/s
offset 500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.617839 seconds, 191.0MB/s
offset 1000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.797189 seconds, 178.8MB/s
offset 1500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.917865 seconds, 171.4MB/s
offset 2000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.919876 seconds, 171.2MB/s
offset 2500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 3.717384 seconds, 134.5MB/s
offset 3000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 4.240667 seconds, 117.9MB/s
offset 3500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 5.708912 seconds, 87.6MB/s
[admin@QNAP /]# for i in `seq 0 500 3500`; do  echo  "offset $i Gigabytes";echo 3 > /proc/sys/vm/drop_caches && dd if=/dev/md1 of=/dev/null bs=1M count=500 skip=${i}K; done
offset 0 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.179269 seconds, 229.4MB/s
offset 500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.088836 seconds, 239.4MB/s
offset 1000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.301137 seconds, 217.3MB/s
offset 1500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 3.947950 seconds, 126.6MB/s
offset 2000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 3.064201 seconds, 163.2MB/s
offset 2500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 2.718814 seconds, 183.9MB/s
offset 3000 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 3.425079 seconds, 146.0MB/s
offset 3500 Gigabytes
500+0 records in
500+0 records out
524288000 bytes (500.0MB) copied, 3.747751 seconds, 133.4MB/s

所以我學到,快的磁區必須放在最前面
最後的 1 TB 即使有鏡像也太慢,無法提供高吞吐量。

所以一個有大量空間的磁區雖然碎片較少,但我們還是要避開磁碟最後一段才能有速度。

我學到很多!

這似乎被稱為短行程(short stroke)。

對於這個磁碟來說,將其分割在約 2300 GB 處似乎是一個「不錯」的折衷方案。這是磁碟容量的 70%。大概每個磁碟都差不多如此。

第一個卷區存放大型檔案
第二個卷區「快照空間」100 GB?
第三個卷區剩下的空間存放小檔案。

可惜的是,我相信在 QNAP 中無法建立專用的快照空間。所以快照很可能會落在最慢的區域。

我會清除 NAS 並重新建立。
用三個卷區,之後我會刪除中間的卷區,讓它成為快照區域。

這是一個有趣的謎題,我很享受。當然,如果你很重視時間,就多買幾顆快一點的磁碟和快一點的 NAS,順便升級到 10 Gbit 吧!

我在我的 TS-435XeU 上也遇到效能問題。

我使用的是 10GE,但只看到幾個 gbps。我已經選用 SMB v3、jumbos、async 等,並且調整了我用作客戶端的 Mac 上的設定。Mac 對 Mac 可以順利達到 10gbps,所以問題明顯出在 NAS 上。

QNAP 聲稱這台可以達到 10GE:

https://www.qnap.com/en-uk/performance/model/ts-435xeu

有沒有人有什麼想法(除了「它是 ARM CPU,所以只能跑 1 gig」)?

所以你的設定和他們完全一樣嗎?

客戶端電腦:

  • 作業系統:Microsoft Windows Server 2019
  • 規格:Intel® Core™ i7-7700(4核心/8執行緒),32GB RAM,QNAP 10GbE/25GbE/100GbE 網路擴充卡

NAS 設定:

  • 作業系統:QTS 4.5.x 及 5.0.0
  • RAID 卷:RAID 50(8槽及以上)、RAID 5(4槽至6槽)、RAID 1(2槽)、單槽(1槽)
  • SSD / HDD:全數裝滿,Samsung 860 EVO 1TB SATA SSD / Seagate ST1000NM0033 1TB HDD / Samsung PM9A1 960GB M.2 NVMe PCIe Gen4 / Samsung PM9A3(MZQL2960HCJR-00A07)960GB U.2 NVMe PCIe Gen4
  • 2.5GbE 及 GbE:內建乙太網路埠
  • 網路介面卡:10GbE:QNAP 雙埠 10 Gigabit 網路擴充卡(LAN-10G2T-U 或 LAN-10G2SF-MLX)
  • 網路介面卡:25GbE:QNAP 雙埠 25 Gigabit 網路擴充卡(QXG-25G2SF-CX6)
  • 網路介面卡:100GbE:QNAP 雙埠 100 Gigabit 網路擴充卡(QXG-100G2SF-E810 或 QXG-100G2SF-CX6)

QNAP 用這個作為他們的展示系統

那些數字根本不可能達到,我用 431XeU(1x SFP+)勉強只能跑到 250MB/s。

當然我的設定並不完全相同。尤其是網站引用的那個設定其實並不是他們測試的那個(我認為其實不可能,因為TS-435XeU內建10GE,但據我所知不支援擴充NIC)。

正確的型號(我認為)在這裡:

https://www.qnap.com/en-uk/product/ts-435xeu

無論如何,我運行的軟體版本比他們測試的要新(這也是預期的)。

客戶端電腦顯然不是問題(因為我用另一台Mac當SMB伺服器時可以跑到10Gbps)。

關鍵差異大概是我沒有4顆SSD組成的RAID(我用的是傳統的硬碟,雖然是7200 RPM的)。所以沒錯——可能是硬碟的問題,雖然我原本希望它能把讀取負載分散到多顆硬碟上……

根據我查到的資訊,TS-435XeU裡的M.2 SSD會變得很熱,所以我不太想裝那些。同樣地,我也不太想花錢把硬碟換成SSD……

要達到 10 Gb 或 2x 10 Gb 乙太網路速度,你真的需要旋轉式硬碟。

測試用的 SSD 每顆磁碟有 550 MB/s,所以 4 顆磁碟就能推到他們宣稱的 2235 MB/s。因為是 SSD,所以隨機或連續存取都沒什麼差別。

你還沒分享你的設定。RAID 10?4 顆磁碟?空的磁區?Thick(厚磁區)?快照(Snapshots)?讀取效能?寫入效能?

一顆快的 HDD 也不會超過 220 MB/s,最理想情況下你大概能拿到 800 MB/s?但如果你用到磁碟的慢端,只能拿到 300 MB/s 左右。

如果你有快照或是 thin(薄磁區),會有大量隨機 I/O,速度會大幅下降。整體大約只剩下 30 - 60 MB/s。

這是厚卷上的 RAID 1。

我在讀取時看到 1.8Gbps,寫入時看到 1.4Gbps(即分別為 225MB/s 和 175MB/s)。

硬碟是 Ironwolf Pro,所以理論上應該相當快(我記得官方宣稱持續讀寫速度為 220MB/s)。

我原本希望在 RAID 1 下,讀取速度能接近單顆硬碟的兩倍,因為不同的叢集可以從不同的硬碟讀取——不過推測這會增加一些尋道開銷,因為硬碟每次讀取後都要從叢集 N 的尾端移動到叢集 N+2 的開頭?

總之,聽起來 SSD 才是解決方案?

RAID1 的資料會同時從兩個磁碟讀取,因此在速度上不會比單一磁碟有提升。
在多區塊讀取(多個客戶端存取不同檔案)的情況下,你可能會看到一些效能提升。

我查過 CPU 規格,TS-435XeU 比 TS-433 更好。

你的配置看起來跟我的差不多。我用 RAID1 兩顆 IronWolf(非 Pro)硬碟,測得 220/160。

我本來希望在 RAID 1 下,讀取速度能接近單顆硬碟的兩倍,因為不同的叢集可以從不同硬碟讀取——不過這樣可能會增加一些尋道開銷,因為硬碟每次讀取後要從叢集 N 的尾端移動到叢集 N+2 的起始位置?

我的配置下,鏡像讀取速度確實有提升。但如果用其他 RAID 等級,提升會更明顯。

不管怎樣,看起來 SSD 才是解決方案?

沒錯,SSD 就能達到高速度。