NAS4Free is de ideale software voor je zelfbouw NAS met onzettend veel mogelijkheden waarbij ZFS wel de belangrijkste optie is.

Ik liep al een tijdje met de gedachte rond om mijn harddisk-ruimte in mijn netwerk uit te breiden. Nu zijn er veel standaard (NAS) oplossingen beschikbaar in de markt (ReadyNAS, Synology, etc.), maar deze zijn vaak redelijk aan de prijs. Ik wilde minimaal een oplossing waarin ik 8 harddisks of meer kon plaatsen. Je komt dan bijvoorbeeld uit bij de Synology DS1812+, maar deze kost zonder harde schijven al minimaal Euro 850,=. Dat moest goedkoper kunnen dacht ik, dus ik besloot om zelf maar een NAS te gaan bouwen.

Hardware uitzoeken
Daar een NAS 24/7 draait leek het mij verstandig om een goede en zuinige voeding uit te kiezen. Je kunt dan niet om de Seasonic G-Series 360 heen. Deze heeft een Hoog rendement (80 PLUS Gold Certified) en staat aangeschreven om zijn uitstekende kwaliteit.

Verder moest er een kast uitgezocht worden die veel harde schijven kon herbergen. Fractal Design heeft een aantal mooie cases die veel 3.5″ cages heeft. Ik kwam uiteindelijk uit op de nieuwe Fractal Design Arc Midi R2 die als voordeel boven zijn voorganger heeft dat deze ook nog een extra harddisk LEDje heeft ;-).

Als moederbord zocht ik iets dat standaard al veel SATA poorten aan boord heeft. Het ASRock B75 Pro3-M is een erg bekend en veel gebruikt moederbord voor een zelfbouw NAS. Verder heeft deze nog een aantal uitbreidingssloten wat altijd handig kan zijn. Mocht ik bijvoorbeeld nog meer dan 8 harde schijven inbouwen, dan kan ik altijd nog een IBM ServeRAID M1015 SAS/SATA Controller inbouwen voor nog eens 8 harde schijven.

Daar ik wilde beginnen met 5 schijven van 3TB, besloot ik maar meteen om met voldoende geheugen te beginnen. Leidraad is om 1 GB geheugen per 1 TB harddisk ruimte in je systeem te hebben, dus ik koos voor 2 reepjes van 8 GB.

Uiteindelijk kwam het volgende op het boodschappen-lijstje te staan:

Fractal Design Arc Midi R2
ASRock B75 Pro3-M
Processor Intel Core i3 3220 (3.3GHz)
Corsair CMV16GX3M2A1333C9 (2 x 8 GB)
Startech.com2 Port USB Motherboard Header Adapter
5x WD 3TB S-ATA3 64MB WD30EZRX Green
3x Haiqoe S-ATA datakabel 50cm 2 stuks haaks latch
2x Silverstone SST-CP06 4x SATA
Seasonic G-Serie 360Watt

Alles bij elkaar zijn de kosten (exclusief harde schijven) hiervan rond de Euro 450,= wat een stuk minder is dan de Euro 850,= voor een Synology DS1812+. Verder heb ik nu ook een veel sneller systeem, meer geheugen en meer ruimte voor extra harde schijven.

Toen eindelijk alle spullen binnen waren moest het een en ander in elkaar gezet worden. Dat is altijd een leuk klusje. Uiteindelijk ziet het systeem er als volgt uit:

ZFS Filesysteem
Na wat onderzoek op Internet lees je dat ZFS het filesysteem van de toekomst is. Hoe meer ik over ZFS las hoe enthousiaster ik hier over werd.

