Opensource NAS voor vijf schijven

Een Linux NAS die open hardware is, plaats heeft voor vijf schijven en zelfs een ingebouwde ups heeft? Het klinkt bijna te mooi om waar te zijn, maar het bestaat: de Helios64 van Kobol. Met Armbian maak je er een flexibele NAS van die je volledig naar je hand kunt zetten, al loop je nog wel tegen enkele problemen aan.

Auteur: Koen Vervloesem    |    Gepubliceerd in Linux Magazine 2, 2021

De Helios64 van Kobol is een five-bay hot-pluggable nas met een 64-bit ARM-processor, 4 GB RAM, een 16 GB eMMC, twee ethernetpoorten en een ingebouwde batterij. Vooral die laatste is interessant als extra bescherming tegen problemen door stroomuitval. Het geheel zit in een stijlvolle en zware aluminiumbehuizing. Zie het kader voor de volledige specificaties.

De NAS koop je als een doe-het-zelfkit: je moet hem zelf nog in elkaar steken, aan de hand van een heel duidelijk stappenplan op de wiki (https://wiki.kobol.io/helios64/kit/). De assemblage nam bij ons ongeveer twee uur in beslag. Dat is nogal tijdrovend, en sommige schroeven waren wat weerbarstig, maar het voordeel is dat je op deze manier heel wat leert over de interne bekabeling van je NAS, wat nog van pas kan komen als je hem later gaat hacken.

De Kobol Helios64 komt in een stijlvolle aluminiumbehuizing.
Specificaties:
SoC: Rockchip RK3399 (ARMv8-A 64-bit) hexacore 2x Cortex-A72 1,8 GHz + 4x Cortex-A53 1,4 GHz
RAM: 4 GB LPDDR4
Opslag: 16 GB eMMC 5.1 NAND-flash, 128 MB SPI NOR-flash
Opslaginterfaces: 5x SATA 3.0, 1x M.2 SATA 3.0-slot (gedeeld met SATA-poort 1), 1x microSD (SDIO 3.0)
Ethernet: 1x 1 Gbps, 1x 2,5 Gbps
USB: 1x Type-C (DisplayPort, DAS, Host, seriële console), 3x USB 3.0
Extra: 16x GPIO, 1x I²C, 1x UEXT, ingebouwde batterij (UPS)
Prijs: ca. € 300,- (inclusief verzending, invoerrechten en belastingen)

Open hardware

Hacken? Ja, de Helios64 is open hardware en speciaal ontworpen om aan te passen. De wiki van Kobol heeft uitgebreide documentatie over de hardware (https://wiki.kobol.io/helios64/hardware/), inclusief de elektronische schema’s en datasheets van de gebruikte componenten. Er zijn allerlei uitbreidingspinnen voorzien voor I²C, SPI, GPIO, … Als je dus een eigen controlepaneel of schermpje wilt aansluiten, is dat perfect mogelijk.

Het Kobol-team is niet aan zijn proefstuk toe. Vóór de Helios64 hebben ze al de Helios4 uitgebracht, een 4-bay NAS. Maar je merkt wel aan kleine foutjes dat het bedrijf nog niet zoveel ervaring heeft. Zo zijn de blauwe statusleds op het voorpaneel wel heel helder. En blijkbaar had Kobol de 2,5 Gbps ethernetinterface alleen op de hoogste snelheid getest: op een gigabit-ethernetswitch krijg je geen gigabitsnelheid. Maar in alle openheid heeft het team de fout beschreven en zelfs de oplossing, al moet je daardoor wel aan het solderen slaan. Gelukkig werkt de gigabit-ethernetpoort ernaast wel perfect.

Armbian installeren op eMMC

De Kobol Helios64 heeft officiële ondersteuning voor Armbian. Wij installeerden Armbian Focal 21.02 (gebaseerd op Ubuntu 20.04 LTS) met Linux-kernel 5.10. Er is ook een Debian-versie. Let op dat je het juiste image downloadt; er is er ook een voor de voorganger Helios4.

Je kunt het image naar een micro-sd-kaart schrijven en daarvan je Helios64 opstarten, maar de NAS heeft ook ingebouwde eMMC-opslag. Deze kun je op je computer via usb aankoppelen als je de NAS van een speciaal u-boot image opstart. Download dit hier.

Schrijf nu het u-boot-image naar een microSD-kaart en steek die in het slot achteraan de Helios64. Naast het microSD-kaartslot zit ook een USB-C-aansluiting. Sluit de meegeleverde kabel daarop aan. De andere kant is een USB-A-connector die je op je PC aansluit. Sluit dan de netwerkkabel aan en de voedingskabel, waarna je de Helios64 opstart met de powerknop vooraan. Je computer ontdekt nu een nieuw opslagapparaat, Linux UMS disk 0. Je kunt nu het gedownloade image van Armbian op deze schijf schrijven met je favoriete programma, zoals dd of balenaEtcher. Bij ons werkte dat overigens niet met de meegeleverde usb-kabel; een andere kabel die we zelf hadden liggen, werkte wel. Nadien schakel je de Helios64 uit door vier seconden op de powerknop te drukken. Haal de microSD-kaart eruit.

Gebruikersaccount aanmaken

Houd nog altijd de USB-kabel aangesloten: na je Helios64 opnieuw op te starten, gebruik je deze als seriële kabel om in te loggen. Dat doe je met screen, cu of picocom, bijvoorbeeld:

picocom -b 1500000 /dev/ttyUSB0

Je kunt dan de kernel zien opstarten. Na een tijdje knippert de led System in een hartslagpatroon. Dan is Armbian opgestart. Je wordt dan ook in je seriële terminal ingelogd als root en krijgt de vraag om onmiddellijk een nieuw wachtwoord in te stellen (de login is standaard root met wachtwoord 1234). Als je niets ziet, druk dan eens op enter om de loginprompt te zien te krijgen. Daarna kies je ook je standaardshell en maak je een gebruikersaccount aan.

Je bent nu ingelogd en als alles goed gaat, heeft de netwerkinterface die je hebt aangesloten via dhcp een IP-adres gekregen. Verifieer dit met ip a. Je Kobol NAS is vanaf nu ook bereikbaar via SSH, dus je kunt nu gerust uitloggen en de USB-kabel verwijderen.

De eerste keer dat je inlogt, maak je een gebruikersaccount aan.

Initiële configuratie

Je hebt nu een Armbian-installatie, en deze kun je beheren zoals je gewoon bent van een normaal Debian- of Ubuntu-systeem. Maar Armbian voegt daar nog wat zaken aan toe. Handig is het programma armbian-config, dat je toelaat om allerlei systeeminstellingen aan te passen of extra software te installeren.

In de systeeminstellingen staan voornamelijk lowlevelzaken en geavanceerdere keuzes, zoals kernelupgrades uitschakelen, allerlei hardware zoals I²C en dergelijke inschakelen en een read-only rootbestandssysteem. In de netwerkinstellingen moet je zijn voor IP(v6)-instellingen en onder Personal staan zaken als de tijdzone, taal, toetsenbordindeling en hostname. En bij Software kun je allerlei handige software installeren. Dat kun je zelf uiteraard ook via apt, maar armbian-config geeft hier de mogelijkheid om extra software zoals Pi-hole te installeren die niet in de repository zit.

ZFS installeren

De Helios64 wil je uiteraard als NAS gebruiken, en persoonlijk draaien we al onze nassen al meer dan tien jaar op het bestandssysteem zfs. Gelukkig ondersteunt Armbian dat ook. Als een test hebben we drie schijven in de Helios64 gestoken waarvan we een RAIDZ-pool hebben gemaakt.

Zorg eerst dat de kernel en alle pakketten up-to-date zijn: sudo apt update && sudo apt upgrade

Installeer dan de kernelheaders (dat kan ook in armbian-config onder Software):

sudo apt install linux-headers-current-rockchip64

Reboot daarna voor de zekerheid om met de nieuwste kernel te starten, en installeer dan de zfs-kernelmodule en zfs-tools: sudo apt install zfs-dkms zfsutils-linux

Je moet daarbij de licentie van ZFS aanvaarden. Reboot daarna de Helios64. Als er iets misloopt door incompatibele kernelheaders, installeer dan opnieuw de zfs-module, waardoor die opnieuw gegenereerd wordt voor je huidige kernel: sudo apt install –reinstall zfs-dkms

Daarna kun je een pool aanmaken, bijvoorbeeld deze versleutelde raidz-pool van drie schijven:

sudo zpool create -o ashift=12 -O compression=lz4 -O atime=off -O acltype=posixacl -O xattr=sa -O encryption=aes-256-gcm -O keylocation=prompt -O keyformat=passphrase tank raidz1 /dev/disk/by-id/foobar1 /dev/disk/by-id/foobar2 /dev/disk/by-id/foobar3

Geef je passphrase in waarmee je de data wilt versleutelen, en daarna kun je met zpool status zien dat je pool correct is aangemaakt.

Benchmarks

Deze pool hebben we gebenchmarkt met fio (installeer dit met sudo apt install fio). We simuleren het lezen van blokken van 1 MB, met één proces tegelijk, wat zo goed als het best-case scenario is. Ga naar je pool (want daar maakt fio de bestanden voor de benchmark aan) en voer de volgende opdracht uit:

cd /tank
sudo fio --name=single-sequential-read --ioengine=posixaio --rw=read --bs=1m --size=16g --numjobs=1 --iodepth=1 --runtime=60 --time_based --end_fsync=1

Hiermee halen we een snelheid van 62 MB/s. Ter vergelijking: Ubuntu 20.04 met een RAIDZ-pool met dezelfde schijven op een Intel-machine haalt in deze test 232 MB/s. Navraag op het Armbian-forum leerde ons dat dit een normale snelheid is, omdat de code voor de AES-GCM-encryptie niet geoptimaliseerd is voor ARM-processoren. Voor meer prestaties kun je onversleutelde ZFS over LUKS voor full-disk encryptie installeren.

Dit is één geteste situatie; ga je willekeurige toegang en/of gelijktijdige toegang van meerdere processen testen, dan zullen de resultaten veel slechter zijn. Ook een andere indeling van je pool of het weglaten van encryptie zal tot andere cijfers leiden. Een benchmark van de gigabit-ethernetinterface met iperf leverde overigens een snelheid van 942 Mbps op, wat zo goed als de maximale snelheid is. Start daarvoor op je Helios64 de iperf-server: iperf3 -s

En dan op een andere via gigabit-ethernet verbonden pc de client: iperf3 -c helios64

Testsuite

Kobol heeft ook een testsuite voor zijn Helios64 en Helios4 gepubliceerd. Dit installeer je eenvoudig met:

git clone https://github.com/kobol-io/test-suite.git
cd test-suite
sudo ./install.sh -b helios64

Daarna kun je allerlei tests uitvoeren met: sudo helios64_test

De testsuite van Kobol voert allerlei tests uit op je Helios64.

Conclusie

Na enkele maanden met de Helios64 geëxperimenteerd te hebben, zijn we er genoeg van overtuigd om het toestel als back-up NAS in huis in te zetten. De ondersteuning in Armbian is ondertussen uitstekend, op enkele zaken na. Zo is Wake-on-LAN momenteel nog niet ondersteund en we hebben ook een keer een onverklaarbare kernel panic gehad. Maar Kobol werkt nauw samen met Armbian en biedt met elke versie verbeterde ondersteuning en stabiliteitsfixes aan.

Toch zijn er wel wat losse eindjes waar je tegen moet kunnen. Een fout zoals de 2,5 Gbps-ethernetpoort die niet op andere snelheden werkt, is eigenlijk onvergeeflijk voor een apparaat dat het toch van zijn snelle en betrouwbare netwerkprestaties moet hebben. En ondanks de stevige aluminiumbehuizing komt het voorpaneel met de knopjes wat goedkoop en kwetsbaar over. Maar daartegenover staat dat je met de Helios64 een krachtige NAS met ARM-processor hebt waarvan alle hardware en software uitgebreid gedocumenteerd is. De wiki van Kobol is wat onoverzichtelijk, maar het loont de moeite om alle pagina’s eens te doorlopen.