Sklapanje jeftinog kućnog NAS sustava na Linuxu

Sklapanje jeftinog kućnog NAS sustava na Linuxu

Ja, kao i mnogi drugi korisnici MacBook Pro, susreo sam se s problemom nedostatka interne memorije. Preciznije rečeno, moj svakodnevno korišteni rMBP bio je opremljen SSD-om dimenzija samo 256GB, što, naravno, nije bilo dovoljno na duže staze.

A kada sam osim toga počeo snimati video tijekom svojih letova, situacija se dodatno pogoršala. Količina snimljenog materijala nakon takvih letova iznosila je više od 50 GB, a moj nesretni SSD od 256GB vrlo brzo se napunio, prisiljavajući me da kupim vanjski disk od 1TB. Ipak, nakon godina dana, ni on više nije mogao podnijeti količine podataka koje sam generirao, a da ne spominjem da je nedostatak redundancije i sigurnosnog kopiranja činio neodgovarajućim za pohranu važnih informacija.

Dakle, jednog trenutka sam odlučio sastaviti NAS velike zapremine u nadi da će ovaj sustav izdržati barem nekoliko godina bez potrebe za novim nadogradnjama.

Ovaj članak sam napisao prije svega kao podsjetnik o tome što i kako sam radio u slučaju da mi ponovo zatreba. Nadam se da će i vama biti koristan ako se odlučite učiniti isto.

Možda je lakše kupiti?

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

Prvo sam se upoznao s komercijalnim rješenjima i razmatrao, među ostalima, tvrtku Synology, za koju se pretpostavljalo da nudi najbolje NAS sustave potrošačkog nivoa na tržištu. Međutim, cijena ovog servisa bila je prilično visoka. Najjeftiniji sustav s 4 utora košta više od 300 dolara, a tvrdi diskovi nisu uključeni. Osim toga, unutarnji dijelovi takvog paketa nisu posebno impresivni, što dovodi u pitanje njihovu stvarnu izvedbu.

Tada sam pomislio: zašto ne bih sam sastavio NAS server?

Traženje odgovarajućeg servera

Ako planirate sastaviti takav server, prvo je potrebno pronaći pravilne komponente. Za ovu konfiguraciju trebao bi odgovarati rabljeni server, jer za zadatke pohrane nije potrebna posebna izvedba. Od potrebnog treba istaknuti veliku količinu RAM-a, nekoliko SATA konektora i dobre mrežne kartice. Budući da će moj server raditi na mjestu mog stalnog boravka, razina buke također ima značaj.

Svoje istraživanje započeo sam na eBayu. Iako sam tamo pronašao mnogo polovnih Dell PowerEdge R410/R210 po cijeni ispod $100, s obzirom na iskustvo u radu s serverima, znao sam da ti 1U uređaji proizvode previše buke i nisu pogodni za kućnu upotrebu. Općenito, tower serveri su obično tiši, ali nažalost, na eBayu je bilo malo dostupnih, a svi su bili ili skupi ili slabih performansi.

Sljedeće mjesto za pretraživanje bio je Craiglist, gdje sam pronašao osobu koja prodaje polovnog HP ProLiant N40L za samo $75! Bio sam upoznat s tim serverima, koji čak i u polovnom stanju obično stoje oko $300, pa sam poslao poruku prodavaču nadajući se da je oglas još aktivan. Kada sam saznao da jest, odmah sam otišao u San Mateo po ovaj server, koji me je već na prvi pogled obradovao. Imao je minimalno habanje i, osim malog sloja prašine, sve ostalo je bilo odlično.

Sklapanje jeftinog kućnog NAS sustava na Linuxu
Fotografija servera odmah nakon kupnje

A evo specifikacije kompleta koji sam nabavio:

  • CPU: AMD Turion(tm) II Neo N40L Dual-Core procesor (64-bit)
  • RAM: 8 GB non-ECC RAM (instaliran od strane prethodnog vlasnika)
  • Flash: 4 GB USB pogon
  • SATA priključci: 4 + 1
  • NIC: 1 Gbps ugrađeni NIC

Nema potrebe ni spominjati da, unatoč nekoliko godina starosti, specifikacija ovog servera i dalje nadmašuje većinu NAS sistema dostupnih na tržištu, posebno u pogledu RAM-a. Nekoliko mjeseci kasnije čak sam izvršio nadogradnju na 16 GB ECC sa većim kapacitetom međuspremnika i poboljšanom zaštitom podataka.

Odabir tvrdih diskova

Sada imamo odličan funkcionalan sustav i ostaje nam da odaberemo tvrde diskove. Očito je da sam za svojih $75 dobio samo sam server bez HDD-a, što me nije iznenadilo.

Nakon malo istraživanja, otkrio sam da su HDD WD Red najbolji za rad s NAS sistemima 24/7. Za njihovu kupnju obratio sam se Amazonu, gdje sam nabavio 4 primjerka od 3 TB. U osnovi, možete povezati bilo koji HDD koji preferirate, ali obavezno pazite da budu iste veličine i brzine. To će vam pomoći da izbjegnete moguće probleme s performansama RAID-a u budućnosti.

Postavljanje sustava

Mislím da će mnogi koristiti sustav za svoje NAS montaže FreeNAS, i u tome nema ništa loše. Međutim, unatoč mogućnosti instalacije ovog sistema na vlastitom serveru, odlučio sam koristiti CentOS, jer je ZFS na Linuxu od početka spreman za proizvodnu okolinu, a i upravljanje Linux serverom mi je poznatije. Uz to, nije me zanimala modernizacija sučelja i funkcije koje nudi FreeNAS - bilo mi je dovoljno RAIDZ niza i dijeljenja putem AFP-a.

