Vybudovanie lacného domáceho NAS systému na Linuxe

Vybudovanie lacného domáceho NAS systému na Linuxe

Rovnako ako mnoho iných používateľov MacBook Pro som čelil problému nedostatočnej vnútornej pamäte. Aby som bol presnejší, rMBP, ktorý som používal denne, bol vybavený SSD s kapacitou len 256 GB, čo, prirodzene, dlho nestačilo.

A keď som popri všetkom začal natáčať videá počas mojich letov, situácia sa len zhoršila. Objem záberov natočených po takýchto letoch bol 50+ GB a môj úbohý 256GB SSD sa veľmi skoro zaplnil, čo ma prinútilo kúpiť si externý 1TB disk. Po jednom roku však už nezvládal množstvo dát, ktoré som generoval, nehovoriac o nedostatku redundancie a zálohovania, ktoré ho robilo nevhodným na hosťovanie dôležitých informácií.

V jednom momente som sa teda rozhodol postaviť veľký NAS v nádeji, že tento systém vydrží aspoň pár rokov bez potreby ďalšieho upgradu.

Tento článok som napísal predovšetkým ako pripomenutie toho, čo som presne urobil a ako som to urobil, pre prípad, že by som to potreboval zopakovať. Dúfam, že to bude užitočné aj pre vás, ak sa rozhodnete urobiť to isté.

Možno je to jednoduchšie kúpiť?

Takže, vieme, čo chceme získať, otázkou zostáva: ako?

Najprv som sa pozrel na komerčné riešenia a pozrel som sa najmä na Synology, ktorá mala poskytovať tie najlepšie NAS systémy pre spotrebiteľov na trhu. Náklady na túto službu sa však ukázali byť dosť vysoké. Najlacnejší 4-šachtový systém stojí 300 USD+ a neobsahuje pevné disky. Okrem toho samotná vnútorná náplň takejto súpravy nie je nijak zvlášť pôsobivá, čo spochybňuje jej skutočný výkon.

Potom som si pomyslel: prečo si nepostaviť server NAS sám?

Nájdenie vhodného servera

Ak sa chystáte zostaviť takýto server, musíte v prvom rade nájsť správny hardvér. Použitý server by mal byť pre túto zostavu celkom vhodný, pretože na úlohy úložiska nebudeme potrebovať veľký výkon. Medzi potrebnými vecami by sme si mali všimnúť veľké množstvo pamäte RAM, niekoľko konektorov SATA a dobré sieťové karty. Keďže môj server bude fungovať v mieste môjho trvalého bydliska, dôležitá je aj hlučnosť.

Začal som hľadať na eBay. Aj keď som tam našiel veľa použitých Dell PowerEdge R410/R210 za menej ako 100 dolárov, so skúsenosťami s prácou v serverovej miestnosti som vedel, že tieto 1U jednotky vytvárajú príliš veľa hluku a nie sú vhodné na domáce použitie. Vežové servery sú spravidla menej hlučné, ale na eBay ich bolo, žiaľ, málo a všetky boli buď drahé, alebo nedostatočne napájané.

Ďalším miestom, kam sa pozrieť, bol Craiglist, kde som našiel niekoho, kto predáva použitý HP ProLiant N40L len za 75 dolárov! Poznal som tieto servery, ktoré zvyčajne stoja okolo 300 dolárov, a tak som poslal predajcovi e-mail v nádeji, že reklama je stále aktívna. Keď som sa dozvedel, že to tak je, bez rozmýšľania som zamieril do San Mateo vyzdvihnúť tento server, ktorý ma na prvý pohľad rozhodne potešil. Mal minimálne opotrebovanie a okrem trochy prachu bolo všetko ostatné super.

Vybudovanie lacného domáceho NAS systému na Linuxe
Foto servera, ihneď po zakúpení

