Mit CM3588-projekt — 4-NVMe ARM64 hjemme-NAS på 10 W tomgang
FriendlyElecs CM3588 NAS Kit gør et RK3588-compute-modul til et 4-bay NVMe-hjemme-NAS med 2,5 GbE. Omkring 10 W tomgang. Debian på mainline-kernel, ZFS, Samba, Tailscale.
TL;DR — FriendlyElec CM3588 NAS Kit er et RK3588-baseret compute-modul på en carrier-board med fire M.2 NVMe-pladser (PCIe 3.0 x1 hver), 2,5 GbE, 2× HDMI ud, USB 3.0 og en 8-kernet ARMv8-CPU (4× Cortex-A76 + 4× Cortex-A55). Fuldt lastet med fire NVMe-drev går den i tomgang på ca. 10 W, peaker omkring 20 W under tung I/O, og læser/skriver en NVMe på ca. 1 GB/s (bus-grænsen, ikke drevet). Min egen kører Debian på mainline-kernel, med ZFS på root, fire 2 TB NVMe-drev i en raidz2-pool, Samba til LAN-shares og Tailscale til adgang uden for LAN. Den har erstattet en tower-PC med TrueNAS og skåret NAS-strømforbruget med ca. 60 W.
Hvorfor netop dette board
Jeg havde kørt en tower-PC som hjemme-NAS i årevis: en brugt desktop, seks 3,5“-harddiske og en støjende blæser. Det virkede, men den trak 70–80 W tomgang og stod i et skab, der skulle have aktiv udluftning. Harddiskene var højlydte nok til, at jeg havde flyttet dem til det fjerneste hjørne af huset.
Tre ting, jeg ville have af en afløser:
- Kun NVMe. Roterende harddiske er billigere pr. terabyte, men støjen, vibrationen og varmen er ikke værd for et hjemme-NAS på nogle få terabyte. 4× 2 TB NVMe er rigeligt.
- ARM, for strømforbrugets skyld. Et x86-board med 4× PCIe-pladser forbundet til NVMe ville trække 30–40 W tomgang. ARM kan klare det på 10.
- Mainline Linux, ikke en leverandør-fork. Jeg vil have
apt-get dist-upgradetil at virke,zfstil at bygge fra DKMS mod en nyere kernel og ingen tre år gammel vendor-BSP.
CM3588 NAS Kit rammer alle tre.
Hardware
- SoC: Rockchip RK3588 (4× Cortex-A76 @ 2,4 GHz + 4× Cortex-A55 @ 1,8 GHz, Mali-G610 GPU, 6 TOPS NPU). ARMv8.2-A.
- RAM: 8 GB LPDDR4X på det modul, jeg købte. 16 GB- og 32 GB-varianter findes.
- Lagring: 64 GB eMMC on-module til OS + 4× M.2 Key-M 2280-pladser, hver PCIe Gen 3 x1 (altså ~1 GB/s pr. plads, ikke x4).
- Netværk: 1× 2,5 GbE (Realtek RTL8125B).
- USB: 2× USB 3.0 Type-A, 1× USB 3.0 Type-C (DisplayPort alt-mode), 1× USB 2.0.
- Video: 2× HDMI ud, 1× HDMI ind (RK3588’s capture-blok).
- Strøm: 12 V barrel-jack. Et 60 W-strømforsyning er mere end nok.
Boardet er lille — ca. 10 × 10 cm — og passivt over SoC’en plus en lille blæser, der blæser hen over NVMe-drevene. Mit står fladt på en hylde uden kabinet.
NVMe-kompatibilitetsadvarsel
Den ene ting, der er værd at vide: CM3588 NAS Kit er ikke kompatibelt med visse WD Blue SN580- og WD Black SN850-drev — linket flapper ved boot. Jeg bruger Samsung 990 EVO og Crucial P3 Plus; begge virker fint. Tjek FriendlyElecs wiki-kompatibilitetsliste før du køber NVMe-drev.
OS og filsystem
Jeg kører Debian 13 (trixie) med mainline-kernel — RK3588-understøttelse er god nok fra 6.8 og frem til headless-brug. FriendlyElecs Debian-image virker ud af boksen, men jeg geninstallerer ovenpå for at få et rent Debian i stedet for deres BSP.
- Root-filsystem:
ext4på eMMC. - Datapool:
zfsraidz2på tværs af de fire NVMe-drev. Med 4× 2 TB giverraidz2~3,5 TB brugbart med to-disks-redundans. Ja,raidz2på fire drev er konservativt; det betyder også, at et dobbelt-svigt ikke spiser poolen, og på NVMe er rebuilden hurtig nok til, at jeg ikke mister nattesøvn over det. - ZFS-modul: DKMS mod den kørende kernel. Bygger automatisk ved kernel-opgraderinger. Har virket uden manuel indgriben på tværs af tre kernel-bumps.
- ARC-tuning: Loftet ved 2 GB. Det giver headroom på et 8 GB-system.
Gennemløbet er flaskehals-begrænset af 2,5 GbE til netværks-I/O (~280 MB/s vedholdende), længe før ZFS eller NVMe-drevene kommer på arbejde. Lokale operationer på poolen når omkring 2 GB/s samlet sekventiel læsning.
Tjenester
Bevidst holdt simpelt:
- Samba til SMB-shares til Mac’erne og Windows-boksen på LAN’et.
- rsync + cron til natlige backups fra tre andre maskiner.
- ZFS-snapshots hver time, opbevares en uge.
zfs sendpiper datasættet ugentligt til en offsite B2-bucket viazfs-autobackup+ rclone. - Tailscale til adgang uden for LAN. Ingen port-forwarding, ingen dyndns, ingen VPN-koncentrator. SSH og Samba rider begge på Tailscale-interfacet, når jeg er væk.
- Cockpit til det lejlighedsvise “hvorfor larmer blæseren” dashboard-øjeblik.
Det er alt. Ingen Docker swarm, ingen Kubernetes, ingen dusin sidecar-containere. Boardet har ét job — serve filer på LAN’et og lade mig trække backups offsite — og det gør det i stilhed.
Strøm og støj
- Tomgang (alle fire NVMe opspundne, ingen trafik): ~10 W ved stikkontakten.
- Travlt (NVMe-læsning mætter 2,5 GbE, ZFS-ARC varm): ~18–20 W.
- Peak (scrub af hele poolen, alle kerner varme): ~25 W.
Sammenlignet med den 70–80 W-tower, den afløste, er strøm-ROI’en alene omkring 500 kWh/år, eller cirka 1.500 kr/år ved danske privat-takster. Boardet betalte sig selv tilbage på ca. et år.
Støj: i praksis uhørlig fra mere end en meters afstand. Blæseren er lille, og 80 % af tiden kører den knap nok.
Hvad virkede ikke, eller tog arbejde
- Vendor-kernel. FriendlyElecs leverede kernel er deres fork af 6.1 med RK-specifikke patches. Det virker til deres nøglefærdige NAS-image, men DKMS-ZFS-builds er bøvlede mod den. Skiftet til mainline løste det.
- HDMI-capture. RK3588 har en hardware HDMI-input-blok. I mainline er den stadig eksperimentel. Jeg har en vag brugscase for den (trække signal fra en gammel enhed til arkivering), men har ikke fået det til at virke end-to-end. Parkeret indtil videre.
- NPU. De 6 TOPS NPU er underudnyttet. Mainline har basal RKNPU-understøttelse, men til noget praktisk skal du stadig bruge FriendlyElecs
rknn-toolkit2. Ikke et problem for et NAS.
Ofte stillede spørgsmål
Hvorfor ikke x86?
En x86-mini-PC med 4× NVMe er ~2× tomgangsstrømmen og ~2× købsprisen (når du tæller kabinet, PSU og CPU med). Til et hjemme-NAS, hvor arbejdsbyrden er “serve filer” snarere end “kør 40 containere”, vinder ARM.
Hvorfor ikke Raspberry Pi 5?
Pi 5 har én PCIe 2.0 x1-lane eksponeret via en HAT — du kan bolte en NVMe på, men kun én, med loft ved ~500 MB/s. CM3588 har fire lanes ved PCIe 3.0 direkte forbundet. En anden klasse af board.
Hvorfor ikke OpenMediaVault eller TrueNAS?
Begge ville virke. Jeg foretrækker rent Debian + Samba + ZFS, fordi opgraderingsstien for Debian er velkendt for mig, og OMV/TrueNAS er et lag, jeg skulle lære på ny. Det afhænger af dig.
Hvorfor raidz2 på fire drev og ikke mirror + mirror?
Overvejet. mirror + mirror giver hurtigere skriv og lettere udvidelse, men kun 4 TB brugbart fra 4× 2 TB — det samme som raidz2. Med raidz2 kan to vilkårlige drev svigte; med stripede mirrors kan du miste to drev, men kun hvis de er i forskellige mirror-par. På fire drev er kapaciteten identisk, og raidz2 har den stærkere fejltolerance.
Kan den køre Plex / Jellyfin?
Ja, og RK3588’s hardware H.265/VP9/AV1-decode-blok klarer det tunge arbejde. Jellyfin med rkmpp-accelereret decoding håndterer 4K HEVC-transcodes på omkring 3× realtid. Jeg kører ingen af delene på denne boks — min Plex bor et andet sted — men det er realistisk.
Går den i suspend?
Ikke pålideligt. Lad den stå tændt; tomgang er alligevel 10 W.
Hvad med støj og varme om sommeren?
Passivt køleplade plus en lille blæser. I en dansk sommer (20–25 °C i rummet) topper den omkring 55 °C die-temperatur under en ZFS-scrub. Ingen throttling målt.
Dom
Hvis du vil have et lydsvagt, strømbesparende, ren-NVMe-hjemme-NAS med nok PCIe til at betyde noget og er villig til at bruge en aften på Debian + ZFS, er CM3588 NAS Kit den bedste mulighed, jeg har fundet. Det er ikke det billigste — en brugt Optiplex er billigere på forhånd — men på tre års TCO inkl. strøm betaler det sig tydeligt tilbage.
RK3588 i sig selv er en overraskende kapabel SoC til homelab-arbejdsbyrder. Da mainline-kernel-understøttelsen landede, holdt jeg op med at behandle den som “en ARM-kuriositet” og begyndte at behandle den som default-svar på små altid-tændte servere.
To år inde er min blevet genstartet to gange (en gang for en kernel-opgradering, en gang fordi jeg flyttede hylden). Jeg ville købe den igen.