Custruì un sistema Linux Home NAS à pocu costu

Custruì un sistema Linux Home NAS à pocu costu

Eiu, cum'è parechji altri utilizatori di MacBook Pro, era affruntatu cù u prublema di memoria interna insufficiente. Per esse più precisu, u rMBP chì aghju utilizatu ogni ghjornu era equipatu di un SSD cù una capacità di solu 256GB, chì, naturalmente, ùn era micca abbastanza per un bellu pezzu.

È quandu, in più di tuttu, aghju cuminciatu à registrà video durante i mo voli, a situazione hè solu peghju. U voluminu di filmati filmati dopu à tali voli era 50+ GB, è u mo poviru SSD 256GB s'hè pienu prestu, furzendu à cumprà una unità esterna 1TB. In ogni casu, dopu à un annu, ùn pudia più manighjà a quantità di dati chì aghju generatu, per ùn dì chì a mancanza di redundancy è a copia di salvezza l'hà fattu inadatta per l'ospitu di l'infurmazioni impurtanti.

Allora, à un puntu aghju decisu di custruisce un grande NAS in a speranza chì stu sistema durà almenu un paru d'anni senza avè bisognu di un altru aghjurnamentu.

Aghju scrittu stu articulu principarmenti cum'è un ricordu di esattamente ciò chì aghju fattu è cumu l'aghju fattu in casu chì aghju bisognu di fà di novu. Spergu chì serà utile ancu per voi se decide di fà u listessu.

Forse hè più faciule per cumprà?

Allora, sapemu ciò chì vulemu ottene, a quistione resta : cumu ?

Prima aghju guardatu solu suluzioni cummirciali è fighjatu in particulare à Synology, chì duverebbe furnisce i migliori sistemi NAS di u consumatore in u mercatu. Tuttavia, u costu di stu serviziu hè statu abbastanza altu. U più prezzu di u sistema di 4 bay costa $ 300 + è ùn include micca i discu duru. Inoltre, u riempimentu internu di un tali kit stessu ùn hè micca particularmente impressiunanti, chì mette in dubbitu u so veru rendiment.

Allora aghju pensatu: perchè ùn custruisce micca un servitore NAS stessu?

Truvà un servitore adattatu

Sè vo site per assemblà un tali servitore, allora prima di tuttu avete bisognu di truvà u hardware ghjustu. Un servitore utilizatu deve esse abbastanza adattatu per questa custruzzione, postu chì ùn avemu micca bisognu di assai prestazioni per i travaglii di almacenamento. Frà e cose necessarii, duvemu nutà una grande quantità di RAM, parechji connettori SATA è boni carte di rete. Siccomu u mo servitore travaglià in u locu di a mo residenza permanente, u nivellu di u rumore importa ancu.

Aghju cuminciatu a mo ricerca nantu à eBay. Ancu s'è aghju trovu assai Dell PowerEdge R410 / R210 usati per menu di $ 100, avè una sperienza di travaglià in una sala di servitore, sapia chì queste unità 1U facianu troppu rumore è ùn sò micca adattati per l'usu di casa. In regula, i servitori di torre sò spessu menu rumorosi, ma, sfurtunatamenti, ci n'eranu pocu in eBay, è eranu tutti o caru o sottumessi.

U prossimu postu per circà era Craiglist, induve aghju trovu qualchissia chì vende un HP ProLiant N40L usato per solu $ 75! Eru familiarizatu cù questi servitori, chì generalmente costanu circa $ 300 ancu utilizati, cusì aghju mandatu un email à u venditore in a speranza chì l'annunziu era sempre attivu. Dopu avè amparatu chì questu era u casu, eiu, senza pensà duie volte, sò andatu in San Mateu per ripiglià stu servitore, chì à u primu sguardu m'hà decisamente piacè. Avia un usu minimu è fora di un pocu di polvera, tuttu u restu era grande.

Custruì un sistema Linux Home NAS à pocu costu
Foto di u servitore, immediatamente dopu a compra

