Izdelava poceni domačega NAS sistema Linux

Izdelava poceni domačega NAS sistema Linux

Tako kot mnogi drugi uporabniki MacBook Pro sem se soočil s problemom nezadostnega notranjega pomnilnika. Natančneje, rMBP, ki sem ga dnevno uporabljal, je bil opremljen s SSD diskom velikosti le 256 GB, kar je bilo seveda premalo za dolgo časa.

In ko sem med leti začel snemati videe, se je stanje samo še poslabšalo. Obseg posnetkov po takšnih poletih je bil 50+ GB, moj nesrečni 256GB SSD pa se je zelo kmalu napolnil, zaradi česar sem moral kupiti 1TB zunanji disk. Vendar po enem letu ni mogel dohajati količine podatkov, ki sem jih ustvaril, da ne omenjam pomanjkanja redundance in varnostnega kopiranja, zaradi česar ni bil primeren za gostovanje pomembnih informacij.

Tako sem se na eni točki odločil zgraditi NAS velike zmogljivosti v upanju, da bo ta sistem zdržal vsaj nekaj let, ne da bi potreboval še eno nadgradnjo.

Ta članek sem napisal predvsem kot opomnik, kaj točno in kako sem naredil, če bom moral to storiti znova. Upam, da vam bo koristilo, če se boste odločili storiti enako.

Mogoče je lažje kupiti?

Torej, vemo, kaj želimo dobiti, ostaja vprašanje, kako?

Najprej sem si ogledal komercialne rešitve in še posebej Synology, ki naj bi zagotavljal najboljše NAS sisteme potrošniškega razreda na trgu. Vendar je bila cena te storitve precej visoka. Najcenejši sistem s 4 ležišči stane 300 $+ in ne vključuje trdih diskov. Poleg tega notranje polnjenje takšnega kompleta ni posebej impresivno, kar postavlja pod vprašaj njegovo resnično zmogljivost.

Potem sem pomislil: zakaj ne bi strežnika NAS zgradil sam?

Iskanje pravega strežnika

Če boste dokončali tak strežnik, potem morate najprej najti pravo strojno opremo. Rabljeni strežnik bi moral biti v redu za to zgradbo, saj za naloge shranjevanja ne potrebujemo veliko zmogljivosti. Od potrebnih je treba omeniti veliko količino RAM-a, več priključkov SATA in dobre omrežne kartice. Ker bo moj strežnik deloval v kraju mojega stalnega prebivališča, je pomembna tudi raven hrupa.

Iskanje sem začel na eBayu. Čeprav sem tam našel veliko rabljenih Dell PowerEdge R410/R210 pod 100 USD, sem, ko sem delal v strežniški sobi, vedel, da so te enote 1U prehrupne in niso primerne za domačo uporabo. Praviloma so stolpni strežniki pogosto manj hrupni, žal pa jih je bilo na eBayu le malo in vsi so bili dragi ali premalo zmogljivi.

Naslednje mesto, ki sem ga iskal, je bil Craiglist, kjer sem našel moškega, ki je prodajal rabljen HP ProLiant N40L za samo 75 $! Poznal sem te strežnike, ki običajno stanejo okoli 300 USD, čeprav so bili uporabljeni, zato sem prodajalcu poslal e-pošto v upanju, da je seznam še vedno na voljo. Ko sem izvedel, da je temu tako, sem brez premisleka odšel v San Mateo po ta strežnik, s katerim sem bil na prvi pogled vsekakor zadovoljen. Imel je minimalno obrabo in razen malo prahu je bilo vse ostalo super.

Izdelava poceni domačega NAS sistema Linux
Slika strežnika, takoj po nakupu

In tukaj je specifikacija kompleta, ki sem ga kupil:

  • CPU: dvojedrni procesor AMD Turion(tm) II Neo N40L (64-bitni)
  • RAM: 8 GB non-ECC RAM (namestil prejšnji lastnik)
  • Flash: 4 GB pogon USB
  • SATA konektorji:4+1
  • NIC: 1 Gbps vgrajena omrežna kartica

Ni treba posebej poudarjati, da specifikacije tega strežnika kljub nekajletni starosti še vedno prekašajo večino možnosti NAS na trgu, zlasti glede RAM-a. Malo kasneje sem celo nadgradil na 16 GB ECC z več medpomnilnika in boljšo zaščito podatkov.

Izbira trdih diskov

Zdaj imamo odličen delujoč sistem in ostaja še izbira trdih diskov zanj. Očitno sem za tistih 75$ dobil samo sam strežnik brez HDD-ja, kar me ni presenetilo.

Po malem raziskovanju sem ugotovil, da so diski NAS, ki delujejo 24/7, najprimernejši za trde diske WD Red. Za nakup sem se obrnil na Amazon, kjer sem kupil 4 kopije po 3 TB. Pravzaprav lahko priključite kateri koli trdi disk, vendar se prepričajte, da sta enake velikosti in hitrosti. Tako se boste dolgoročno izognili morebitnim težavam z zmogljivostjo RAID.

Nastavitev sistema

Mislim, da bodo mnogi uporabljali sistem za svoje zgradbe NAS. FreeNAS, in s tem ni nič narobe. Vendar sem kljub možnosti namestitve tega sistema na svoj strežnik raje uporabil CentOS, saj je sistem ZFS na Linuxu prvotno pripravljen za produkcijsko okolje, na splošno pa mi je upravljanje Linux strežnika bolj domače. Prav tako me ni zanimal modni vmesnik in funkcije, ki jih ponuja FreeNAS – zadovoljen sem bil z nizom RAIDZ in skupno rabo AFP.

