Zbira poceni domači NAS sistem na Linuxu

Zbira poceni domači NAS sistem na Linuxu

Kot sem mnogi drugi uporabniki MacBook Pro, sem se srečal s težavo pomanjkanja notranjega prostora. Natančneje, moj vsakodnevni rMBP je imel SSD s kapaciteto le 256 GB, kar seveda ni zadostovalo za daljše obdobje.

Ko sem poleg tega začel snemati videoposnetke med svojimi leti, se je situacija še poslabšala. Obseg posnetih materialov po takih letih je znašal več kot 50 GB, in moj ubogi SSD s 256 GB se je zelo hitro napolnil, kar me je prisililo, da sem kupil zunanji disk s kapaciteto 1 TB. Vendar pa je po enem letu tudi ta prenehal zadostovati moji količini podatkov, ne govorijoč o tem, da je pomanjkanje redundance in varnostnih kopij onemogočilo njegovo primernost za hrambo pomembnih informacij.

Tako sem se nekega trenutka odločil sestaviti NAS velikega obsega v upanju, da bo ta sistem zdržal vsaj nekaj let, ne da bi potreboval novo nadgradnjo.

Ta članek sem napisal predvsem kot opomnik na to, kaj natančno in kako sem storil, v primeru, da bi to moral storiti ponovno. Upam, da vam bo v pomoč, če se boste odločili za enako.

Je morda lažje kupiti?

Torej, vemo, kaj želimo doseči, a ostaja vprašanje, kako?

Najprej sem se seznanil s komercialnimi rešitvami in preučil podjetje Synology, ki naj bi ponujalo najboljše NAS sisteme za potrošnike na trgu. Vendar se je cena te storitve izkazala za precej visoko. Najcenejši sistem s 4 predali stane 300 USD+, pri čemer trdi diski niso vključeni. Poleg tega notranja oprema takšnega kompleta ni ravno impresivna, kar postavlja pod vprašaj njegovo dejansko zmogljivost.

Takrat sem pomislil: zakaj si ne bi sestavil NAS strežnika sam?

Iskanje primernega strežnika

Če nameravate sestaviti tak strežnik, morate najprej najti pravilno opremo. Za to sestavo bi lahko ustrezal uporabljen strežnik, saj za naloge shranjevanja ne potrebujemo posebne zmogljivosti. Med nujnimi zahtevami so velika količina RAM-a, več SATA priključkov in dobre omrežne kartice. Ker bo moj strežnik deloval na mestu mojega stalnega bivališča, je pomembna tudi raven hrupa.

Svoje iskanje sem začel na eBayu. Kljub temu, da sem tam našel veliko rabljenih Dell PowerEdge R410/R210, ki so stali manj kot 100 $, sem z izkušnjami v strežnikih vedel, da ti 1U modeli proizvajajo preveč hrupa in niso primerni za domačo uporabo. Na splošno so strežniki v tower formatu običajno tišji, a žal je bilo na eBayu na voljo le malo takšnih, in vsi so bili bodisi dragi bodisi slabo zmogljivi.

Naslednje mesto za iskanje je bil Craigslist, kjer sem našel človeka, ki je prodajal rabljen HP ProLiant N40L za samo 75 $! Poznal sem te strežnike, ki tudi v rabljenem stanju običajno stanejo okoli 300 $, zato sem poslal prodajalcu sporočilo v upanju, da je oglas še aktiven. Ko sem izvedel, da je, sem se takoj odpravil v San Mateo, da bi prevzel ta strežnik, ki me je že na prvi pogled zelo navdušil. Imel je minimalne znake obrabe in, razen majhne plasti prahu, je bilo vse ostalo odlično.

Zbira poceni domači NAS sistem na Linuxu
Fotografija strežnika takoj po nakupu

