測試 Raspberry Pi 4 可用的 storage devices

數年前我開始玩 Raspberry Pi ,第一款入手的是 Raspberry Pi 2 model B;原先的想法是在家弄個微型 Linux server,運氣好的話還能裝 desktop 版,接上電視當 Thin client。
但這個版本 CPU 速度不快,記憶體不大,MicroSD 的 file I/O 也不算快,我裝起來玩沒幾個月就撤下來了… XD

之後我在看到 Orange Pi 的 benchmarking 文章,感覺內建的 EMMC 速度不錯,就買了一台 Orange Pi Plus 2 來玩。
也是玩沒幾個月,發現 Orange Pi 的生態系不太完整,而且 Orange Pi Plus 2 的 CPU 發熱量頗高,非得搞個風扇才能讓它保持清醒(風扇還要定時更換),便又把它撤下來了…

Raspberry Pi 4 大概是在 2019 年六月面世,而且 Benchmarking the Raspberry Pi 4 這文有一部份對我挺有吸引力…

我想在家弄的 Linux server 已經被我扔進 NAS 的 VM,直到 8GB 記憶體的版本面世,我才又入手。
把它裝起來玩之後,發現 MicroSD 的 file I/O 依舊無法跟 NAS 裡面的 VM guest 相比,便又擱著…
直到最近看到一堆 Raspberry Pi 4 的 USB boot 文,才又有動力把它抓出來測 file I/O ,順便留個紀錄。

在測試前,有件事讓我搞很久…
我用 USB 外接硬碟可以作 USB boot,但用 Intel SSD 760pAsus ROG STRIX ARION伽利略 M2NVU31(晶片是 JMS583)一直失敗… T_T

我在 Facebook 的台灣樹苺派社群提問,便有人回覆提醒我該注意供電與轉接器的主控晶片。
於是我把裝置接上一個可額外供電的 USB 3.0 hub,NVMe SSD 搭配 JMS583 主控 就成功達成 USB boot 了… XD

隨後又在網路上找了個 RTL9210 主控的轉接器,發現 RTL9210 毋需額外供電,直接接上就可以作 USB boot。

測試的配置圖(開機時僅接上 NVMe SSD):

Raspberry Pi 4 的一些基本資訊,開機後裝上 & 掛載受測的 storage devices:

fio 的參數都一樣:

-iodepth=128 -ioengine=libaio -bs=4k \
--runtime=300 --size=500M \
--direct=1 --rw=randrw

前面的廢話夠多了,先列 fio 的隨機存取測試結果;由快到慢分別是:

  1. Intel SSD 760p 搭配 NVMe-to-USB3 轉接器(左三,Raspberry Pi 4 開機時僅接上這個作 USB boot):iops 約 11k,傳輸約 42MB/s
  2. Fujitsu F500 SATA SSD 搭配 SATA-to-USB3 線(左一):iops 約 10k,傳輸約 40MB/s
  3. SanDisk Extreme Pro MicroSD card(在 Raspberry Pi 4 肚子裡):iops 約 390,傳輸約 1560KB/s
  4. SanDisk Ultra Go 隨身碟(插在 USB 3.0 hub,tiffany 藍那傢伙):iops 約 170,傳輸約 680KB/s
  5. Toshiba Canvio Basics 2.5″ USB3 外接硬碟(左二,應該是 SMR HDD):iops 約 63,傳輸約 250KB/s

有興趣的可以繼續看測試截圖…

Intel SSD 760p 搭配 NVMe-to-USB3 轉接器:

Fujitsu F500 SATA SSD 搭配 SATA-to-USB3 線:

SanDisk Extreme Pro MicroSD card:

SanDisk Ultra Go 隨身碟:

Toshiba Canvio Basics 2.5″ USB3 外接硬碟:

對照組…
NAS VM guest(RAID 1 w/2 SATA HDDs,用 Intel 660p 作 cache)