Jeg, som mange andre MacBook Pro-brukere, ble møtt med problemet med utilstrekkelig internminne. For å være mer presis var rMBP-en jeg brukte daglig utstyrt med en SSD med en kapasitet på bare 256 GB, noe som naturligvis ikke var nok i lang tid.
Og da jeg på toppen av alt annet begynte å spille inn videoer under flyturene, ble situasjonen bare verre. Volumet av opptakene som ble filmet etter slike flyvninger var 50+ GB, og min dårlige 256 GB SSD ble veldig snart fylt opp, og tvang meg til å kjøpe en ekstern 1TB-stasjon. Etter ett år kunne den imidlertid ikke lenger håndtere mengden data jeg genererte, for ikke å nevne mangelen på redundans og sikkerhetskopiering gjorde den uegnet for å være vert for viktig informasjon.
Så på et tidspunkt bestemte jeg meg for å bygge en stor NAS i håp om at dette systemet skulle vare i minst et par år uten å kreve en ny oppgradering.
Jeg skrev denne artikkelen først og fremst som en påminnelse om nøyaktig hva jeg gjorde og hvordan jeg gjorde det i tilfelle jeg trenger å gjøre det igjen. Jeg håper at det vil være nyttig for deg også hvis du bestemmer deg for å gjøre det samme.
Kanskje det er lettere å kjøpe?
Så vi vet hva vi ønsker å få, spørsmålet gjenstår: hvordan?
Jeg så først på kommersielle løsninger og så spesielt på Synology, som skulle gi de beste NAS-systemene av forbrukerkvalitet på markedet. Kostnaden for denne tjenesten viste seg imidlertid å være ganske høy. Det billigste 4-bay systemet koster $300+ og inkluderer ikke harddisker. I tillegg er den interne fyllingen av et slikt sett i seg selv ikke spesielt imponerende, noe som stiller spørsmål ved dens virkelige ytelse.
Da tenkte jeg: hvorfor ikke bygge en NAS-server selv?
Finne en passende server
Hvis du skal sette sammen en slik server, må du først og fremst finne riktig maskinvare. En brukt server bør være ganske egnet for denne bygningen, siden vi ikke trenger mye ytelse for lagringsoppgaver. Blant de nødvendige tingene bør vi merke oss en stor mengde RAM, flere SATA-kontakter og gode nettverkskort. Siden serveren min vil fungere i stedet for min faste bolig, har støynivået også betydning.
Jeg startet mitt søk på eBay. Selv om jeg fant mye brukt Dell PowerEdge R410/R210 der for under $100, etter å ha erfaring med å jobbe i et serverrom, visste jeg at disse 1U-enhetene bråket for mye og ikke var egnet for hjemmebruk. Som regel er tårnservere ofte mindre støyende, men dessverre var det få av dem på eBay, og de var alle enten dyre eller understrøms.
Det neste stedet å se var Craiglist, hvor jeg fant noen som solgte en brukt HP ProLiant N40L for bare $75! Jeg var kjent med disse serverne, som vanligvis koster rundt $300 selv brukt, så jeg sendte en e-post til selgeren i håp om at annonsen fortsatt var aktiv. Etter å ha lært at dette var tilfelle, dro jeg, uten å tenke to ganger, til San Mateo for å hente denne serveren, noe som ved første øyekast definitivt gledet meg. Den hadde minimal slitasje og bortsett fra litt støv var alt annet flott.
Bilde av serveren, umiddelbart etter kjøpet
Her er spesifikasjonene for settet jeg kjøpte:
- prosessor: AMD Turion(tm) II Neo N40L dual-core prosessor (64-bit)
- RAM: 8 GB ikke-ECC RAM (installert av tidligere eier)
- Blitz: 4 GB USB-stasjon
- SATA-kontakter: 4 + 1
- NIC: 1 Gbps innebygd NIC
Unødvendig å si, til tross for at den er flere år gammel, er spesifikasjonen til denne serveren fortsatt overlegen de fleste NAS-alternativer på markedet, spesielt når det gjelder RAM. Litt senere oppgraderte jeg til og med til 16 GB ECC med økt bufferstørrelse og økt databeskyttelse.
Velge harddisker
Nå har vi et utmerket fungerende system, og det gjenstår bare å velge harddisker for det. Åpenbart, for de $75 fikk jeg bare selve serveren uten HDD, noe som ikke overrasket meg.
Etter å ha gjort litt research fant jeg ut at WD Red HDD-er er best egnet for å kjøre NAS-systemer 24/7. For å kjøpe dem henvendte jeg meg til Amazon, hvor jeg kjøpte 4 eksemplarer på 3 TB hver. I utgangspunktet kan du koble til hvilken som helst HDD du foretrekker, men sørg for at de har samme kapasitet og hastighet. Dette vil hjelpe deg å unngå mulige RAID-ytelsesproblemer i det lange løp.
System oppsett
Jeg tror at mange vil bruke systemet til sine NAS-bygg
Å installere CentOS på USB er ganske enkelt - bare spesifiser USB som oppstartskilden, og ved oppstart vil installasjonsveiviseren lede deg gjennom alle stadiene.
RAID-bygg
Etter å ha installert CentOS, installerte jeg også ZFS på Linux etter det som er oppført
Når denne prosessen var fullført, lastet jeg ZFS Kernel-modulen:
$ sudo modprobe zfs
Og opprettet RAIDZ1-arrayen ved å bruke 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
Vær oppmerksom på at her bruker jeg ID-ene til harddiskene i stedet for visningsnavnene deres (sdx
) for å redusere sjansen for at de ikke klarer å montere etter oppstart på grunn av en bokstavendring.
Jeg la også til ZIL- og L2ARC-cache som kjører på en separat SSD, og delte den SSD-en i to partisjoner: 5 GB for ZIL og resten for L2ARC.
Når det gjelder RAIDZ1, tåler den 1 diskfeil. Mange hevder at dette bassengalternativet ikke bør brukes på grunn av sannsynligheten for at den andre disken svikter under RAID-gjenoppbyggingsprosessen, noe som kan føre til tap av data. Jeg ignorerte denne anbefalingen, siden jeg regelmessig laget sikkerhetskopier av viktige data på en ekstern enhet, og feilen i til og med hele matrisen kan bare påvirke tilgjengeligheten til dataene, men ikke sikkerheten. Hvis du ikke har muligheten til å ta sikkerhetskopier, vil det være bedre å bruke løsninger som RAIDZ2 eller RAID10.
Du kan bekrefte at opprettelsen av bassenget var vellykket ved å kjøre:
$ sudo zpool status
и
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data
Som standard monterer ZFS det nyopprettede bassenget direkte til /
, som generelt er uønsket. Du kan endre dette ved å kjøre:
zfs set mountpoint=/mnt/data data
Herfra kan du velge å opprette ett eller flere datasett for å lagre dataene. Jeg opprettet to, en for Time Machine-sikkerhetskopi og en for delt fillagring. Jeg begrenset størrelsen på Time Machine-datasettet til en kvote på 512 GB for å forhindre endeløs vekst.
Optimalisering
zfs set compression=on data
Denne kommandoen aktiverer ZFS-komprimeringsstøtte. Komprimering bruker minimalt med CPU-kraft, men kan forbedre I/O-gjennomstrømningen betydelig, så det anbefales alltid.
zfs set relatime=on data
Med denne kommandoen reduserer vi antall oppdateringer til atime
for å redusere IOPS-generering ved tilgang til filer.
Som standard bruker ZFS på Linux 50 % av fysisk minne for ARC. I mitt tilfelle, når det totale antallet filer er lite, kan dette trygt økes til 90% siden ingen andre applikasjoner vil kjøre på serveren.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112
Deretter bruker
$ 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
...
Sette opp tilbakevendende oppgaver
jeg brukte
Installerer Netatalk
Konfigurasjonsoppsett
$ 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
Vær oppmerksom på det vol dbnest
er en stor forbedring i mitt tilfelle, siden Netatalk som standard skriver CNID-databasen til roten av filsystemet, noe som slett ikke var ønskelig siden hovedfilsystemet mitt kjører på USB og derfor er relativt tregt. Slå på vol dbnest
resulterer i å lagre databasen i volumroten, som i dette tilfellet tilhører ZFS-poolen og allerede er en størrelsesorden mer produktiv.
Aktiverer porter i brannmur
$ sudo firewall-cmd --permanent --zone=public --add-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp
sudo brannmur-cmd --permanent --zone=public --add-port=afpovertcp/tcp
Hvis alt var riktig konfigurert, skal maskinen din vises i Finder, og Time Machine skal også fungere.
Tilleggsinnstillinger
SMART overvåking
Det anbefales å overvåke statusen til diskene dine for å forhindre diskfeil.
$ sudo yum install smartmontools
$ sudo systemctl start smartd
Daemon for UPS
Overvåker ladingen til APC UPS og slår av systemet når ladningen blir kritisk lav.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsd
Maskinvareoppgradering
En uke etter å ha satt opp systemet begynte jeg å bli stadig mer bekymret for serverens ikke-ECC-minne. I tillegg, når det gjelder ZFS, vil ekstra minne for buffering være svært nyttig. Så jeg dro tilbake til Amazon hvor jeg kjøpte 2x Kingston DDR3 8GB ECC RAM for $80 hver og erstattet skrivebords-RAM-en installert av den forrige eieren. Systemet startet opp første gang uten problemer, og jeg sørget for at ECC-støtte var aktivert:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.
Resultat
Jeg ble veldig fornøyd med resultatet. Nå kan jeg hele tiden holde serverens 1Gbps LAN-tilkobling opptatt ved å kopiere filer, og Time Machine fungerer feilfritt. Så totalt sett er jeg fornøyd med oppsettet.
Totalkostnad:
- 1 * HP ProLiant N40L = $75
- 2 * 8 GB ECC RAM = $174
- 4 * WD Red 3 TB HDD = $440
Totalt = $ 689
Nå kan jeg si at prisen var verdt det.
Lager du dine egne NAS-servere?
Kilde: www.habr.com