Med en Raspberry Pi og en USB-harddisk kan du forholdsvist nemt og hurtigt skabe en netværksharddisk til deling af små filer. Jeg bruger min til musikbibliotek for Sonos.
Alt efter hvilken Raspberry Pi enhed der bliver brugt som hjernen her, skal man ikke forvente de store hastigheder. Jeg forsøgte mig med den første Raspberry Pi som udkom i 2011, og den kunne kun levere hastigheder på 5MB/s (40Mbit). Det er ikke overvældende hastigheder, men det er nok til fx et musikbibliotek for dit Sonos system.
Til gengæld bruger denne løsning ikke meget strøm. Jeg har målt mellem 8 & 10 watt alt efter hvor meget trafik der var på netværksdrevet, hvilket må siges at være meget billigt i strøm, under 90kWh om året. Det er ikke mange basører når det bliver omregnet til kroner og ører
Opsætning af netværksdrev
Jeg har lænet mig meget op ad guiden fra PCMag: https://www.pcmag.com/how-to/how-to-turn-a-raspberry-pi-into-a-nas-for-whole-home-file-sharing, så vil du have en mere visuel gennemgang kan deres guide anbefales.
Det skal dog siges at jeg i denne gennemgang er meget liberal med sikkerhed og skriverettigheder. Så hav det i mente hvis du ikke er villig til at lukke netværksdrevet fuldt op for alt og alle på dit lokale netværk.
Jeg vil antage at du har installeret den seneste version af Raspberry Pi OS, og har opdateret den. Hvis ikke du har en Raspberry Pi klar kan guiden fra PCMag anbefales, til at komme i gang. Opdatering af din Raspberry Pi kan hurtigt klares med følgende kommando som vil tjekke for opdateringer, og derefter laver en fuld opgradering med apt full-upgrade.
sudo apt update && sudo apt full-upgrade -yf
Hvis du ønsker automatisk at holde din Raspberry Pi opdateret kan du opsætte et cronjob som gør dette for dig. Naviger først ind i din crontab:
sudo crontab -e
Og tilføj derefter følgende i bunden:
0 3 * * * sudo apt update && sudo apt full-upgrade -yf
0 5 * * * sudo apt -y --purge autoremove
5 5 * * * sudo apt autoremove
Dette opretter cronjobs der:
- Kører dagligt på faste intervaller
- Opdaterer alting kl. 3
- Rydder op i gamle filer kl. 5
Klargøring af disk
I forhold til montering af harddisk er der mange måder at gøre det på. Har du en helt normal ekstern harddisk er det bare at slutte den til en af USB-portene på din Raspberry Pi. Har du en 3.5″ aflagt “lille” mekanisk harddisk skal du have fat i en USB -> Sata adapter. Personligt bruger jeg den fra LogiLink, og den virker helt fint. Det vigtigste er at den får strøm andenstedsfra end fra USBen på din raspberry Pi. Min Raspberry kunne i hvert fald ikke levere strøm nok til en mekanisk harddisk.
Når din disk er koblet til din Raspberry Pi og du kan se den med
sudo fdisk -l
er det på tide at få den unmounted, formateret, og partitioneret. Her vil jeg igen anbefale guiden fra PCMag, der er ingen grund til at gentage hvad de allerede fint gennemgår hos dem.
Klargøring til mounting af disk
Med det ude af vejen, er det tid til at lave en mappe i linux som vi senere kan mounte vores usb harddisk til. Det er denne mappe vi senere kommer til at udstille gennem Samba. Jeg har valgt at oprette min mappe under /mnt/usb/
sudo mkdir /mnt/usb/
Herefter har jeg rekursivt sat chmod til 777 så jeg er sikker på at alle har skriveadgang til mappen. Ellers får vi potentielt problemer senere når vi vil overfører data til vores netværksdrev.
sudo chmod -R 777 /mnt/usb/
Mounting af disk
At mounte disken til vores nyoprettede mappe er forholdsvis nemt da det blot er en enkelt kommando:
sudo mount /dev/sda1 /mnt/usb
Men, dette er en engangsting. Hvis du nogensinde genstarter din Raspberry Pi, er denne konfiguration ikke gemt, og kommandoen skal manuelt køres igen. Denne slags manuelle vedligehold er ikke ligefrem ønskværdigt.
Med lidt hjælp fra DevConnected (https://devconnected.com/how-to-mount-and-unmount-drives-on-linux/) fandt jeg frem til fstab som kan automatisere dette for os fremadrettet.
Der er flere måder hvorpå man kan identificere de diske man ønsker at mounte. Mange ynder at bruge det unikke UUID for disken, men da jeg er sikker på at min disk engang dør, og ikke ønsker at skulle opdatere UUID hver gang jeg skifter harddisken ud, har jeg valgt blot at pege på den første enhed vi finder under dev. Nemlig sda1. Denne tilgang er ikke nødvendigvis favorabel for dig hvis du har flere diske eller USB-enheder tilkoblet, men i mit scenarie er det helt perfekt.
Først navigerer vi ind i fstab med nano
sudo nano /etc/fstab
Og derefter tilføjer vi følgende linje der fortæller hvilken disk vi ønsker at mounte, hvor den skal mountes, hvilket filsystem der skal bruges samt hvilke defaults der skal bruges.
/dev/sda1 /mnt/usb ext4 defaults,nofail 0 0
Når dette er gjort, dobbelttjek da at din nye konfiguration virker med kommandoen
sudo mount -a
Hvis du får fejlmeddelelser her, er det noget du bør undersøge inden du genstarter din Raspberry Pi. Ellers risikerer du at din Raspberry Pi ikke vil starte igen. Det oplevede jeg desværre et par gange.
Installation af Samba
For at vi kan få vores disk vist som et netværksdrev, skal vi have installeret Samba på vores raspberry pi, da det er denne protokol vi bruger til at udstille disken.
sudo apt install samba samba-common
Konfiguration af Samba
Nu hvor vi har klargjort disken, og installeret Samba, er vi klar til at konfigurere Samba, så vi får styret hvordan vi vil have vist vores netværksdrev.
I konfigurationen for samba har jeg navigeret til bunden af konfigurationsfilen, og sat det op som vist herunder. Jeg har bevidst blot ladet alting været åbent og usikkert. Jeg kører alligevel i forvejen med SMB1 (se mere længere nede).
sudo nano /etc/samba/smb.conf
[Music]
Comment = Pi shared folder
path = /mnt/usb
writeable = yes
create mask = 0777
directory mask = 0777
public=yes
Browseable = yes
Guest ok = yes
Sonos S1 og SMB
Hvis du vil bruge dit nye netværksdrev sammen med Sonos S1 skal du have åbnet op for SMB1, da dette er den protocol de gamle enheder snakker over. SMB1 er ikke sikkert, men hvis du vil bruge netværksdrevet til deling af musik, er det ikke et reelt problem.
Heldigvis er det nemt at slå SMB1 til på din Raspberry Pi. Det er blot at slå følgende til under global i konfigurationen for samba
sudo nano /etc/samba/smb.conf
[global]
# enable SMB1
client min protocol = NT1
server min protocol = NT1
# enable v1 authentication for Sonos access
ntlm auth=yes
For eksterne referencer omkring dette, se da disse sider
Kom i kontakt med mig