Voordelen van ZFS versus legacy filesystems

  • Checksums waken over de integriteit van je bestanden, en in het geval dat er toch corruptie plaatsvindt zie je precies welke bestanden dit treft. Nooit meer ‘silent corruption’ dus!
  • Intelligente afhandeling van onleesbare sectoren (bad sectors) – deze worden automatisch gecorrigeerd door deze te overschrijven met redundante data indien beschikbaar. Met ZFS ben je vrijwel immuun voor het probleem van bad sectors wat steeds groter wordt met de stijgende datadichtheid.
  • Self Healing; het on-the-fly automatisch repareren van corruptie en bad sectors, mits er voldoende redundancy beschikbaar is zoals in een mirror of RAID-Z configuratie.
  • Dynamische stripesizes betekent dat ZFS niet kwetsbaar is voor de zogenaamde ‘write hole’; ZFS kent geen read-modify-write. Dit is een technisch belangrijk voordeel van RAID-Z boven RAID5 wat grote voordelen heeft op gebied van betrouwbaarheid én random write prestaties.
  • ZFS bewaakt de consistency van zijn filesystem en application data door transaction groups en ZFS Intent Log (ZIL); onverwachte stroomstoringen zouden nooit ZFS mogen beschadigen.
  • ZFS kan één of meerdere SSDs inzetten als intelligente caching (L2ARC) wat vergeleken kan worden met de Smart Response Technology (SRT) van Intel, wat je ook in staat stelt om een HDD te cachen met een SSD. Het verschil is dat ZFS dit kan doen zonder de betrouwbaarheid aan te tasten; als je SSD corrupt raakt wordt dit opgemerkt en wordt er van de HDD RAID array gelezen, Intel SRT en andere oplossingen kunnen dit niet en dus is deze feature niet helemaal veilig, in tegenstelling tot ZFS waar L2ARC geen risico toevoegt.
  • Snapshots zijn een verademing voor backups. Maak een snapshot en je kunt vrij rommelen, niet goed dan doe je een rollback. Het concept van een snapshot is al heel oud, maar de manier hoe het werkt bij ZFS maakt dat het gebruik ervan zeer flexibel werkt en heel economisch is met opslagruimte; alleen wijzigingen – de ‘delta’ – kosten opslagruimte.

Praktische argumenten

  • ZFS geeft je een betrouwbare RAID layer en zorgt dus dat je de foutgevoelige ouderwetse RAID layers volledig uitschakelt. Het filesystem zit ‘direct’ aan de disks en samen met checksums geeft dit je veel meer bescherming voor je bestanden.
  • ZFS bespaart je kosten omdat je geen dure TLER-schijven hoeft te kopen, geen hardware RAID en UPS/BBU. Gewone desktopschijven werken prima met ZFS op een gewone non-RAID controller.
  • ZFS kun je uitstekend als backup combineren. De snapshots zijn heel krachtig om incremental backups te maken. Het idee is dat je terug in de tijd kunt bladeren en zien hoe je bestanden toen waren. Dat is een krachtige feature om perongeluk deleted files of een virus die aan je bestanden knaagt af te dekken.
  • ZFS laat je lekker flexibel met data omgaan en data erop pleuren en ‘vergeten’; je hoeft er niet meer naar om te kijken. ZFS is heel onderhoudsarm dankzij de self-healing. Op een moment dat ZFS filesystemschade tegenkomt, repareert het dit vanzelf.

Nadelen

  • ZFS draait niet onder Windows en niet in volle glorie onder Linux. Alleen onder Solaris/IllumOS en FreeBSD kun je spreken van eerste klasse implementaties die bewezen stabiel zijn en goed ondersteund worden met actieve ontwikkelaars. Wel is ZFS makkelijk toegankelijk middels speciale ‘NAS’ operating systems zoals FreeNAS, ZFSGuru en NAS4Free.
  • ZFS is erg hongerig naar geheugen, je kunt het vanaf 512MB RAM gebruiken, maar dan knijp je ZFS wel enorm. Pas boven de 4 gigabyte dus praktisch 8GiB wordt ZFS in alle glorie ondersteund met standaard prefetching enabled. Dit is overigens specifiek voor FreeBSD. Bij Solaris geldt dat ZFS hier beter werkt op systemen met weinig geheugen zoals 2GB. Deze bron meldt als Rule of Thumb 1GB per schijf plus wat je nodig hebt voor applicaties voor het Solaris platform.
  • Je kan bij ZFS een bestaande RAID-Z (1/2/3) vdev niet uitbreiden met één of meer disks. Simpel gezegd: heb je een 4-disk RAID-Z dan kun je niet zomaar een disk bijpleuren en het een 5-disk RAID-Z maken – iets wat met traditioneel RAID wél kan: Online Capacity Expansion (OCE). Bij ZFS is het wel mogelijk om nieuwe vdev’s toe te voegen. Nadeel is dus wel, dat je (vaak) in een keer een flink aantal disks moet kopen als je RAID-Z gebruikt. Bij mirrorring heb je dat probleem niet omdat je hier wel van een enkele disk een mirror kunt maken en andersom.

 