Tu sú špecifikácie súpravy, ktorú som si kúpil:

  • CPU: Dvojjadrový procesor AMD Turion(tm) II Neo N40L (64-bit)
  • RAM: 8 GB non-ECC RAM (nainštalovaný predchádzajúcim vlastníkom)
  • blesk: 4 GB USB kľúč
  • SATA konektory:4+1
  • NIC: 1 Gbps na doske NIC

Netreba dodávať, že napriek tomu, že je niekoľko rokov starý, špecifikácia tohto servera je stále lepšia ako väčšina možností NAS na trhu, najmä pokiaľ ide o RAM. O niečo neskôr som dokonca upgradoval na 16 GB ECC so zväčšenou veľkosťou vyrovnávacej pamäte a zvýšenou ochranou údajov.

Výber pevných diskov

Teraz máme vynikajúci pracovný systém a zostáva už len vybrať preň pevné disky. Je zrejmé, že za tých 75 dolárov som dostal iba samotný server bez HDD, čo ma neprekvapilo.

Po malom prieskume som zistil, že pevné disky WD Red sú najvhodnejšie na 24/7 spustenie systémov NAS. Aby som ich kúpil, obrátil som sa na Amazon, kde som si kúpil 4 kópie po 3 TB. V zásade môžete pripojiť akýkoľvek pevný disk, ktorý uprednostňujete, ale uistite sa, že majú rovnakú kapacitu a rýchlosť. To vám pomôže vyhnúť sa možným problémom s výkonom RAID z dlhodobého hľadiska.

Nastavenie systému

Myslím si, že mnohí využijú systém pre svoje zostavy NAS FreeNAS, a nie je na tom nič zlé. Napriek možnosti inštalácie tohto systému na môj server som však uprednostnil používanie CentOS, pretože systém ZFS na Linuxe je pôvodne pripravený na produkčné prostredie a vo všeobecnosti je mi správa linuxového servera známejšia. Okrem toho ma nezaujalo fešné rozhranie a funkcie, ktoré poskytuje FreeNAS – stačilo mi pole RAIDZ a zdieľanie AFP.

Inštalácia CentOS na USB je pomerne jednoduchá – stačí zadať USB ako bootovací zdroj a po spustení vás sprievodca inštaláciou prevedie všetkými jeho fázami.

Zostavenie RAID

Po úspešnej inštalácii CentOS som tiež nainštaloval ZFS na Linux podľa uvedeného kroky tu.

Po dokončení tohto procesu som načítal modul jadra ZFS:

$ sudo modprobe zfs

A vytvoril pole RAIDZ1 pomocou príkazu 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

Upozorňujeme, že tu používam ID pevných diskov namiesto ich zobrazovaných názvov (sdx), aby sa znížila šanca, že sa po zavedení systému nepodarí pripojiť kvôli zmene písmena.

Pridal som tiež vyrovnávaciu pamäť ZIL a L2ARC spustenú na samostatnom SSD, pričom som tento SSD rozdelil na dve partície: 5 GB pre ZIL a zvyšok pre L2ARC.

Čo sa týka RAIDZ1, ten vydrží 1 poruchu disku. Mnohí tvrdia, že táto možnosť fondu by sa nemala používať kvôli pravdepodobnosti zlyhania druhého disku počas procesu prestavby RAID, čo môže viesť k strate údajov. Ignoroval som toto odporúčanie, pretože som pravidelne robil záložné kópie dôležitých údajov na vzdialenom zariadení a zlyhanie čo i len celého poľa môže ovplyvniť iba dostupnosť údajov, nie však ich bezpečnosť. Ak nemáte možnosť vytvárať zálohy, potom by bolo lepšie použiť riešenia ako RAIDZ2 alebo RAID10.

Úspešnosť vytvorenia fondu môžete overiť spustením:

$ sudo zpool status

и

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

V predvolenom nastavení ZFS pripojí novovytvorený fond priamo do /, čo je vo všeobecnosti nežiaduce. Môžete to zmeniť spustením:

zfs set mountpoint=/mnt/data data

