Gebruik je Raspberry Pi als energiezuinige NAS

Neem een Raspberry Pi en een paar goedkope externe harde schrijven en je hebt het recept voor een ultra low-power netwerkopslag apparaat. Lees verder om te zien hoe je zelf een Raspberry Pi als energiezuinige NAS kunt gebruiken.

Benodigdheden

Waarom?

Het voordeel van een netwerkopslag apparaat dat altijd aanstaat is dat je altijd toegang tot je data hebt (of een backup kunt maken) van computers van zowel in als buiten je eigen netwerk. Het nadeel is dat je redelijk wat stroom kwijt bent, aangezien het apparaat 24/7 aanstaat. Voor een doorsnee server betaal je al gauw 150-175 euro aan stroomkosten. Een netwerkopslag apparaat gebaseerd op een Raspberry Pi gebruikt slechts zo’n 5 euro aan stroomkosten per jaar.

Oké, een ‘echte’ server heeft wat meer mogelijkheden, zoals meer opslagcapaciteit en een hoger snelheid. Echter, voor de meeste mensen is het voldoende om een simpele backup server te hebben en daar is de Raspberry Pi meer dan krachtig genoeg voor en bespaart een hoop kosten.

 

Wat heb je nodig?

Uiteraard heb je een Raspberry Pi nodig, voorzien van Raspbian software. Daarnaast heb je één USB harddisk nodig voor eenvoudige netwerk-backups. Dat is alles! Als je lokale gegevens-redundantie wilt hebben dan heb je twee (dezelfde) USB harddisks nodig.

In principe kun je iedere externe harddisk gebruiken die je toevallig hebt liggen, maar het meest ideaal is om een low-power schijf te gebruiken, aangezien het een van de doelen is om een energiezuinige NAS zelf op te zetten. Voordat we verder gaan moet je zelf bedenken je de Raspberry Pi NAS wilt gaan configureren. Je kunt uiteraard exact onderstaande stappen volgen, maar het is ook mogelijk om dingen te wijzigen, zodat de NAS precies aan jouw eisen voldoet.

We gaan gebruik maken van NTFS geformatteerde harde schijven. Het voordeel hiervan is dat je ze dan ook direct op een Windows computer kunt aansluiten, mocht je Raspberry Pi het een keer niet doen of als je snel veel data wilt kopiëren via USB 3.0. Daarnaast gaan we gebruik maken van Sambe voor de netwerk shares, ook vanwege de reden dat dit uitstekend samen gaat met Windows computers.

 

Harddisk voorbereiden en mounten

Het is tijd om de Pi in te gaan stellen als een NAS. Allereerst gaan we natuurlijk de harde schijven fysiek aansluiten op de USB poorten van de Raspberry Pi. De schijven krijgen de voeding via de USB poorten en zijn dus direct gereed voor gebruik.

Noot: In onderstaand voorbeeld gaan we uit van het gebruik van twee harddisks. Indien je besluit om slechts één harddisk te gaan gebruiken dan kun je bepaalde stappen uiteraard overslaan.

Al het werk gaan de doen via de terminal. Je kunt direct op de Raspberry Pi werken door LXTerminal in Raspbian te gebruiken of je kunt gebruik maken van SSH m.b.v. een programma als Putty, dat maakt verder geen verschil.

De eerste stap is om ervoor te zorgen dat Raspbian NTFS schijven gaat ondersteunen. Dit doen we met onderstaand commando:

sudo apt-get install ntfs-3g

Het duurt een minuut of twee, voordat alles packages zijn gedownload, uitgepakt en geïnstalleerd. Als de NTFS package geïnstalleerd is gaan we kijken naar de unmounted partities van de aangesloten externe harde schijven:

sudo fdisk -l

Je zal minimaal twee schijven zien. indien je twee USB schijven aangesloten heb voor data mirroring (zoals ik gedaan heb) dan zie je er drie:

De eerste schijf /dev/mmcb1k0 is de SD kaart in de Raspberry Pi, waar Raspbian op geïnstalleerd is. Hier gaan we uiteraard niets mee doen.