Het idee met ZFS is dat je een aantal blok-devices (b.v. een harddisk) samenvoegt tot een vdev (met eventueel n-parity). Alle vdevs tesamen vormen als een stripe een pool. Zie ook het volgende overzicht:

Meer informatie over ZFS kun je vinden op de volgende URL’s:

Nas4Free
Ik besloot NAS4Free als embedded OS te gebruiken voor mijn NAS. Deze kun je gewoon op een bootable USB stick installeren.

Zoals gezegd gebruik in NAS4Free als embedded OS, na uitgebreid onderzoek op internet. De reden hiervoor is dat ik niet teveel andere taken op de zelfbouw NAS wil uitvoeren. Dat doe ik wel op mijn andere Linux Server in mijn netwerk. Voor mij kwam NAS4Free als beste uit de bus, temeer daar hier een groter team achter zit en deze een uitgebreid en actief forum heeft.
NAS4Free is een embedded Open Source Storage NAS (Network-Attached Storage) distibutie op basis van FreeBSD. Dit project is een voortzetting van het FreeNAS 7-serie project.

NAS4Free ondersteunt het delen over Windows, Apple en UNIX-achtige systemen. Het omvat ZFS V28, Software RAID (0,1,5), disk encryptie, SMART / e-mail rapporten etc. en heeft ondersteuning voor de volgende protocollen: CIFS (Samba), FTP, NFS, TFTP, AFP, RSYNC, Unison, iSCSI, HAST, CARP, Bridge, UPnP, en Bittorent (configureerbaar door webinterface). NAS4Free kan worden geïnstalleerd op Compact Flash / USB / SSD, harde schijf of worden opgestart van een LiveCD met een kleine USB voor het opslaan van de configuratie.

Nadat je NAS4Free hebt geinstalleerd moet je je harddisk formatteren als een ‘ZFS storage pool’. Vervolgens moet je deze samenvoegen tot een vdev die je tenslotte weer kunt toevoegen aan je Pool. Hierna heb ik SSH enabled voor mijn ZFS Server om zodoende een aantal directories te creëren in de Pool die ik middels CIFS/SMB (Windows) en NFS (Linux) beschikbaar stel aan mijn netwerk. Natuurlijk heb ik ook de FTP service enabled voor mijn Pool.

Erg prettig van NAS4Free vind ik de vele status-schermen. Zo kun je o.a. perfect de temperatuur van je harddisks in de gaten houden:

Hiernaast kun je ook S.M.A.R.T. enablen voor elke harddisk met uitgebreide informatie. In eerste instantie leek dit niet te werken, maar ik moest deze via de shell apart voor elke harddisk enablen met het commando:

smartctl -s on /dev/ada0
(en dit voor elke harddisk)

Je kunt ook nog een email account opgeven voor automatische emails voor events die jij instelt. De firmware (embedded OS) kan zelfs vanaf de WebUI geupdate worden. Maar er is nog zoveel meer mogelijk met NAS4Free wat ik nu allemaal ga uitzoeken.

Tot nu toe ziet het er allemaal perfect uit en verwacht ik nog veel plezier te beleven aan deze zelfbouw NAS!