Namestitev CentOS na USB je precej preprosta - samo določite USB kot vir zagona in ob zagonu vas bo čarovnik za namestitev vodil skozi vse korake.

RAID sklop

Po uspešni namestitvi CentOS-a sem namestil še ZFS na Linux po navedenem tukaj koraki.

Ko je ta postopek končan, sem naložil modul ZFS Kernel:

$ sudo modprobe zfs

In z ukazom ustvaril niz RAIDZ1 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-je trdega diska namesto njihovih prikazanih imen (sdx), da zmanjšate možnost, da se po zagonu ne bodo priklopili zaradi spremembe črke.

Dodal sem tudi predpomnilnik ZIL in L2ARC, ki se izvajata na ločenem SSD-ju, pri čemer sem ta SSD razdelil na dve particiji: 5 GB za ZIL in ostalo za L2ARC.

Kar zadeva RAIDZ1, lahko prenese 1 okvaro diska. Mnogi trdijo, da te možnosti združevanja ne bi smeli uporabljati zaradi možnosti okvare drugega diska med obnovo RAID, kar je polno izgube podatkov. To priporočilo sem zanemaril, ker sem redno varnostno kopiral pomembne podatke na oddaljeni napravi in ​​okvara celo celotne matrike lahko vpliva le na razpoložljivost podatkov, ne pa tudi na njihovo varnost. Če nimate možnosti izdelave varnostnih kopij, bi bilo bolje uporabiti rešitve, kot sta RAIDZ2 ali RAID10.

Lahko preverite, ali je bil bazen uspešno ustvarjen, tako da zaženete:

$ sudo zpool status

и

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

ZFS privzeto namesti novo ustvarjeno področje neposredno /kar je na splošno nezaželeno. To lahko spremenite tako:

zfs set mountpoint=/mnt/data data

Od tu se lahko odločite za ustvarjanje enega ali več naborov podatkov za shranjevanje vaših podatkov. Ustvaril sem dva, enega za varnostno kopijo Time Machine in enega za skupno shranjevanje datotek. Velikost nabora podatkov Time Machine sem omejil na kvoto 512 GB, da bi preprečil njegovo neskončno naraščanje.

Optimizacija

zfs set compression=on data

Ta ukaz omogoča podporo za stiskanje ZFS. Stiskanje porabi minimalno moč procesorja, vendar lahko močno izboljša V/I prepustnost, zato je vedno priporočljivo.

zfs set relatime=on data

S tem ukazom zmanjšamo število posodobitev na atimeza zmanjšanje ustvarjanja IOPS pri dostopanju do datotek.

ZFS v sistemu Linux privzeto uporablja 50 % fizičnega pomnilnika za ARC. V mojem primeru, ko je skupno število datotek majhno, lahko to količino varno povečate na 90%, saj druge aplikacije na strežniku ne bodo delovale.

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

Nato s pomočjo arc_summary.py Lahko preverite, ali so spremembe začele veljati:

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

Nastavitev ponavljajočih se nalog

uporabil sem systemd-zpool-scrub za nastavitev časovnikov systemd za čiščenje enkrat na teden in zfs-samodejni posnetek za samodejno ustvarjanje posnetkov vsakih 15 minut, 1 uro in 1 dan.

Namestitev Netatalk

nettalk je odprtokodna izvedba AFP (Apple Filing Protocol). Sledim uradna navodila za namestitev za CentOS, paket RPM sem sestavil in namestil v samo nekaj minutah.

Nastavitev 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

Prosimo, upoštevajte, da se vol dbnest je velika izboljšava v mojem primeru, saj Netatalk privzeto zapiše bazo podatkov CNID v koren datotečnega sistema, kar ni bilo zaželeno, saj je moj glavni datotečni sistem na USB-ju in je zato relativno počasen. Vklop istega vol dbnest vodi do shranjevanja baze podatkov v koren nosilca, ki v tem primeru pripada bazenu ZFS in je že za red velikosti hitrejši.

Omogočanje vrat v požarnem zidu

$ 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 moral vaš stroj prikazati v Finderju in tudi Time Machine bi moral delovati.

Dodatne nastavitve
PAMETNO spremljanje

Priporočljivo je, da spremljate stanje svojih diskov, da preprečite njihovo okvaro.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Daemon za UPS

Spremlja napolnjenost APC UPS in izklopi sistem, ko napolnjenost postane kritično nizka.

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

Nadgradnja strojne opreme

Teden dni po nastavitvi sistema me je vse bolj začelo skrbeti pomnilnik brez ECC, nameščen v strežnik. Poleg tega bo v primeru ZFS zelo uporaben dodaten pomnilnik za medpomnilnik. Zato sem se spet obrnil na Amazon, kjer sem kupil 2x Kingston DDR3 8GB ECC RAM za 80 $ na kos in zamenjal namizni RAM, ki ga je namestil prejšnji lastnik. Sistem se je prvič zagnal brez težav in preveril sem, da je podpora za ECC aktivirana:

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

Rezultat

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

Skupni stroški:

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

Skupno = $ 689

Zdaj lahko rečem, da je bila cena vredna.

Ali sami izdelujete NAS strežnike?

Izdelava poceni domačega NAS sistema Linux

Izdelava poceni domačega NAS sistema Linux

Vir: www.habr.com

Dodaj komentar