De tweede schijf, /dev/sda is onze eerste 1TB externe harddisk. De derde schijf, /dev/sdb is onze tweede 1TB harddisk. De partities van de schijven waar we in zijn geïnteresseerd zijn /sda1/ en /sdb1/. Schrijf de namen van de harde schijven ergens op.

Voordat we de schijven kunnen mounten moeten we een map aanmaken waar we  de schrijven naar kunnen mounten. Gemakshalve zullen we de map USBHDD1 en USBHDD2 gaan noemen voor ieder schijf:

sudo mkdir /media/USBHDD1 sudo mkdir /media/USBHDD2

Nadat de twee mappen zijn aangemaakt kunnen we de externe schijven mounten naar de locaties, door onderstaande commando’s in te geven:

sudo mount -t auto /dev/sda1 /media/USBHDD1 sudo mount -t auto /dev/sdb1 /media/USBHDD2

We hebben nu twee externe harddisks gemount naar de USBHDD1 en USBHDD2 mappen. Op beide schijven gaan nu een extra map aanmaken voor gedeelde mappen (op deze manier houden we alles overzichtelijk op de schijven). Geef onderstaande commando’s in:

sudo mkdir /media/USBHDD1/shares sudo mkdir /media/USBHDD2/shares

 

Samba installeren en configureren

We gaan nu Samba installeren, zodat de opslagruimte vanuit het gehele netwerk benaderbaar is:

sudo apt-get install samba samba-common-bin

Dit duurt een paar minuutjes en je moet een keer met Y bevestigen. Zodra Samba geïnstalleerd is gaan we het configureren. Uiteraard maken we eerst een back-up van het configuratiebestand:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old

Vervolgens gaan we het Samba configuratiebestand bewerken:

sudo nano /etc/samba/smb.conf

Dit commando opent de nano text editor, waar je eenvoudig wijzigingen in het bestand mee kunt maken. Je zal iets als onderstaand zien:

Eerst gaan we de workgroup identifier wijzigen (indien nodig). Standaard staat er workgroup = WORKGROUP. Mocht je een andere naam voor je thuisnetwerk gebruik verander het dan hier, anders hoef je niets tedoen.

De volgende stap is om user authentication aan te zetten voor de samba opslag, anders kan iedereen met toegang tot het netwerk, zoals gasten op het Wi-Fi netwerk, op de NAS komen. Scroll naar benenden in het Samba configuratiebestand, totdat je onderstaande ziet:

Haal het # symbool weg voor security = user, zodat gebruikersnaam/wachtwoord verificatie aanstaat voor Samba shares.

Vervolgens gaan we een nieuw blok toevoegen aan het configuratiebestand. Scroll bijna helemaal naar beneden en voeg de volgende tekst toe:

[Backup]
comment = Backup Folder
path = /media/USBHDD1/shares
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
read only = no

Noot: Het gene wat je tussen de haakjes op de eerste regel zet wordt de naam van de folder van de netwerk share. Als je iets anders dan “Backup” wilt wijzig het dan nu.

Druk op CTRL+X om af te sluiten, bevestig met Y als er gevraagd wordt om de wijzigingen te behouden en overschrijf het bestaande configuratiebestand. Terug in de terminal geef je onderstaand commando in om de Samba daemons te herstarten:

sudo /etc/init.d/samba restart

Gebruikersaccount aanmaken

Nu gaan we een gebruiker aanmaken die toegang kan hebben tot de samba shares van de Raspberry Pi. We maken een account aan met de gebruikersnaam backups en wachtwoord backups4ever. Uiteraard kun je een zelfbedachte gebruikersnaam en wachtwoord instellen . Geef onderstaande commando’s in:

sudo useradd backups -m -G users sudo passwd backups

Je moet nu twee keer het wachtwoord ingeven. Nadat het wachtwoord ingegeven is gaan we backups toevoegen als legitieme Samba gebruiker:

sudo smbpasswd -a backups