Instalirati CentOS na USB je prilično jednostavno - potrebno je samo odabrati USB kao izvor za pokretanje, a prilikom pokretanja instalacijski čarobnjak će vas provesti kroz sve njene faze.

Izrada RAID-a

Nakon uspješne instalacije CentOS-a, također sam instalirao ZFS na Linuxu, slijedeći navedene ovdje korake.

Po završetku ovog procesa, 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 prikazanih imena (sdx), kako bih smanjio šansu za neuspjeh njihovog montiranja nakon pokretanja zbog promjene oznaka slova.

Također sam dodao ZIL i L2ARC cache, koristeći poseban SSD, podijelivši taj SSD na dva dijela: 5GB za ZIL i ostatak za L2ARC.

Što se tiče RAIDZ1, on može izdržati kvar jednog diska. Mnogi tvrde da ovu vrstu niza ne treba koristiti zbog rizika od kvara drugog diska tijekom rekonstrukcije RAID-a, što može rezultirati gubitkom podataka. Međutim, ignorirao sam ovu preporuku jer sam redovito pravio 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 očuvanost. Ako nemate mogućnost pravljenja sigurnosnih kopija, bolje je koristiti rješenja kao što su RAIDZ2 ili RAID10.

Možete provjeriti uspješnost stvaranja niza tako da izvršite:

$ sudo zpool status

i

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

ZFS standardno montira upravo stvoreni niz izravno u /, što obično nije poželjno. To možete promijeniti izvršavanjem:

zfs set mountpoint=/mnt/data data

Ovdje možete odabrati stvaranje jednog ili više datasetova za pohranu podataka. Stvorio sam dva, jedan za Time Machine backup i drugi za zajedničko pohranjivanje datoteka. Veličinu Time Machine dataset-a ograničio sam na kvotu od 512 GB kako bih spriječio njegov beskonačni rast.

Optimizacija

zfs set compression=on data

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

zfs set relatime=on data

Ovom naredbom smanjujemo broj ažuriranja na atime, kako bismo smanjili generaciju IOPS-a prilikom pristupa datotekama.

Zadano, ZFS na Linuxu koristi 50% fizičke memorije za ARC. U mom slučaju, kada ukupan broj datoteka nije velik, ovaj volumen se može sigurno povećati na 90%, jer se na serveru ne pokreću 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
...

Konfiguracija ponavljajućih zadataka

Koristio sam systemd-zpool-scrub za postavljanje systemd timera za izvođenje čišćenja jednom tjedno i zfs-auto-snapshot za automatsko stvaranje snapshot-a stanja svakih 15 minuta, 1 sat i 1 dan.

Instalacija Netatalk

Netatalk je otvorena implementacija AFP (Apple Filing Protocol). Slijedeći službene upute za instalaciju za CentOSS, uspio sam doslovce u nekoliko minuta sastaviti i instalirati RPM paket.

Postavka konfiguracije

$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf 
;
; Netatalk 3.x konfiguracijska datoteka
;

[Global]
; Globalne postavke poslužitelja
mimic model = TimeCapsule6,106

; [Homes]
; regex za baznu mapu = /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

Napomena, kada vol dbnest je u mom slučaju značajno poboljšanje, budući da Netatalk prema defaultu zapisuje CNID bazu podataka u korijen datotečnog sistema, što je bilo vrlo nepoželjno, obzirom da se moja primarna datotečna sistema nalazi na USB-u, pa stoga radi relativno sporo. Aktiviranje vol dbnest dovodi do pohrane baze podataka u korijenu Volume-a, koji se u ovom slučaju odnosi na ZFS pool i već je redovno brži.

Omogućavanje portova u Firewall-u

$ 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 podešeno, vaš uređaj bi trebao biti vidljiv u Finderu, a Time Machine također bi trebao raditi.

Dodatne postavke
S.M.A.R.T monitoring

Preporučuje se pratiti status vaših diskova kako bi se spriječio njihovo otkazivanje.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Demon za UPS

Prati punjenje UPS-a APC i isključuje sustav kada punjenje postane kritično nisko.

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

Hardverska nadogradnja

Nakon tjedan dana od podešavanja sustava, počeo sam sve više brinuti o tome što je u poslužitelju instalirana memorija bez ECC-a. Osim toga, u slučaju ZFS-a, dodatna memorija za keširanje će itekako dobro doći. Stoga sam ponovo posjetio Amazon, gdje sam kupio 2x Kingston DDR3 8GB ECC RAM po $80 svaki i zamijenio desktop RAM koji je postavio prethodni vlasnik. Sustav se prvi put pokrenuo bez problema i uvjerio sam se da je podrška za ECC aktivirana:

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

Rezultat

Rezultat me jako obradovao. Sada mogu neprekidno opterećivati 1Gbps LAN vezu poslužitelja kopiranjem datoteka, a Time Machine radi besprijekorno. Tako da sam, u cjelini, zadovoljan podešavanjem.

Konačna cijena:

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

U konačnici = $689

Sada mogu reći da je cijena bila opravdana.

Da li sami pravite NAS poslužitelje?

Sklapanje jeftinog kućnog NAS sustava na Linuxu

Sklapanje jeftinog kućnog NAS sustava na Linuxu

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster