Bouwe in goedkeap Linux Home NAS-systeem

Bouwe in goedkeap Linux Home NAS-systeem

Ik, lykas in protte oare MacBook Pro-brûkers, waard konfrontearre mei it probleem fan ûnfoldwaande ynterne ûnthâld. Om krekter te wêzen, wie de rMBP dy't ik deistich brûkte, foarsjoen fan in SSD mei in kapasiteit fan mar 256GB, wat, fansels, lang net genôch wie.

En doe't ik boppe al it oare begon fideo's op te nimmen tidens myn flechten, waard de situaasje allinich slimmer. It folume fan byldmateriaal filme nei sokke flechten wie 50+ GB, en myn earme 256GB SSD hiel gau fol, twingt my te keapjen in eksterne 1TB drive. Nei ien jier koe it lykwols net mear omgean mei de hoemannichte gegevens dy't ik genereare, om net te sprekken fan it gebrek oan redundânsje en reservekopy makke it net geskikt foar it hostjen fan wichtige ynformaasje.

Dat, op in stuit besleat ik in grutte NAS te bouwen yn 'e hope dat dit systeem op syn minst in pear jier soe duorje sûnder in oare upgrade te fereaskje.

Ik skreau dit artikel yn it foarste plak as in oantinken oan krekt wat ik dien en hoe't ik die it yn gefal ik moat dwaan it nochris. Ik hoopje dat it ek nuttich foar jo sil wêze as jo beslute itselde te dwaan.

Miskien is it makliker om te keapjen?

Dat, wy witte wat wy wolle krije, de fraach bliuwt: hoe?

Ik seach earst nei kommersjele oplossingen en seach benammen nei Synology, dy't de bêste NAS-systemen foar konsumintklasse op 'e merke soe leverje. Lykwols, de kosten fan dizze tsjinst die bliken frij heech. It goedkeapste systeem mei 4 baaien kostet $ 300+ en omfettet gjin hurde skiven. Dêrneist is de ynterne vulling fan sa'n kit sels net bysûnder yndrukwekkend, wat syn echte prestaasjes yn twifel bringt.

Doe tocht ik: wêrom net sels in NAS-tsjinner bouwe?

It finen fan in geskikte tsjinner

As jo ​​sa'n tsjinner sille gearstalle, dan moatte jo earst de juste hardware fine. In brûkte tsjinner soe frij geskikt wêze moatte foar dizze build, om't wy net folle prestaasjes nedich binne foar opslachtaken. Under de nedige dingen moatte wy in grut bedrach fan RAM, ferskate SATA Anschlüsse en goede netwurk kaarten. Sûnt myn tsjinner sil wurkje yn it plak fan myn permaninte wenplak, it lûd nivo is ek fan belang.

Ik begon myn sykjen op eBay. Hoewol't ik fûn in soad brûkte Dell PowerEdge R410 / R210 dêr foar under $ 100, hawwende ûnderfining wurkjen yn in tsjinner keamer, Ik wist dat dizze 1U ienheden makke tefolle lûd en wiene net geskikt foar thús gebrûk. As regel, toer tsjinners binne faak minder lawaaierich, mar, spitigernôch, der wiene pear fan harren op eBay, en se wiene allegear òf djoer of underpowered.

It folgjende plak om te sjen wie Craiglist, wêr't ik ien fûn dy't in brûkte HP ProLiant N40L ferkocht foar mar $ 75! Ik wie bekend mei dizze servers, dy't gewoanlik sawat $ 300 kostje sels brûkt, dus ik stjoerde de ferkeaper in e-post yn 'e hope dat de advertinsje noch aktyf wie. Nei't ik learde dat dit it gefal wie, gie ik, sûnder twa kear nei te tinken, nei San Mateo om dizze tsjinner op te heljen, wat my op it earste each definityf befredigde. It hie minimale wearze en útsein in bytsje stof, wie al it oare geweldich.

Bouwe in goedkeap Linux Home NAS-systeem
Foto fan de tsjinner, fuortendaliks nei oankeap