Voer het wachtwoord het backup account in als er om gevraagd wordt. Je hoeft de Samba daemon niet te herstarten, nadat je het gebruikersaccount aangemaakt hebt. We kunnen nu de netwerk share test met bv. een Windows computer.

Open Windows Verkenner, klik op Netwerk en je zal RASPBERRYPI zien staan als hostname. Klik vervolgens op de gedeelde map Backups:

Geef de inloggegevens in, zodra hier om gevraagd wordt (deze hebben we hierboven aangemaakt.

Indien alles goed gegaan is kom je in een lege map terecht. Als extra check maken we een bestandje aan op de computer:

In de terminal controleren we of het aangemaakte bestandje zichtbaar is. Dit doen we met onderstaande commando’s:

cd /media/USBHDD1/shares ls

hello-is-it-me-you-are-looking-for.txt staat in de directory; het is gelukt!

Tot slot volgt nog de laatste stap: bij een herstart van de Raspberry Pi willen we natuurlijk dat de externe harde schijven automatisch gemount worden.  Dit doen we door onderstaand commando in te geven in de terminal:

sudo nano /etc/fstab

In de tabel voegen we onderstaande regels toe:

/dev/sda1 /media/USBHDD1 auto comment=noatime,nofail,systemd.automount 0 0 /dev/sda2 /media/USBHDD2 auto comment=noatime,nofail,systemd.automount 0 0

Druk op CTRL+X om af te sluiten, druk op Y om de wijziginen op te slaan en overschrijf het bestaande bestand.

Indien je één harddisk gebruikt voor je NAS, zonder gegevensredundantie, ben je nu al klaar, geniet van je Raspberry Pi als energiezuinige NAS!

 

Configuratie van Raspberry Pi NAS met gegevensredundantie

De Raspberry Pi als energiezuinige NAS is nu verbonden met het netwerk, bestandsoverdracht werkt, maar er is nog één ding dat we missen. De tweede harddisk is geconfigureerd, maar heeft nog geen functie.

We gaan nu gebruik maken van twee simpele, maar erg handige Linux tools, namelijk rsync en cron. Met deze twee tools gaan we de Raspberry Pi als energiezuinige NAS configureren, zodat ’s nachts de bestanden in de /shares/ map van de ene naar de andere schijf gekopieerd worden. Dit doen we voor het geval één van de schijven stuk gaat.

Eerst moeten we rsync toevoegen aan de Raspbian installatie. Dit doen we met onderstaand commando:

sudo apt-get install rsync

Zodra rsync geïnstalleerd is gaan we een cron job instellen  om het proces van het kopiëren van USBHDD1 naar USBHDD2 te automatiseren. Geef onderstaand commando in:

sudo crontab -e

Je komt nu in een tabel van alle cron jobs. Voeg onderaan de volgende regel toe:

0 5 * * * rsync -av --delete /media/USBHDD1/shares /media/USBHDD2/shares/

Deze regel zorgt ervoor dat iedere dag om 05.00 uur, op iedere dag, de twee schijven met elkaar gesynchroniseerd worden. Let erop dat verwijderde bestanden op USBHDD1 ook automatisch worden verwijderd op USBHDD2.

Het is belangrijk dat je een tijdstip kiest op een moment dat de synchronisatie niet in conflict komt met andere netwerkactiviteit op de gedeelde mappen, zoals bijvoorbeeld een automatische backup of het maken van een complete image. Zorg ervoor dat je back-ups maakt voordat je gaat synchroniseren, dan worden de nieuwste back-ups altijd meegenomen.

Sluit het bestand af met CTRL-X en sla het bestand op. Indien je direct rsync wilt laten lopen, zodat de nachtelijke taak wat korter duurt, gebruik je onderstaand commando in de terminal:

rsync -av --delete /media/USBHDD1/shares/ /media/USBHDD2/shares/

Dit is alles! Het enige wat je nog na een dag of twee moet doen is kijken of de cron job uitgevoerd wordt en de data van /USBHDD1/shares/ in /USBHDD2/shares/ verschijnt.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *