Izrada jeftinog kućnog NAS sustava na Linuxu

Izrada jeftinog kućnog NAS sustava na Linuxu

Ja sam se, kao i mnogi drugi MacBook Pro korisnici, suočio s problemom nedovoljne interne memorije. Točnije, rMBP koji sam svakodnevno koristio bio je opremljen SSD-om kapaciteta samo 256 GB, što, naravno, nije bilo dovoljno dugo vremena.

A kada sam, povrh svega, počeo snimati videa tijekom letova, situacija se samo pogoršala. Količina snimljenog materijala nakon takvih letova bila je 50+ GB, a moj jadni SSD od 256 GB vrlo brzo se napunio, pa sam morao kupiti eksterni disk od 1 TB. Međutim, nakon godinu dana više nije mogao podnijeti količinu podataka koje sam generirao, a da ne spominjem nedostatak redundancije i sigurnosne kopije koji ga je učinio neprikladnim za smještaj važnih informacija.

Tako sam u jednom trenutku odlučio izgraditi veliki NAS u nadi da će ovaj sustav trajati barem nekoliko godina bez potrebe za novom nadogradnjom.

Ovaj sam članak prvenstveno napisao kao podsjetnik što sam točno učinio i kako sam to učinio u slučaju da to budem morao ponovno učiniti. Nadam se da će i vama biti od koristi ako se odlučite učiniti isto.

Možda je lakše kupiti?

Dakle, znamo što želimo dobiti, ostaje pitanje kako?

Prvo sam pogledao komercijalna rješenja, a posebno Synology, koji je trebao ponuditi najbolje NAS sustave za potrošače na tržištu. Međutim, pokazalo se da je cijena ove usluge prilično visoka. Najjeftiniji sustav s 4 ležišta košta više od 300 dolara i ne uključuje tvrde diskove. Osim toga, samo unutarnje punjenje takvog kompleta nije posebno impresivno, što dovodi u pitanje njegove stvarne performanse.

Tada sam pomislio: zašto ne bih sam napravio NAS poslužitelj?

Pronalaženje odgovarajućeg poslužitelja

Ako ćete sastaviti takav poslužitelj, prije svega morate pronaći pravi hardver. Rabljeni poslužitelj trebao bi biti sasvim prikladan za ovu izgradnju, budući da nam neće trebati puno performansi za zadatke pohrane. Od potrebnih stvari treba istaknuti veliku količinu RAM-a, nekoliko SATA konektora i dobre mrežne kartice. Budući da će moj poslužitelj raditi u mjestu mog stalnog prebivališta, razina buke također je važna.

Započeo sam svoju potragu na eBayu. Iako sam ondje našao mnogo rabljenih Dell PowerEdge R410/R210 za manje od 100 USD, s iskustvom rada u serverskoj sobi, znao sam da te jedinice od 1U stvaraju previše buke i da nisu prikladne za kućnu upotrebu. U pravilu su tower poslužitelji često manje bučni, ali nažalost, na eBayu ih je bilo malo i svi su bili ili skupi ili slabijeg kapaciteta.

Sljedeće mjesto koje sam trebao potražiti bio je Craiglist, gdje sam pronašao nekoga tko prodaje rabljeni HP ProLiant N40L za samo 75 USD! Bio sam upoznat s tim poslužiteljima, koji obično koštaju oko 300 USD čak i korišteni, pa sam prodavaču poslao e-poštu u nadi da je oglas još aktivan. Saznavši da je to tako, bez razmišljanja sam se uputio u San Mateo po ovaj server koji mi se na prvi pogled svakako svidio. Imao je minimalno trošenje i osim malo prašine, sve ostalo je bilo super.

Izrada jeftinog kućnog NAS sustava na Linuxu
Slika servera, odmah nakon kupnje