Hjir binne de spesifikaasjes foar it kit dat ik kocht:

  • CPU: AMD Turion(tm) II Neo N40L Dual-Core-prosessor (64-bit)
  • RAAM: 8 GB net-ECC RAM (ynstallearre troch eardere eigner)
  • Flits: 4 GB USB Drive
  • SATA Connectors:4+1
  • NIC: 1 Gbps on-board NIC

Unmooglik om te sizzen, nettsjinsteande it feit dat se ferskate jierren âld binne, is de spesifikaasje fan dizze tsjinner noch altyd superieur oan de measte NAS-opsjes op 'e merke, benammen yn termen fan RAM. In bytsje letter haw ik sels opwurdearre nei 16 GB ECC mei in ferhege buffergrutte en ferhege gegevensbeskerming.

Selektearje hurde skiven

No hawwe wy in poerbêst wurkjend systeem en alles wat bliuwt is om hurde skiven foar te selektearjen. Fansels krige ik foar dy $ 75 allinich de tsjinner sels sûnder de HDD, wat my net fernuvere.

Nei't ik in bytsje ûndersyk dien haw, fûn ik út dat WD Red HDD's it bêste binne foar it útfieren fan NAS-systemen 24/7. Om se te keapjen draaide ik my nei Amazon, wêr't ik 4 eksimplaren fan elk 3 TB kocht. Yn prinsipe kinne jo elke HDD ferbine dy't jo leaver hawwe, mar soargje derfoar dat se deselde kapasiteit en snelheid hawwe. Dit sil jo helpe om mooglike RAID-prestaasjesproblemen op 'e lange termyn te foarkommen.

Systeem opset

Ik tink dat in protte it systeem sille brûke foar har NAS-builds FreeNAS, en der is neat mis mei dy. Nettsjinsteande de mooglikheid om dit systeem op myn server te ynstallearjen, haw ik de foarkar om CentOS te brûken, om't it ZFS op Linux-systeem yn earste ynstânsje taret is op in produksjeomjouwing, en yn 't algemien is it behearen fan in Linux-tsjinner my bekender. Derneist wie ik net ynteressearre yn 'e fancy ynterface en funksjes levere troch FreeNAS - de RAIDZ-array en it dielen fan AFP wiene genôch foar my.

It ynstallearjen fan CentOS op USB is frij ienfâldich - spesifisearje gewoan USB as de bootboarne, en by it starten sil de ynstallaasjewizard jo liede troch al har stadia.

RAID bouwe

Nei suksesfolle ynstallaasje fan CentOS, haw ik ZFS ek ynstalleare op Linux nei de neamde stappen hjir.

Ienris dit proses wie foltôge, haw ik de ZFS Kernel-module laden:

$ sudo modprobe zfs

En makke de RAIDZ1-array mei it kommando 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

Tink derom dat ik hjir de ID's fan 'e hurde skiven brûke ynstee fan har werjeftenammen (sdx) om de kâns te ferminderjen dat se nei it opstarten net kinne mount troch in letterferoaring.

Ik haw ek ZIL- en L2ARC-cache tafoege dy't rint op in aparte SSD, en splitte dy SSD yn twa partysjes: 5GB foar ZIL en de rest foar L2ARC.

Wat RAIDZ1 oanbelanget, kin it 1 skiiffout ferneare. In protte stelle dat dizze swimbadopsje net brûkt wurde moat fanwegen de kâns dat de twadde skiif mislearret tidens it RAID-werbouproses, wat kin liede ta gegevensferlies. Ik negearre dizze oanbefelling, om't ik regelmjittich reservekopyen makke fan wichtige gegevens op in apparaat op ôfstân, en it mislearjen fan sels de heule array kin allinich de beskikberens fan 'e gegevens beynfloedzje, mar net har feiligens. As jo ​​​​net de mooglikheid hawwe om backups te meitsjen, dan soe it better wêze om oplossingen te brûken lykas RAIDZ2 of RAID10.

Jo kinne ferifiearje dat it meitsjen fan it swimbad suksesfol wie troch te rinnen:

$ sudo zpool status

и

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

Standert monteart ZFS it nij oanmakke swimbad direkt oan /, dat is oer it algemien net winske. Jo kinne dit feroarje troch te rinnen:

zfs set mountpoint=/mnt/data data

Hjirwei kinne jo kieze om ien of mear datasets te meitsjen om de gegevens op te slaan. Ik haw twa makke, ien foar Time Machine-backup en ien foar dielde triem opslach. Ik beheinde de grutte fan 'e Time Machine-dataset ta in kwota fan 512 GB om syn einleaze groei te foarkommen.

Optimalisaasje

zfs set compression=on data

Dit kommando makket ZFS-kompresje-stipe mooglik. Kompresje brûkt minimale CPU-krêft, mar kin de I / O-trochput signifikant ferbetterje, dus wurdt altyd oanrikkemandearre.

zfs set relatime=on data

Mei dit kommando ferminderje wy it oantal updates nei atimeom IOPS-generaasje te ferminderjen by tagong ta bestannen.

Standert brûkt ZFS op Linux 50% fan fysyk ûnthâld foar ARC. Yn myn gefal, as it totale oantal bestannen lyts is, kin dit feilich ferhege wurde nei 90%, om't gjin oare applikaasjes op 'e tsjinner sille rinne.

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

Dan brûke arc_summary.py Jo kinne ferifiearje dat de wizigingen effekt binne:

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

It opsetten fan weromkommende taken

ik brûkte systemd-zpool-scrub om systemd timers te konfigurearjen om ien kear yn 'e wike skjinmeitsjen út te fieren en zfs-auto-snapshot om automatysk snapshots te meitsjen elke 15 minuten, 1 oere en 1 dei.

Ynstallaasje fan Netatalk

nettalk is in iepen boarne ymplemintaasje fan AFP (Apple filing protokol). Folgjend offisjele ynstallaasje ynstruksjes foar CentOS, ik krige letterlik in gearstald en ynstalleare RPM-pakket yn mar in pear minuten.

Konfiguraasje opset

$ 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

notysje dat vol dbnest is in grutte ferbettering yn myn gefal, om't standert Netatalk de CNID-database skriuwt nei de root fan it bestânsysteem, wat hielendal net winsklik wie, om't myn haadbestânsysteem op USB rint en dêrom relatyf stadich is. Oan dwaan vol dbnest resultearret yn it bewarjen fan de databank yn de Volume root, dy't yn dit gefal heart by de ZFS pool en is al in folchoarder fan grutte mear produktyf.

It ynskeakeljen fan havens yn 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=publyk --add-port=afpovertcp/tcp
As alles goed konfigureare is, soe jo masine moatte ferskine yn 'e Finder, en Time Machine soe ek moatte wurkje.

Oanfoljende ynstellings
SMART monitoring

It is oan te rieden om de status fan jo skiven te kontrolearjen om skiiffalen te foarkommen.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Daemon foar UPS

Kontrolearret de lading fan 'e APC UPS en skeakelet it systeem út as de lading kritysk leech wurdt.

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

Hardware upgrade

In wike nei it ynstellen fan it systeem begon ik hieltyd mear soargen te wurden oer it net-ECC-ûnthâld fan 'e tsjinner. Derneist, yn it gefal fan ZFS, sil ekstra ûnthâld foar buffering heul nuttich wêze. Dat ik gie werom nei Amazon wêr't ik 2x Kingston DDR3 8GB ECC RAM kocht foar $ 80 elk en ferfong it buroblêd RAM ynstalleare troch de foarige eigner. It systeem boote de earste kear sûnder problemen, en ik soarge derfoar dat ECC-stipe wie aktivearre:

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

resultaat

Ik wie tige bliid mei it resultaat. No kin ik de 1Gbps LAN-ferbining fan 'e tsjinner konstant dwaande hâlde troch bestannen te kopiearjen, en Time Machine wurket perfekt. Dus, oer it algemien, bin ik bliid mei de opset.

De totale kosten:

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

Totaal = $ 689

No kin ik sizze dat de priis it wurdich wie.

Meitsje jo jo eigen NAS-tsjinners?

Bouwe in goedkeap Linux Home NAS-systeem

Bouwe in goedkeap Linux Home NAS-systeem

Boarne: www.habr.com

Add a comment