Tu si môžete vybrať vytvorenie jednej alebo viacerých množín údajov na uloženie údajov. Vytvoril som dva, jeden na zálohovanie Time Machine a jeden na zdieľané ukladanie súborov. Veľkosť dátového súboru Time Machine som obmedzil na kvótu 512 GB, aby som zabránil jeho nekonečnému rastu.

Optimalizácia

zfs set compression=on data

Tento príkaz povolí podporu kompresie ZFS. Kompresia využíva minimálny výkon procesora, ale môže výrazne zlepšiť I/O priepustnosť, preto sa vždy odporúča.

zfs set relatime=on data

Pomocou tohto príkazu znížime počet aktualizácií na atimena zníženie generovania IOPS pri prístupe k súborom.

ZFS v systéme Linux štandardne využíva 50 % fyzickej pamäte pre ARC. V mojom prípade, keď je celkový počet súborov malý, možno ho bezpečne zvýšiť na 90 %, pretože na serveri nebudú spustené žiadne iné aplikácie.

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

Potom pomocou arc_summary.py Môžete overiť, či sa zmeny prejavili:

$ 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
...

Nastavenie opakujúcich sa úloh

použil som systemd-zpool-scrub nakonfigurovať časovače systemd na vykonávanie čistenia raz týždenne a zfs-auto-snapshot automaticky vytvárať snímky každých 15 minút, 1 hodinu a 1 deň.

Inštalácia Netatalk

nettalk je open source implementácia AFP (Protokol podávania Apple). Sledovanie oficiálny návod na inštaláciu pre CentOS, doslova som za pár minút dostal zostavený a nainštalovaný balík RPM.

Nastavenie konfigurácie

$ 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

Vezmite prosím na vedomie, že vol dbnest je v mojom prípade veľké zlepšenie, keďže štandardne Netatalk zapisuje databázu CNID do koreňového adresára súborového systému, čo nebolo vôbec žiaduce, keďže môj hlavný súborový systém beží na USB, a preto je relatívne pomalý. Zapínanie vol dbnest má za následok uloženie databázy do Volume root, ktorý v tomto prípade patrí do fondu ZFS a je už rádovo produktívnejší.

Povolenie portov v bráne firewall

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

sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp
Ak bolo všetko nakonfigurované správne, váš stroj by sa mal zobraziť vo Finderi a Time Machine by mal tiež fungovať.

Ďalšie nastavenia
SMART monitorovanie

Odporúča sa monitorovať stav vašich diskov, aby ste predišli zlyhaniu disku.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Démon pre UPS

Monitoruje nabitie APC UPS a vypína systém, keď je nabitie kriticky nízke.

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

Aktualizácia hardvéru

Týždeň po nastavení systému som sa začal čoraz viac zaujímať o pamäť servera bez ECC. Navyše v prípade ZFS bude veľmi užitočná prídavná pamäť na ukladanie do vyrovnávacej pamäte. Tak som sa vrátil do Amazonu, kde som si kúpil 2x Kingston DDR3 8GB ECC RAM za 80 dolárov za kus a nahradil som stolnú RAM nainštalovanú predchádzajúcim vlastníkom. Systém sa prvýkrát spustil bez problémov a uistil som sa, že je aktivovaná podpora ECC:

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

Výsledok

Výsledok ma veľmi potešil. Teraz môžem neustále zamestnávať 1Gbps LAN pripojenie servera kopírovaním súborov a Time Machine funguje bezchybne. Celkovo som teda s nastavením spokojný.

Celková cena:

  1. 1 * HP ProLiant N40L = 75 USD
  2. 2 * 8 GB ECC RAM = 174 USD
  3. 4 * HDD WD Red 3 TB = 440 USD

Celkom = $ 689

Teraz môžem povedať, že cena stála za to.

Vytvárate si vlastné servery NAS?

Vybudovanie lacného domáceho NAS systému na Linuxe

Vybudovanie lacného domáceho NAS systému na Linuxe

Zdroj: hab.com

Pridať komentár