Ovo su specifikacije za komplet koji sam kupio:

  • CPU: AMD Turion(tm) II Neo N40L dvojezgreni procesor (64-bitni)
  • RAM: 8 GB non-ECC RAM (instalirao prethodni vlasnik)
  • Bljesak: USB pogon od 4 GB
  • SATA konektori:4+1
  • NIC: 1 Gbps ugrađeni NIC

Nepotrebno je reći, unatoč tome što je star nekoliko godina, specifikacije ovog poslužitelja još uvijek su superiornije od većine NAS opcija na tržištu, posebice u pogledu RAM-a. Nešto kasnije, čak sam nadogradio na 16 GB ECC s povećanom veličinom međuspremnika i povećanom zaštitom podataka.

Odabir tvrdih diskova

Sada imamo izvrstan radni sustav i preostaje samo odabrati hard diskove za njega. Očito, za tih 75 dolara dobio sam samo sam server bez HDD-a, što me nije iznenadilo.

Nakon malog istraživanja otkrio sam da su WD Red HDD-ovi najprikladniji za rad NAS sustava 24/7. Za kupnju sam se obratio Amazonu, gdje sam kupio 4 kopije od po 3 TB. Uglavnom, možete spojiti bilo koji HDD koji želite, ali provjerite jesu li istog kapaciteta i brzine. To će vam dugoročno pomoći da izbjegnete moguće probleme s performansama RAID-a.

Postavljanje sustava

Mislim da će mnogi koristiti sustav za svoje NAS nadogradnje FreeNAS, i nema ništa loše u tome. No, unatoč mogućnosti instaliranja ovog sustava na svoj poslužitelj, radije sam koristio CentOS, budući da je ZFS na Linux sustavu inicijalno pripremljen za produkcijsko okruženje, a općenito mi je upravljanje Linux poslužiteljem poznatije. Osim toga, nisam bio zainteresiran za otmjeno sučelje i značajke FreeNAS-a - RAIDZ niz i dijeljenje AFP-a bili su mi dovoljni.

Instalacija CentOS-a na USB vrlo je jednostavna - samo navedite USB kao izvor pokretanja, a nakon pokretanja čarobnjak za instalaciju će vas voditi kroz sve faze.

RAID izgradnja

Nakon uspješne instalacije CentOS-a, instalirao sam i ZFS na Linux prema navedenom korake ovdje.

Nakon što je ovaj proces dovršen, učitao sam ZFS kernel modul:

$ sudo modprobe zfs

I stvorio RAIDZ1 niz pomoću naredbe 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

Imajte na umu da ovdje koristim ID-ove tvrdih diskova umjesto njihovih imena za prikaz (sdx) kako bi se smanjila mogućnost da se ne uspiju montirati nakon dizanja zbog promjene slova.

Također sam dodao ZIL i L2ARC predmemoriju koja radi na zasebnom SSD-u, podijelivši taj SSD u dvije particije: 5 GB za ZIL i ostatak za L2ARC.

Što se tiče RAIDZ1, može izdržati 1 kvar diska. Mnogi tvrde da se ova opcija skupa ne bi trebala koristiti zbog vjerojatnosti kvara drugog diska tijekom procesa ponovne izgradnje RAID-a, što može dovesti do gubitka podataka. Zanemario sam ovu preporuku, budući da sam redovito izrađivao sigurnosne kopije važnih podataka na udaljenom uređaju, a kvar čak i cijelog niza može utjecati samo na dostupnost podataka, ali ne i na njihovu sigurnost. Ako nemate mogućnost izrade sigurnosnih kopija, onda bi bilo bolje koristiti rješenja poput RAIDZ2 ili RAID10.

Možete provjeriti je li stvaranje bazena bilo uspješno pokretanjem:

$ sudo zpool status

и

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

Prema zadanim postavkama, ZFS montira novostvoreni bazen izravno na /, što je općenito nepoželjno. Ovo možete promijeniti pokretanjem:

zfs set mountpoint=/mnt/data data

