Opbygning af et billigt Linux Home NAS-system

Opbygning af et billigt Linux Home NAS-system

Jeg, som mange andre MacBook Pro-brugere, stod over for problemet med utilstrækkelig intern hukommelse. For at være mere præcis var den rMBP, jeg brugte dagligt, udstyret med en SSD på kun 256GB, hvilket selvfølgelig ikke var nok i lang tid.

Og da jeg begyndte at optage videoer under mine flyvninger, blev situationen kun værre. Mængden af ​​optagelser efter sådanne flyvninger var 50+ GB, og min uheldige 256 GB SSD fyldte meget hurtigt op, hvilket tvang mig til at købe et eksternt drev på 1 TB. Men efter et år kunne den ikke holde trit med de mængder data, jeg genererede, for ikke at nævne manglen på redundans og backup gjorde den uegnet til at hoste vigtig information.

Så på et tidspunkt besluttede jeg at bygge en NAS med stor kapacitet i håbet om, at dette system ville holde i mindst et par år uden at kræve endnu en opgradering.

Jeg skrev denne artikel primært som en påmindelse om præcis, hvad og hvordan jeg gjorde, hvis jeg skulle gøre det igen. Jeg håber, det vil være nyttigt for dig, hvis du beslutter dig for at gøre det samme.

Måske er det nemmere at købe?

Så vi ved, hvad vi ønsker at få, spørgsmålet er stadig hvordan?

Jeg så først på kommercielle løsninger og så især på Synology, som skulle levere de bedste NAS-systemer i forbrugerkvalitet på markedet. Men omkostningerne ved denne service var ret høje. Det billigste 4-bay system koster $300+ og inkluderer ikke harddiske. Derudover er den interne fyldning af et sådant sæt ikke særlig imponerende, hvilket sætter spørgsmålstegn ved dets reelle ydeevne.

Så tænkte jeg: hvorfor ikke selv bygge en NAS-server?

Find den rigtige server

Hvis du skal færdiggøre sådan en server, så skal du først og fremmest finde den rigtige hardware. En brugt server burde være i orden til denne build, da vi ikke har brug for meget ydeevne til lagringsopgaver. Af det nødvendige skal det bemærkes en stor mængde RAM, flere SATA-stik og gode netværkskort. Da min server vil arbejde på min faste bopæl, har støjniveauet også betydning.

Jeg startede min søgning på eBay. Selvom jeg fandt mange brugte Dell PowerEdge R410/R210'ere under $100 der, efter at have arbejdet i et serverrum, vidste jeg, at disse 1U-enheder var for støjende og ikke egnede til hjemmebrug. Som regel er tårnservere ofte mindre støjende, men desværre var der få af dem opført på eBay, og de var alle enten dyre eller underpowered.

Det næste sted at kigge var Craiglist, hvor jeg fandt en mand, der solgte en brugt HP ProLiant N40L for kun $75! Jeg var bekendt med disse servere, som normalt koster omkring $300 selv brugt, så jeg sendte en e-mail til sælgeren i håb om, at fortegnelsen stadig var oppe. Efter at have erfaret, at dette er tilfældet, tog jeg uden at tænke mig om to gange til San Mateo for at hente denne server, hvilket allerede ved første øjekast bestemt glædede mig. Den havde minimalt slid, og bortset fra en smule støv var alt andet fantastisk.

Opbygning af et billigt Linux Home NAS-system
Serverbillede, umiddelbart efter køb

Og her er specifikationen for det sæt, jeg købte:

  • CPU: AMD Turion(tm) II Neo N40L Dual-Core-processor (64-bit)
  • RAM: 8 GB ikke-ECC RAM (installeret af tidligere ejer)
  • Blink: 4 GB USB-drev
  • SATA stik: 4 + 1
  • NIC: 1 Gbps indbygget NIC

Det er overflødigt at sige, at på trods af at den er flere år gammel, overgår specifikationen af ​​denne server stadig de fleste NAS-muligheder på markedet, især med hensyn til RAM. Lidt senere opgraderede jeg endda til 16 GB ECC med mere bufferplads og bedre databeskyttelse.

Valg af harddiske