Eccu i specificazioni per u kit chì aghju compru:

  • CPU: Processore AMD Turion(tm) II Neo N40L Dual-Core (64-bit)
  • RAM: 8 GB RAM non ECC (installata da u pruprietariu precedente)
  • Flash: Unità USB 4 GB
  • Connettori SATA: 4 + 1
  • PONTE: NIC integrata à 1 Gbps

Inutili, malgradu l'età di parechji anni, a specificazione di stu servitore hè sempre superiore à a maiò parte di l'opzioni NAS in u mercatu, in particulare in quantu à RAM. Un pocu dopu, aghju ancu aghjurnatu à 16 GB ECC cù una dimensione di buffer aumentata è una prutezzione di dati aumentata.

Selezzione di discu duru

Avà avemu un sistema di travagliu eccellente è tuttu ciò chì resta hè di selezziunà i discu duru per questu. Ovviamente, per quellu $ 75 aghju solu u servitore stessu senza u HDD, chì ùn m'hà micca surprisatu.

Dopu avè fattu un pocu di ricerca, aghju scupertu chì i HDD WD Red sò più adattati per eseguisce sistemi NAS 24/7. Per cumprà, aghju vultatu à Amazon, induve aghju compru 4 copie di 3 TB ognunu. In fondu, pudete cunnette qualsiasi HDD chì preferite, ma assicuratevi chì sò di a stessa capacità è velocità. Questu vi aiuterà à evità pussibuli prublemi di rendiment RAID à longu andà.

Configurazione di u Sistema

Pensu chì parechji utilizanu u sistema per e so custruzzioni NAS FreeNAS, è ùn ci hè nunda di male in questu. Tuttavia, malgradu a pussibilità di stallà stu sistema in u mo servitore, aghju preferitu aduprà CentOS, postu chì u sistema ZFS in Linux hè inizialmente preparatu per un ambiente di produzzione, è in generale, a gestione di un servitore Linux hè più familiar per mè. Inoltre, ùn era micca interessatu à l'interfaccia fantastica è e funzioni furnite da FreeNAS - l'array RAIDZ è a spartera AFP eranu abbastanza per mè.

L'installazione di CentOS nantu à USB hè abbastanza simplice - basta à specificà u USB cum'è a fonte di boot, è dopu u lanciu, l'assistente di installazione vi guidà in tutte e so tappe.

RAID build

Dopu avè installatu cù successu CentOS, aghju ancu installatu ZFS in Linux in seguitu à u listinu passi quì.

Una volta stu prucessu hè cumpletu, aghju carricatu u modulu ZFS Kernel:

$ sudo modprobe zfs

È hà creatu u RAIDZ1 array usendu u cumandimu 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

Per piacè nutate chì quì aghju utilizatu l'ID di i discu duru invece di i so nomi di visualizazione (sdx) per riduce a probabilità di fallimentu di a muntagna dopu à u boot per un cambiamentu di lettera.

Aghju aghjustatu ancu ZIL è L2ARC cache in esecuzione in un SSD separatu, spliting that SSD in dui partizioni: 5GB per ZIL è u restu per L2ARC.

In quantu à RAIDZ1, pò sustene 1 fallimentu di discu. Parechje sustene chì sta opzione di piscina ùn deve esse usata per via di a probabilità di u sicondu discu fallimentu durante u prucessu di ricustruzzione RAID, chì pò purtà à a perdita di dati. Aghju ignoratu sta ricunniscenza, postu chì aghju fattu regularmente copie di salvezza di dati impurtanti nantu à un dispositivu remotu, è u fallimentu di ancu tutta l'array pò solu influenzà a dispunibilità di e dati, ma micca a so sicurità. Se ùn avete micca a capacità di fà una copia di salvezza, allora saria megliu aduprà suluzioni cum'è RAIDZ2 o RAID10.

Pudete verificà chì a creazione di a piscina hè stata riescita eseguendu:

$ sudo zpool status

и

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

Per automaticamente, ZFS monta direttamente a piscina appena creata /, chì in generale ùn hè micca desideratu. Pudete cambià questu eseguendu:

zfs set mountpoint=/mnt/data data

Da quì pudete sceglie di creà unu o più datasets per almacenà e dati. Aghju creatu dui, unu per a copia di salvezza di Time Machine è unu per l'almacenamiento di fugliale spartutu. Aghju limitatu a dimensione di u dataset di Time Machine à una quota di 512 GB per impedisce a so crescita senza fine.

Ottimizazione

zfs set compression=on data

Questu cumanda permette u supportu di compressione ZFS. A cumpressione usa una putenza minima di CPU, ma pò migliurà significativamente u throughput I / O, cusì hè sempre cunsigliatu.

zfs set relatime=on data

Cù stu cumandamentu, riducemu u numeru di l'aghjurnamenti atimeper riduce a generazione IOPS quandu accede à i schedari.

Per automaticamente, ZFS in Linux usa 50% di memoria fisica per ARC. In u mo casu, quandu u numeru tutale di schedari hè chjuca, questu pò esse aumentatu in modu sicuru à u 90%, postu chì nisuna altra applicazione serà in esecuzione nantu à u servitore.

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

Dopu aduprà arc_summary.py Pudete verificà chì i cambiamenti anu fattu effettu:

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

Configurazione di attività ricorrenti

Aghju utilizatu systemd-zpool-scrub per cunfigurà i timer di sistema per fà a pulizia una volta à settimana è zfs-auto-snapshot per creà automaticamente snapshots ogni 15 minuti, 1 ora è 1 ghjornu.

Installazione di Netatalk

nettale hè una implementazione open source di AFP (Protokollu di filing Apple). Dopu istruzioni ufficiali di installazione per CentOS, aghju literalmente ricevutu un pacchettu RPM assemblatu è installatu in solu un paru di minuti.

Configurazione di cunfigurazione

$ 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

nutate chì vol dbnest hè una mellura maiò in u mo casu, postu chì per difettu Netatalk scrive a basa di dati CNID à a radica di u sistema di filesystem, chì ùn era micca desideratu, postu chì u mo sistema di filesystem principale funziona in USB è hè dunque relativamente lento. Accendendu vol dbnest risultati in salvezza di a basa di dati in a ràdica Volume, chì in questu casu appartene à a piscina ZFS è hè digià un ordine di grandezza più pruduttivu.

Abilitazione di porti in 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
Se tuttu hè stata cunfigurata currettamente, a vostra macchina duveria apparisce in u Finder, è Time Machine deve ancu travaglià.

Paràmetri supplementari
Monitoraghju SMART

Hè ricumandemu di monitorà u statutu di i vostri dischi per prevene u fallimentu di u discu.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Daemon per UPS

Monitora a carica di l'UPS APC è spegne u sistema quandu a carica diventa criticamente bassa.

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

Upgrade di hardware

Una settimana dopu a stallazione di u sistema, aghju cuminciatu à diventà sempre più preoccupatu di a memoria non ECC di u servitore. Inoltre, in u casu di ZFS, a memoria supplementaria per u buffering serà assai utile. Allora aghju vultatu in Amazon induve aghju compru 2x Kingston DDR3 8GB ECC RAM per $ 80 ognunu è rimpiazzatu a RAM di desktop installata da u pruprietariu precedente. U sistema hà iniziatu a prima volta senza prublemi, è aghju assicuratu chì u supportu ECC hè attivatu:

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

risultatu

Eru assai cuntentu di u risultatu. Avà possu constantemente mantene a cunnessione LAN 1Gbps di u servitore occupata copiendu i fugliali, è Time Machine funziona perfettamente. Dunque, in generale, sò cuntentu di a stallazione.

U costu tutale:

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

Tuttu = $ 689

Avà possu dì chì u prezzu vale a pena.

Fate i vostri servitori NAS?

Custruì un sistema Linux Home NAS à pocu costu

Custruì un sistema Linux Home NAS à pocu costu

Source: www.habr.com

Add a comment