Odavde možete odabrati stvaranje jednog ili više skupova podataka za pohranu podataka. Napravio sam dva, jedan za sigurnosno kopiranje Time Machinea i jedan za dijeljenu pohranu datoteka. Ograničio sam veličinu skupa podataka Time Machinea na kvotu od 512 GB kako bih spriječio njegov beskrajni rast.

Optimizacija

zfs set compression=on data

Ova naredba omogućuje podršku za ZFS kompresiju. Kompresija koristi minimalnu snagu CPU-a, ali može značajno poboljšati I/O propusnost, stoga se uvijek preporučuje.

zfs set relatime=on data

Ovom naredbom smanjujemo broj ažuriranja na atimeza smanjenje generiranja IOPS-a prilikom pristupa datotekama.

Prema zadanim postavkama, ZFS na Linuxu koristi 50% fizičke memorije za ARC. U mom slučaju, kada je ukupan broj datoteka mali, to se može sigurno povećati na 90% budući da se na poslužitelju neće izvoditi druge aplikacije.

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

Zatim pomoću arc_summary.py Možete provjeriti jesu li promjene stupile na snagu:

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

Postavljanje ponavljajućih zadataka

Koristio sam systemd-zpool-scrub za konfiguriranje timera systemd za obavljanje čišćenja jednom tjedno i zfs-automatski snimak za automatsko stvaranje snimaka svakih 15 minuta, 1 sat i 1 dan.

Instaliranje Netatalka

nettalk je open source implementacija AFP-a (Apple protokol za arhiviranje). Praćenje službene upute za instalaciju za CentOS, doslovno sam dobio sastavljen i instaliran RPM paket u samo par minuta.

Postavljanje konfiguracije

$ 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

Imajte na umu da vol dbnest je veliko poboljšanje u mom slučaju, budući da prema zadanim postavkama Netatalk zapisuje CNID bazu podataka u korijen datotečnog sustava, što uopće nije bilo poželjno budući da moj glavni datotečni sustav radi na USB-u i stoga je relativno spor. Uključivanje vol dbnest rezultira spremanjem baze podataka u korijen volumena, koji u ovom slučaju pripada ZFS bazenu i već je za red veličine produktivniji.

Omogućavanje portova u vatrozidu

$ 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
Ako je sve ispravno konfigurirano, vaš bi se stroj trebao pojaviti u Finderu, a Time Machine bi također trebao raditi.

Dodatne postavke
PAMETNO praćenje

Preporuča se pratiti status vaših diskova kako biste spriječili kvar diska.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Daemon za UPS

Prati napunjenost APC UPS-a i isključuje sustav kada napunjenost postane kritično niska.

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

Nadogradnja hardvera

Tjedan dana nakon postavljanja sustava počeo sam postajati sve zabrinutiji zbog ne-ECC memorije poslužitelja. Osim toga, u slučaju ZFS-a, dodatna memorija za međuspremnik bit će vrlo korisna. Pa sam se vratio u Amazon gdje sam kupio 2x Kingston DDR3 8GB ECC RAM-a za 80 USD svaki i zamijenio RAM za stolno računalo koji je instalirao prethodni vlasnik. Sustav se prvi put pokrenuo bez ikakvih problema i uvjerio sam se da je ECC podrška aktivirana:

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

Rezultirati

Bio sam jako zadovoljan rezultatom. Sada mogu konstantno održavati 1Gbps LAN vezu poslužitelja zauzetom kopiranjem datoteka, a Time Machine radi besprijekorno. Dakle, općenito, zadovoljan sam postavom.

Ukupni trošak:

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

Ukupno = $ 689

Sada mogu reći da se cijena isplatila.

Izrađujete li vlastite NAS poslužitelje?

Izrada jeftinog kućnog NAS sustava na Linuxu

Izrada jeftinog kućnog NAS sustava na Linuxu

Izvor: www.habr.com

Dodajte komentar