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.
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.
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
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 atime
for 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
$ 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
Netatalk installation
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 * HP ProLiant N40L = $75
- 2 * 8 GB ECC RAM = $174
- 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?
Kilde: www.habr.com