Tukaj so specifikacije kompleta, ki sem ga nabavil:

  • CPU: AMD Turion(tm) II Neo N40L Dual-Core Processor (64-bit)
  • RAM: 8 GB non-ECC RAM (nameščen s strani prejšnjega lastnika)
  • Flash: 4 GB USB Drive
  • SATA povezave: 4 + 1
  • NIC: 1 Gbps on-board NIC

Nimam kaj dodati, saj kljub večletni starosti specifikacija tega strežnika še vedno prevladuje nad večino NAS sistemov, ponujenih na trgu, zlasti po količini delovne pomnilnika. Kmalu sem celo nadgradil na 16 GB ECC z večjim pomnilnikom in izboljšano zaščito podatkov.

Izbira trdih diskov

Zdaj imamo odlično delujoči sistem in ostane mi le še, da izberem trde diske. Očitno sem za tistih 75 $ dobil le strežnik brez HDD, kar me ni presenetilo.

Po manjši raziskavi sem odkril, da so za NAS sisteme, ki delujejo 24/7, najbolj primerne HDD WD Red. Za nakup sem se obrnil na Amazon, kjer sem kupil 4 primerke po 3 TB. V bistvu lahko priključite kateri koli priljubljen HDD, vendar bodite pozorni, da so enake kapacitete in hitrosti. To vam bo pomagalo, da se izognete morebitnim težavam z zmogljivostjo RAID v prihodnosti.

Nastavitev sistema

Mislim, da bodo mnogi za svoje NAS sestavke uporabili sistem FreeNAS, in kar ni nič slabega. Kljub možnosti namestitve tega sistema na lastnem strežniku, sem raje uporabil CentOS, saj je sistem ZFS na Linuxu od začetka pripravljen za produkcijsko okolje, prav tako pa je upravljanje z Linux strežnikom zame bolj znano. Poleg tega me modni vmesnik in funkcije, ki jih ponuja FreeNAS, niso zanimale – zadoščal mi je RAIDZ niz in deljenje AFP.

Namestitev CentOS na USB je zadostna preprosta – dovolj je, da izberete USB kot vir za zagon, nato vas čarovnik za namestitev vodi skozi vse njegove korake.

Sestava RAID

Po uspešni namestitvi CentOS sem namestil tudi ZFS na Linuxu, sledil sem naštevanju korakov tukaj.

Po zaključku tega procesa sem naložil modul ZFS Kernel:

$ sudo modprobe zfs

In ustvaril sem spletni RAIDZ1 z ukazom 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

Upoštevajte, da tukaj uporabljam ID trdih diskov namesto njihovih prikazanih imen (sdx), da zmanjšam možnost napake pri montiranju po zagonu zaradi spremembe črkovne oznake.

Dodajam tudi ZIL in L2ARC predpomnilnik, ki delujeta na ločenem SSD-ju, pri čemer sem ta SSD razdelil na dve particiji: 5 GB za ZIL in preostanek za L2ARC.

Glede RAIDZ1 lahko obdrži odpoved enega diska. Mnogi trdijo, da tega tipa ribnika ni priporočljivo uporabljati zaradi verjetnosti, da bo drugi disk odpovedal med prestrukturiranjem RAID, kar lahko povzroči izgubo podatkov. Jaz sem to priporočilo prezrl, saj sem redno delal varnostne kopije pomembnih podatkov na oddaljenem napravi, in okvara celo celotnega ribnika lahko vpliva le na dostopnost podatkov, ne pa na njihovo ohranitev. Če nimate možnosti delati varnostnih kopij, je bolje uporabiti rešitve, kot sta RAIDZ2 ali RAID10.

Preverite uspešnost ustvarjanja ribnika z izvajanjem:

$ sudo zpool status

in

$ sudo zfs list
IME                               UPORABLJENO  NA VOLJO  ODNOS  MONTIRNO MESTO
data                               510G  7.16T   140K  \/mnt\data

Privzeto ZFS montira pravkar ustvarjen ribnik neposredno v /, kar običajno ni zaželeno. To lahko spremenite tako, da izvedete:

zfs set mountpoint=\/mnt\/data data

Od tu možete odabrati da kreirate jedan ili više datasetova za skladištenje podataka. Kreirao sam dva, jedan za Time Machine backup, a drugi za zajedničko skladištenje datoteka. Kapacitet Time Machine dataset-a sam ograničio na 512 GB, kako bih sprečio njegov nekontrolisani rast.

Optimizacija

zfs set compression=on data

Ova komanda uključuje podršku za ZFS kompresiju. Kompresija zahteva minimalnu CPU snagu, ali može značajno poboljšati I/O propusnost, pa se uvek preporučuje za korišćenje.

zfs set relatime=on data

Ovom komandom smanjujemo broj ažuriranja na atime, kako bismo smanjili generaciju IOPS prilikom pristupanja datotekama.

Podrazumevano, ZFS na Linuxu koristi 50% fizičke memorije za ARC. U mom slučaju, kada je ukupni broj datoteka mali, ovaj procenat se može bezbedno povećati na 90%, jer druge aplikacije na serveru neće raditi.

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

Zatim, uz pomoć arc_summary.py možete proveriti da li su promene 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
...

Podešavanje ponavljajućih zadataka

Uporabil sem systemd-zpool-scrub za podešavanje systemd tajmera za izvršavanje čišćenja jednom nedeljno i zfs-auto-snapshot za automatsko kreiranje snapshots-a svake 15 minuta, 1 sat i 1 dan.

Instalacija Netatalk

Netatalk je otvorena implementacija AFP (Apple Filing Protocol). Prateći službenu uputu za instalaciju za CentOSS, u samo nekoliko minuta dobio sam sastavljen i instaliran RPM paket.

Podešavanje konfiguracije

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

[Global]
; Globalne postavke servera
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

je res polinom stopnje vol dbnest je u mom slučaju značajno poboljšanje, jer podrazumevano Netatalk upisuje CNID bazu podataka u koren fajl sistema, što je bilo potpuno nepoželjno, budući da se moj glavni fajl sistem izvršava na USB-u i stoga radi relativno sporo. Aktiviranje vol dbnest dovodi do čuvanja baze podataka u korenu Volume-a, koji se u ovom slučaju odnosi na ZFS pool i već je znatno brži.

Otvaranje 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
Če je bilo vse pravilno nastavljeno, bi se vaša naprava morala prikazati v Finderju in Time Machine bi morala delovati.

Dodatne nastavitve
S.M.A.R.T spremljanje

Priporočljivo je spremljati stanje vaših diskov, da se prepreči njihova okvara.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Demon za UPS

Spremlja nivo napolnjenosti UPS APC in izklopi sistem, ko nivo postane kritično nizek.

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

Strojna nadgradnja

Teden dni po nastavitvi sistema sem začel vedno bolj skrbeti, da je v strežniku nameščen pomnilnik brez ECC. Poleg tega bo pri ZFS dodatni pomnilnik za predpomnjenje zelo dobrodošel. Zato sem ponovno obiskal Amazon, kjer sem kupil 2x Kingston DDR3 8GB ECC RAM po 80 $ vsak in zamenjal namizni RAM, ki ga je namestil prejšnji lastnik. Sistem se je prvič naložil brez kakršnih koli težav in prepričal sem se, da je podpora ECC bila aktivirana:

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

Результат.

Rezultat me je zelo razveselil. Zdaj lahko nepretrgoma napolnim 1Gbps LAN povezavo strežnika s kopiranjem datotek, in Time Machine deluje brezhibno. Torej, na splošno sem zadovoljen z nastavitvijo.

Končna cena:

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

Ukupno = $689

Zdaj lahko rečem, da je vredno te cene.

Ali sami izdelujete NAS strežnike?

Zbira poceni domači NAS sistem na Linuxu

Zbira poceni domači NAS sistem na Linuxu

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster