Filsystemet ZFS, tidigare känt som Zettabyte File System är sprunget ur Sun Microsystems operativsystem Solaris och drivs sedan år 2013 som ett open source-projekt av organisationen OpenZFS. ZFS är unikt i att det utöver att vara ett filsystem även är en volymhanterare på samma gång, vilket ger filsystemet fullständig kontroll över lagringen från den fysiska konfigurationen av enheterna till filerna som lagras.
Tanken är att filsystemet ska vara optimalt för långtidslagring tack vare funktioner som checksums och metadata som lagras separat från ett datablock, självläkning vid skrivfel, komprimering och deduplicering. Det sistnämnda är ett system som i korta drag eliminerar identiska kopior av en och samma fil för att istället notera hur många kopior av filen som finns och vart – vilket i sin tur kan spara stora mängder utrymme.
Dedupliceringsprocessens nackdel är att den tar stora mängder primärminne, RAM, i anspråk. Andra funktioner värda att nämna är ZFS inbyggda lösning för ögonblicksbilder, snapshots, samt återställning av dessa. De är inbakade på filsystemnivå och förlitar sig inte på extern mjukvara, vilket eliminerar en potentiell felkälla när filer backas upp eller återställs.
Då ZFS har hand om hela pipelinen med lagring finns introduceras skräddarsydda RAID-lösningar i form av RAID-Z. Med RAID-Z erbjuds fyra RAID-lägen som inkluderar självläkning och checksums för all data, samtliga immuna mot ”RAID write hole”-problematiken där felaktiga eller avbrutna skrivningar till disk leder till att datan inte kan användas till återställning vid ett diskhaveri i RAID-konfigurationen.
ZFS lovar alltså i korta drag att vara det ultimata filsystemet och den ultimata volymhanteraren på samma gång. Låt oss gräva vidare.
RAID och risker med ZFS
Efter en kort introduktion kan vi konstatera att ZFS alltså för med sig deduplicering och funktioner för datahantering i enterprise-klass, något det gör helt licensfritt. Att funktionen kräver mycket primärminne är sannolikt en petitess när kostnaden för extra RAM ställs mot en potentiell dataförlust även för ett litet bolag eller en hemanvändare.
ZFS har dock en nackdel i form av hur expansion av lagringspoolerna fungerar. Varje pool består av en eller flera VDEV, virtual devices, vilka i sin tur består av en eller fler fysiska lagringsenheter. Här kan enheterna köras i klassisk RAID0, eller RAID-Z1, RAID-Z2 eller RAID-Z3 i ”diagonal paritet”, där siffran refererar hur många block data som allokeras till paritet, snarare än hela diskar.
Kort summerat ser RAID-Z1 till att en VDEV kan klara en havererad disk, Z2 två diskar medan Z3 klarar upp till tre diskhaverier utan dataförlust. En ZFS-pool kan innehålla ett flertal VDEV, och här kommer den första stora fallgropen – om en VDEV havererar tar den hela poolen med sig. Undvik med andra ord VDEV:ar bestående av enkla diskar.
Den andra stora nackdelen är att det inte är möjligt att lägga till diskar i en VDEV. För att expandera en VDEV måste istället diskarna i denna bytas ut en efter en, där RAID-Z-konfigurationen byggs om på nytt efter varje disk byts ut. Kontentan är att en NAS med ZFS helst ska fyllas upp till brädden med lagringsenheter direkt för en stor VDEV med önskad paritet från start, då gradvis utbyggnation inte låter sig göras smidigt.
En ytterligare VDEV kan givetvis skapas och läggas till i lagringspoolen, men att köra uppemot ett dussin lagringsenheter i en VDEV är inga som helst problem. Avslutningsvis gör sig alltså ZFS bäst om du har möjlighet att fylla din nätverkslagring med de diskar du har utrymme för redan från start. Väljer du att göra på något annat sätt kommer ett onödigt stort antal diskar användas som parity drives, utan vilka hela poolen äventyras.
ZFS och RAM
Stödet för ZFS är relativt utbrett idag. Filsystemet stöds förutom av Linux-kärnan och populära distributioner likt Ubuntu även av Unix-liknande operativsystem likt MacOS och FreeBSD. Kanske av störst vikt för den avancerade hemanvändaren är stödet i det populära NAS-operativsystemen FreeNAS och TrueNAS, som gör det möjligt för vem som helst att bygga sin egen filserver med ZFS.
Kommersiella aktörer å sin sida bygger enheter för nätverkslagring (NAS) på sina anpassade Linux-distributioner. Bland hemenheter saknas generellt ZFS-stöd till följd av de stora minnesmängderna som krävs för att fullt ut nyttja dedupliceringen och den relativt höga kunskapströskeln gällande VDEV-konfiguration, men inte heller bland enheter riktade mot företag med stora mängder RAM är ZFS vida tillgängligt.
QNAP stödjer ZFS i sina företagsenheter med operativsystemet QuTS Hero, vilket bolaget går så långt som att kalla ”ZFS-baserat”. I dokumentationen för QuTS Hero specificeras att det inte är möjligt att lägga till enskilda diskar i en existerande RAID-konfiguration, medan ett matnyttigt whitepaper bjuder på information om hur lagringspooler och mängden RAM hänger samman.
Den som vill köra riktigt stora lagringspooler gör bäst i att ha mycket primärminne, men QNAP menar att en pool på upp till 256 TB, alternativt två små om upp till 32 TB inte är ett problem, ens med 8 GB RAM. Större lagringspooler ”kommer fungera tillförlitligt, men med lägre prestanda” konstaterar QNAP, och kör ett experiment med fem hårddiskar i en RAID0-konfiguration, där SSD-enheter utgör en annan lagringspool.
Resultatet med 16 GB RAM istället för 8 GB är konsekvent högre skrivprestanda, redan vid en ”medelstor” lagringspool om 35 TB och en SSD-pool på en och samma enhet. Anledningen är att funktionerna för datareduktion, däribland deduplicering, bygger på ett stort antal tabeller som används av filsystemet. Dessa tabeller ökar i storlek med lagringspoolen och läses bäst från RAM för optimal prestanda.
Även vid konfigurationen av cache spelar mängden primärminne stor roll. ZFS stödjer till skillnad från andra populära filsystem i NAS-enheter enbart läs-cache, L2ARC på ZFS-språk. Läsförfrågningar som är nära att skrivas över i RAM spolas istället för ut i tomma intet till cache-poolen om en sådan finns och kan således snabbare kommas åt vid nya förfrågningar.
Mängd RAM | Rekommenderad SSD-cache (L2ARC) |
32 GB | 1 TB |
64 GB | 2 TB |
128 GB | 4 TB |
256 GB | 8 TB |
1 TB | 30 TB |
4 TB | 120 TB |
Like all complicated features, deciding whether L2ARC is effective or not requires a strong understanding of your storage environment, performance goals, and the software you’re using.
– TrueNAS
Där QNAP rekommenderar i runda slängar 1:32-förhållande mellan installerat primärminne och cache-pool är TrueNAS mindre svepande och menar istället att det beror på typen av arbetslast. Däremot noterar TrueNAS att ”multipla L2ARC-enheter hjälper till att reducera latens och höja prestanda” – medan medan speciella cache-SSD:er och NVM Express-enheter i enterprise-klass rekommenderas för maximal prestanda vid sekventiella läsningar eller strömning av data.
Avslutningsvis ska det noteras att ZFS blint förlitar sig på att data i primärminnet är korrekt. En studie genomförd vid University of Wisconsin–Madison landade i att filsystemet är ”robust mot en rad diskfel”, men att ”ZFS är mindre motståndskraftigt mot minnesfel, vilka kan leda till att korrupt data returneras till applikationer eller systemkrascher”.
Testsystem: QNAP TS-h973AX-32G
Passande nog har QNAP skickat oss samma enhet som bolaget baserat sina ZFS-whitepapers på, en TS-h973AX-32G. Det vi med 100 procents säkerhet kan utläsa ur modellnamnet är att den första siffran (9) i modellnamnet anger antalet lagringsplatser, X står för nätverksuppkoppling om 10 Gbit och suffixet 32G står för mängden primärminne.
Av de nio lagringsplatserna är fem stycken av 3,5-tumstyp med SATA 6,0 Gbps. Samma SATA 6,0 Gbps stöds också av de fyra 2,5-tumsplatserna, medan de övre två också stödjer NVM Express över PCI Express 3.0 med sina U.2-anslutningar. Här är tanken att ett par enterprise-diskar vid behov ska installeras för cache, om maximal läsprestanda önskas. En USB 3.2 Gen 2×1-anslutning (10 Gbit/s) finns i fronten med en snabbknapp för säkerhetskopiering från ansluten enhet.
Till nätverket ansluts TS-h973AX med en, eller två, av tre tillgängliga anslutningar. De dubbla 2.5 GbE-anslutningarna stödjer port trunking, vilket medger upp till 5 Gbit/s mot resten av nätverket, medan en 10 GbE-anslutning också står till buds. Tre USB 3.2 Gen 2×1 (10 Gbit/s), en med Typ-C-anslutning samt en fyrpins 12V-anslutning finns också att tillgå på baksidan.
TS-h973AX är också en av relativt få NAS-enheter med en AMD Ryzen-processor, i detta fall en Embedded V1500B med fyra kärnor, åtta trådar och klockfrekvenser upp till 2,2 GHz. De 32 GB DDR4-minne som förinstallerats är av SO-DIMM-typ, i en konfiguration om 2 × 16 GB. Dessvärre bjuder QNAP inte på felkorrigerande minne av ECC-typ, vilket stöds av processorn.
Hela kalaset kyls av en 140 millimeter stor fläkt, vars uppgift primärt är att suga ut den varma luft som de nio lagringsenheterna skapar. Processorn får nöja sig med en aluminiumkylfläns och passiv konvektion – vilket sannolikt räcker och blir över trots att flänsen inte sitter i ett direkt drag från fläkten. Ryzen V1500B har en konfigurerbar TDP (Thermal Design Power) mellan 12 och 25 watt, med ett rekommenderat värde om 16 watt från AMD självt.
Under vårt testande använde vi ett urval av diskar som råkade vara tillgängliga vid testtillfället – dubbla WD140EDGZ (14 TB), två WD120EMFZ (12 TB) en Seagate SV35 3 TB, samt fyra SSD:er i form av Samsung 870 EVO 1 TB, i brist på U.2-enheter. Den som hängt med och förstått ZFS inbyggda begränsningar gällande VDEV och lagringspoolens uppbyggnad förstår att det här inte är en optimal topologi.
TS-h973AX-32G: ZFS i praktiken
De flesta som sätter tänderna i en NAS-enhet med ZFS-stöd vet förhoppningsvis vad de ger sig in på. Semi14, som rutinerade hårdvarutestare tänker istället ”hur svårt kan det vara?” och kastar oss in med huvudet före i TS-h973AX – innan vi ens påbörjade denna artikel och hade koll på begränsningarna med ZFS.
QNAP ger vid en första uppstart av TS-h973AX möjligheten att välja mellan operativsystemen QTS (för hemanvändare med ext4 och utbyggbara RAID-konfigurationer) och QuTS Hero (med ZFS, för avancerade användare). Utöver att QuTS Hero endast stödjer ZFS skiljer sig såvitt vi kan utröna ingenting i funktionalitet.
Att börja bygga VDEV:ar är precis som att bygga en lagringspool i normalfallet – operativsystemet meddelar dig att du har diskar som inte gör någon nytta och guidar dig igenom processen. Vid första möjliga tillfälle innan vi bekantat oss med RAID-Z och VDEV:ar på djupet, tog vi vårt första snedsteg av intresse för maximering av lagringsutrymmet. Vi skapade två par RAID-Z1 med 14 TB- respektive 12 TB-diskarna.
En RAID-konfiguration begränsas av den minsta diskens storlek, varför en RAID-Z1 med samtliga av de största diskarna hade gett oss 36 TB utrymme, med tolerans för en havererad disk. Dumt nog var 12 TB-diskarna installerade i en annan NAS-enhet när vi i vår iver inledde konfigureringen, med resultatet att vi istället fick två VDEV med RAID-Z1 om 14 respektive 12 TB. Rookie mistake, som de säger i staterna.
Då SSD-enheterna endast är på 1 TB styck delades även de upp i två RAID-Z1-konfigurationer som ger oss 1 TB utrymme vardera. Det ena paret agerar läs-cache, det andra paret blir VDEV nummer tre i poolen. Kvar är den ensamma disken om 3 TB, som QNAP i sin dokumentation tydligt varnar inte kan läggas till i en befintlig VDEV.
Vi vet också (nu när vi kommit så här långt i artikeln) att en enda havererad VDEV tar hela poolen med sig om den havererar – den ensamma disken är med andra ord i limbo och ett slöseri med resurser och utrymme. Lär av våra våra misstag med ZFS och se till att fulla ut en lagringspool med samtliga diskar din enhet stödjer innan du bygger en VDEV.
Inbyggt i QNAP:s Storage & Snapshots är också ett användbart verktyg för testande av diskar. Förutom att läsa SMART-data och varna vid fel kan också prestandatester köras för att avgöra sekventiell läsprestanda såväl som IOPS (Input/Output Operations Per Second, antalet kommandon till disk). Det är ingen nyhet att SSD-enheter fullkomligt krossar mekaniska hårddiskar i överföringshastighet, IOPS och latens, varför de är utmärkta för cache i sammanhang likt nätverkslagring.
TS-h973AX-32G: Övrig mjukvara
En NAS-enhet är givetvis mer än filsystemet det kör, och QNAP i likhet med andra tillverkare av nätverkslagring gör en stor sak av sina backuplösningar och vikten av att köra 3-2-1-strategin för att backa upp data. Grundidén är att minst tre kopior av viktig data ska finnas, varav två kopior läggs på olika enheter på hemmaplan och en på annan ort.
Med hjälp av den inbyggda mjukvaran Hybrid Backup Sync 3 (HBS 3) kan data enkelt backas upp, synkroniseras och återställas, både från och till lokala enheter, fjärrenheter och molnet. Vi förde till exempel enkelt över data från en annan NAS-enhet till TS-h973AX utan huvudbry. För synkronisering från en PC erbjuder QNAP mjukvara för Windows, Mac OS och Linux, och HBS 3 låter dig schemalägga jobben.
Ögonblicksbilder, snapshots, är en självklar del av att backa upp dina filer. Trots att ZFS gör detta till en del av filsystemet krävs externa verktyg för att skapa och återställa snapshots. QNAP hanterar ZFS-ögonblicksbilder på precis samma sätt som i NAS-enheter för hemanvändare, de nås genom Storage & Snapshots, där användare kan välja hur ofta snapshots tas och för vilka lagringspooler samt hur många versioner som sparas.
Stöd för LXD-, Docker- och Kata-containers finns också inbyggt i Container Station. I korta drag körs isolerade Linux-tjänster, eller för den delen hela Linux-operativsystem i en egen sandlåda som sedan kan konfigureras efter tycke och smak. Möjligheterna här är oändliga, men undertecknad nöjer sig såhär långt med en container att köra Pihole i, för att sedan använda NAS-enheten som DNS-server utan att exponera hela enheten mot Internet.
Den som söker plug and play-lösningar kan i App Center enkelt hitta en rad applikationer, varav de flesta är från QNAP själva. Här finns det mesta för att enkelt sätta upp FTP-servrar, SSL-certifikat, multimediahantering och rentav appar för produktivitet om någon får för sig att vilja hantera nätverkslagrade dokument direkt på enheten.
Den med stora mängder foton kan intressera sig extra för Qumagie, en fotohanterare med maskininlärning som gör det enkelt att sortera foton på personer, objekt och platser som figurerar i bilderna. Appar för att synkronisera Android- och IOS-enheter direkt mot NAS-enheten finns också, och därifrån kan de enkelt delas med utomstående.
Att äga sin hemövervakningslösning är också en naturlig sak att göra med nätverkslagring i hemmet. Här kan QVR Elite med sina tillägg vara av intresse. Det är inte gratis – men jämfört med andra prenumerationsbaserade hemövervakningar kopplade till bolag med tveksam hantering av videoströmmar låter det sig göras billigare. Priset är 1,99 USD per månad, per videoström, där den stora vinningen är att ingen utomstående har tillgång till inspelad video. ”AI”-stödda funktioner för analys och smart sökning av videoströmmarna går också att köpa till, till en engångskostnad.
Slutledning
Undertecknads tanke för någon månad sedan var ”varför erbjuder inte alla NAS-tillverkare ZFS till sina kunder?” – fram till efterforskningarna inför denna artikel började. QNAP ska ha all heder för att de ger användare möjligheten att köra ZFS med sitt operativsystem QuTS Hero, men samtidigt är det en produkt som kräver sin entusiast eller sitt proffs.
TS-h973AX-32G är en trevlig bekantskap, och själva operativsystemet QuTS Hero är extremt likt QTS för hemanvändare som vi är bekanta med tidigare. Allt du behöver för en hemmaserver i overkill-klass eller en filserver för det lilla eller medelstora företaget finns här. Men väljs ZFS som filsystem finns fallgropar – såväl som fördelar.
De största fördelarna hos ZFS ligger i dess inbyggda funktioner för datareduktion som deduplicering sparar dyrbart lagringsutrymme. Särskilt märkbara blir kostnadsbesparingarna i de fall SSD-baserad nätverkslagring driftsätts, då en betydligt mindre andel av lagringsutrymmet kommer tas upp av dubbletter av filer.
Två nackdelar med ZFS är istället relaterade till VDEV-implementationen. Det är inte möjligt att bygga ut en RAID i efterhand med enstaka diskar, utan all lagring bör installeras i den tänkta enheten direkt för att minska andelen diskar som behöver dedikeras för paritet. Att en havererad VDEV skjuter hela lagringspoolen i sank är också ett potentiellt gigantiskt problem – undvik ensamma diskar till varje pris.
Gällande QNAP:s enhet TS-h973AX-32G påstår vi att det är dumsnålt att inte utrusta en enhet som har ZFS som största säljargument med felkorrigerande ECC-minne. Enheten kostar närmare 20 000 kronor i svensk handel, och för de pengarna får vi en Zen 1-baserad fyrkärnig processor från 2018 byggd på 14 nanometer, 32 GB DDR4-minne och 9 lagringsplatser.
Två av lagringsplatserna må vara U.2-kompatibla och mjukvaran från QNAP är kapabel till mycket, men ZFS mår bäst av att köras tillsammans med ECC-minne. Med ZFS räcker ett enda bitfel för att filsystemet ska vägra låta dig nyttja filen med felet. Om felaktig data skrivs till disk kommer denna sannolikt korrigeras av filsystemets inbyggda redundans – men om data med fel hamnar i eller skapas av primärminnet för att sedan skrivas till disk har du istället gett felet redundans och låst dig ute från sagda data.
Att komma igång med TS-h973AX-32G och att köra avancerade tjänster likt containers och automatiserad backup är busenkelt. Den som inte är van med Linux gör sannolikt rätt i att läsa dokumentation innan start. Mjukvara som inte erbjuds av QNAP självt i App Center kan sannolikt köras i en container, vilket gör att enheten är extremt anpassningsbar till graden att det nästan enbart är fantasin som sätter gränser.
Vi råder bara prospektiva ZFS-användare att ha en sak i åtanke – driftsätt maximalt antal diskar i en och samma VDEV från start för att maximera nyttan du har av filsystemet och lagringshanteringen. ZFS kan mycket väl vara rätt för dig om du väger in dess nackdelar redan från start.