Nu har vi et fremragende fungerende system, og det er tilbage at vælge harddiske til det. For disse $75 fik jeg naturligvis kun selve serveren uden HDD, hvilket ikke overraskede mig.

Efter at have lavet lidt research fandt jeg ud af, at 24/7 NAS-drev er bedst egnede til WD Red HDD'er. For at købe dem henvendte jeg mig til Amazon, hvor jeg købte 4 eksemplarer af hver 3 TB. Faktisk kan du tilslutte enhver foretrukket HDD, men sørg for, at de har samme størrelse og hastighed. Dette vil hjælpe dig med at undgå potentielle RAID-ydeevneproblemer i det lange løb.

System opsætning

Jeg tror, ​​at mange vil bruge systemet til deres NAS builds. FreeNAS, og det er der ikke noget galt med. Men på trods af muligheden for at installere dette system på min server, foretrak jeg at bruge CentOS, da ZFS på Linux-systemet oprindeligt er forberedt til et produktionsmiljø, og generelt er jeg mere fortrolig med at administrere en Linux-server. Jeg var heller ikke interesseret i den smarte grænseflade og funktioner, som FreeNAS leverede - jeg var tilfreds med RAIDZ-arrayet og AFP-deling.

Installation af CentOS på USB er ret simpelt - angiv blot USB som opstartskilde, og når du starter vil installationsguiden guide dig gennem alle trinene.

RAID samling

Efter succesfuld installation af CentOS installerede jeg også ZFS på Linux ved at følge de anførte her trin.

Da denne proces var fuldført, indlæste jeg ZFS Kernel-modulet:

$ sudo modprobe zfs

Og oprettede et RAIDZ1-array ved hjælp af kommandoen zpool:

$ sudo zpool create data raidz1 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609145 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609146 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609147 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609148
$ sudo zpool add data log ata-SanDisk_Ultra_II_240GB_174204A06001-part5
$ sudo zpool add data cache ata-SanDisk_Ultra_II_240GB_174204A06001-part6

Bemærk, at her bruger jeg harddisk-id'er i stedet for deres viste navne (sdx) for at reducere risikoen for, at de ikke monteres efter opstart på grund af en bogstavændring.

Jeg tilføjede også ZIL og L2ARC cache, der kører på en separat SSD, og ​​opdelte denne SSD i to partitioner: 5GB til ZIL og resten til L2ARC.

Hvad angår RAIDZ1, kan den modstå 1 diskfejl. Mange hævder, at denne pooling-mulighed ikke bør bruges på grund af muligheden for, at en anden disk svigter under RAID-genopbygningen, som er fyldt med tab af data. Jeg forsømte denne anbefaling, fordi jeg regelmæssigt sikkerhedskopierede vigtige data på en fjernenhed, og svigt af selv hele arrayet kan kun påvirke tilgængeligheden af ​​data, men ikke deres sikkerhed. Hvis du ikke har mulighed for at lave sikkerhedskopier, så ville det være bedre at bruge løsninger som RAIDZ2 eller RAID10.

Du kan bekræfte, at puljen blev oprettet korrekt ved at køre:

$ sudo zpool status

и

$ sudo zfs list
NAME                               USED  AVAIL  REFER  MOUNTPOINT
data                               510G  7.16T   140K  /mnt/data

Som standard monterer ZFS den nyoprettede pool direkte på /hvilket generelt er uønsket. Du kan ændre dette ved at gøre:

zfs set mountpoint=/mnt/data data

Herfra kan du vælge at oprette et eller flere datasæt til at gemme dine data. Jeg oprettede to, en til Time Machine-sikkerhedskopien og en til den delte fillagring. Jeg begrænsede størrelsen af ​​Time Machine-datasættet til en kvote på 512 GB for at forhindre det i at vokse på ubestemt tid.

Optimering

zfs set compression=on data

Denne kommando aktiverer ZFS-komprimeringsunderstøttelse. Kompression bruger minimal CPU-kraft, men kan i høj grad forbedre I/O-gennemstrømningen, så det anbefales altid.

zfs set relatime=on data

Med denne kommando reducerer vi antallet af opdateringer til atimefor at reducere genereringen af ​​IOPS ved adgang til filer.

Som standard bruger ZFS på Linux 50 % af den fysiske hukommelse til ARC. I mit tilfælde, når det samlede antal filer er lille, kan dette beløb sikkert øges til 90%, da andre applikationer på serveren ikke kører.

$ cat /etc/modprobe.d/zfs.conf 
options zfs zfs_arc_max=14378074112

Så med hjælp arc_summary.py Du kan bekræfte, at ændringerne er trådt i kraft:

$ python arc_summary.py
...
ARC Size:				100.05%	11.55	GiB
	Target Size: (Adaptive)		100.00%	11.54	GiB
	Min Size (Hard Limit):		0.27%	32.00	MiB
	Max Size (High Water):		369:1	11.54	GiB
...

Opsætning af tilbagevendende opgaver

jeg brugte systemd-zpool-scrub at indstille systemd timere til at rydde op en gang om ugen, og zfs-auto-snapshot til automatisk at oprette snapshots hvert 15. minut, 1 time og 1 dag.

Netatalk installation

nettalk er en open source implementering af AFP (Apple-arkiveringsprotokol). Følge officielle installationsvejledninger til CentOS, på bare et par minutter fik jeg bygget og installeret RPM-pakken.

Konfigurationsindstilling

$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf 
;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
mimic model = TimeCapsule6,106

; [Homes]
; basedir regex = /home

; [My AFP Volume]
; path = /path/to/volume

; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes

[Datong's Files]
path = /mnt/data/datong
valid users = datong

[Datong's Time Machine Backups]
path = /mnt/data/datong_time_machine_backups
time machine = yes
valid users = datong

Bemærk, at vol dbnest er en stor forbedring i mit tilfælde, da Netatalk som standard skriver CNID-databasen til roden af ​​filsystemet, hvilket ikke var ønskeligt, da mit primære filsystem er på USB, og derfor er relativt langsomt. Tænder på det samme vol dbnest fører til at gemme databasen i Volume-roden, som i dette tilfælde tilhører ZFS-puljen og allerede er en størrelsesorden hurtigere.

Aktivering af porte i firewallen

$ sudo firewall-cmd --permanent --zone=public --add-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp

sudo firewall-cmd --permanent --zone=offentlig --add-port=afpovertcp/tcp
Hvis alt var sat op korrekt, så skulle din maskine dukke op i Finder, og Time Machine skulle også fungere.

Yderligere indstillinger
SMART overvågning

Det anbefales at overvåge status på dine diske for at forhindre dem i at fejle.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Dæmon til UPS

Overvåger opladningen af ​​APC UPS'en og lukker systemet ned, når opladningen bliver kritisk lav.

$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsd

Hardware opgradering

En uge efter opsætning af systemet begyndte jeg at bekymre mig mere og mere om ikke-ECC-hukommelse installeret på serveren. Derudover, i tilfælde af ZFS, vil yderligere hukommelse til buffering være meget nyttig. Så jeg henvendte mig til Amazon igen, hvor jeg købte 2x Kingston DDR3 8GB ECC RAM for $80 hver og erstattede den desktop-RAM, som den tidligere ejer havde installeret. Systemet startede op første gang uden problemer, og jeg sørgede for, at ECC-understøttelse var aktiveret:

$ dmesg | grep ECC
[   10.492367] EDAC amd64: DRAM ECC enabled.

Outcome

Resultatet gjorde mig meget glad. Nu kan jeg konstant indlæse serverens 1Gbps LAN-forbindelse ved at kopiere filer, og Time Machine fungerer upåklageligt. Så generelt er jeg tilfreds med opsætningen.

De samlede omkostninger:

  1. 1 * HP ProLiant N40L = $75
  2. 2 * 8 GB ECC RAM = $174
  3. 4*WD Rød 3TB HDD = $440

I alt = $ 689

Nu kan jeg sige, at prisen var det værd.

Laver du dine egne NAS-servere?

Opbygning af et billigt Linux Home NAS-system

Opbygning af et billigt Linux Home NAS-system

Kilde: www.habr.com

Tilføj en kommentar