Nebrangios namų NAS sistemos kūrimas „Linux“.

Nebrangios namų NAS sistemos kūrimas „Linux“.

Aš, kaip ir daugelis kitų MacBook Pro vartotojų, susidūriau su nepakankamos vidinės atminties problema. Tiksliau, rMBP, kurį naudojau kasdien, buvo įrengtas tik 256 GB talpos SSD, kurio, žinoma, ilgam nepakako.

O kai, be viso kito, savo skrydžių metu pradėjau filmuoti, situacija tik pablogėjo. Po tokių skrydžių nufilmuotos medžiagos kiekis siekė 50+ GB, o mano prastas 256 GB SSD labai greitai prisipildė, todėl teko įsigyti išorinį 1TB diską. Tačiau po vienerių metų jis nebegalėjo apdoroti mano generuojamo duomenų kiekio, jau nekalbant apie dubliavimo trūkumą, o atsarginės kopijos padarė netinkamą svarbiai informacijai talpinti.

Taigi, vienu metu nusprendžiau sukurti didelę NAS, tikėdamasis, kad ši sistema veiks bent porą metų ir nereikės naujo atnaujinimo.

Šį straipsnį parašiau pirmiausia kaip priminimą apie tai, ką padariau ir kaip tai padariau, jei prireiktų tai padaryti dar kartą. Tikiuosi, kad tai bus naudinga ir jums, jei nuspręsite padaryti tą patį.

Gal lengviau nusipirkti?

Taigi, mes žinome, ką norime gauti, lieka klausimas: kaip?

Pirmiausia pažvelgiau į komercinius sprendimus ir ypač pažvelgiau į „Synology“, kuri turėjo pateikti geriausias vartotojų klasės NAS sistemas rinkoje. Tačiau šios paslaugos kaina pasirodė gana didelė. Pigiausia 4 skyrių sistema kainuoja daugiau nei 300 USD ir joje nėra standžiųjų diskų. Be to, paties tokio rinkinio vidinis užpildymas nėra ypač įspūdingas, todėl kyla abejonių dėl jo realių savybių.

Tada pagalvojau: kodėl gi pačiam nesukūrus NAS serverio?

Tinkamo serverio paieška

Jei ketinate surinkti tokį serverį, pirmiausia turite rasti tinkamą techninę įrangą. Naudotas serveris turėtų būti gana tinkamas šiai konstrukcijai, nes mums nereikės didelio našumo atliekant saugojimo užduotis. Tarp būtinų dalykų turėtume pažymėti didelį RAM kiekį, keletą SATA jungčių ir geras tinklo plokštes. Kadangi mano serveris dirbs mano nuolatinės gyvenamosios vietos vietoje, triukšmo lygis taip pat turi reikšmės.

Pradėjau ieškoti eBay. Nors ten radau daug naudotų Dell PowerEdge R410/R210 už mažiau nei 100 USD, turėdamas patirties dirbant serverių patalpoje, žinojau, kad šie 1U įrenginiai kelia per daug triukšmo ir nėra tinkami naudoti namuose. Paprastai bokštiniai serveriai dažnai yra mažiau triukšmingi, bet, deja, „eBay“ jų buvo nedaug ir jie visi buvo brangūs arba nepakankamai galingi.

Kita vieta, kur reikia ieškoti, buvo Craiglist, kur radau ką nors parduodančio naudotą HP ProLiant N40L tik už 75 USD! Buvau susipažinęs su šiais serveriais, kurie net naudoti paprastai kainuoja apie 300 USD, todėl parašiau pardavėjui el. laišką, tikėdamasis, kad skelbimas vis dar aktyvus. Sužinojęs, kad taip yra, du kartus negalvodamas nuvažiavau į San Mateo pasiimti šio serverio, kuris iš pirmo žvilgsnio mane tikrai nudžiugino. Jis buvo minimaliai nusidėvėjęs ir, išskyrus šiek tiek dulkių, visa kita buvo puiku.

Nebrangios namų NAS sistemos kūrimas „Linux“.
Serverio nuotrauka, iškart po pirkimo

Štai mano įsigyto rinkinio specifikacijos:

  • CPU: AMD Turion(tm) II Neo N40L dviejų branduolių procesorius (64 bitų)
  • RAM: 8 GB ne ECC RAM (įdiegė ankstesnis savininkas)
  • Blykstė: 4 GB USB atmintinė
  • SATA jungtys:4+1
  • NIC: 1 Gbps integruotas NIC

Nereikia nė sakyti, kad nepaisant kelerių metų senumo, šio serverio specifikacijos vis dar pranašesnės už daugumą rinkoje esančių NAS parinkčių, ypač kalbant apie RAM. Kiek vėliau net atnaujinau iki 16 GB ECC su padidintu buferio dydžiu ir padidinta duomenų apsauga.

Kietųjų diskų pasirinkimas

Dabar turime puikiai veikiančią sistemą ir belieka išsirinkti jai kietuosius diskus. Akivaizdu, kad už tuos 75 USD gavau tik patį serverį be HDD, kas manęs nenustebino.

Atlikęs nedidelį tyrimą, sužinojau, kad WD Red HDD geriausiai tinka NAS sistemoms veikti visą parą. Norėdami juos įsigyti, kreipiausi į „Amazon“, kur įsigijau 24 kopijas po 7 TB. Iš esmės galite prijungti bet kurį pageidaujamą HDD, tačiau įsitikinkite, kad jų talpa ir greitis yra tokios pat. Tai padės išvengti galimų RAID veikimo problemų ilgainiui.

Sistemos sąranka

Manau, kad daugelis naudos sistemą savo NAS versijose FreeNAS, ir tame nėra nieko blogo. Tačiau, nepaisant galimybės įdiegti šią sistemą savo serveryje, aš pasirinkau naudoti CentOS, nes ZFS Linux sistemoje iš pradžių yra paruošta gamybinei aplinkai, o apskritai Linux serverio valdymas man yra labiau pažįstamas. Be to, manęs nedomino įmantri sąsaja ir FreeNAS teikiamos funkcijos – man pakako RAIDZ masyvo ir AFP dalijimosi.

„CentOS“ diegimas USB yra gana paprastas – tiesiog nurodykite USB kaip įkrovos šaltinį, o paleidus diegimo vedlys padės atlikti visus etapus.

RAID kūrimas

Sėkmingai įdiegęs CentOS, taip pat įdiegiau ZFS sistemoje „Linux“, vadovaudamasis sąrašu žingsniai čia.

Kai šis procesas buvo baigtas, įkėliau ZFS branduolio modulį:

$ sudo modprobe zfs

Ir sukūrė RAIDZ1 masyvą naudodami komandą 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

Atkreipkite dėmesį, kad čia aš naudoju standžiųjų diskų ID, o ne jų rodomus pavadinimus (sdx), kad sumažintumėte tikimybę, kad po įkrovos jų nepavyks prijungti dėl raidės pakeitimo.

Taip pat pridėjau ZIL ir L2ARC talpyklą, veikiančią atskirame SSD, padalijau tą SSD į du skaidinius: 5 GB ZIL ir likusius L2ARC.

Kalbant apie RAIDZ1, jis gali atlaikyti 1 disko gedimą. Daugelis teigia, kad šios telkinio parinkties nereikėtų naudoti, nes RAID atkūrimo proceso metu gali sugesti antrasis diskas, o tai gali sukelti duomenų praradimą. Nekreipiau dėmesio į šią rekomendaciją, nes reguliariai kurdavau svarbių duomenų atsargines kopijas nuotoliniame įrenginyje, o net viso masyvo gedimas gali turėti įtakos tik duomenų prieinamumui, bet ne jų saugumui. Jei neturite galimybės kurti atsarginių kopijų, geriau naudoti tokius sprendimus kaip RAIDZ2 arba RAID10.

Galite patikrinti, ar baseino sukūrimas buvo sėkmingas, vykdydami:

$ sudo zpool status

и

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

Pagal numatytuosius nustatymus ZFS prijungia naujai sukurtą telkinį tiesiai į /, o tai paprastai yra nepageidautina. Tai galite pakeisti paleisdami:

zfs set mountpoint=/mnt/data data

Čia galite pasirinkti sukurti vieną ar daugiau duomenų rinkinių duomenims saugoti. Sukūriau du, vieną „Time Machine“ atsarginei kopijai ir kitą bendrai failų saugyklai. Apribojau „Time Machine“ duomenų rinkinio dydį iki 512 GB, kad išvengčiau begalinio jo augimo.

Optimizavimas

zfs set compression=on data

Ši komanda įgalina ZFS glaudinimo palaikymą. Suspaudimas naudoja minimalią procesoriaus galią, tačiau gali žymiai pagerinti įvesties / išvesties pralaidumą, todėl visada rekomenduojama.

zfs set relatime=on data

Su šia komanda sumažiname atnaujinimų skaičių iki atimesumažinti IOPS generavimą pasiekiant failus.

Pagal numatytuosius nustatymus Linux ZFS naudoja 50% fizinės ARC atminties. Mano atveju, kai bendras failų skaičius yra mažas, jį galima saugiai padidinti iki 90%, nes serveryje neveikia jokios kitos programos.

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

Tada naudojant arc_summary.py Galite patikrinti, ar pakeitimai įsigaliojo:

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

Pasikartojančių užduočių nustatymas

aš naudojau systemd-zpool-scrub sukonfigūruoti sistemos laikmačius, kad jie atliktų valymą kartą per savaitę ir zfs-auto-snapshot kad automatiškai sukurtumėte momentines nuotraukas kas 15 minučių, 1 valandą ir 1 dieną.

„Netatalk“ diegimas

„Netatalk“ yra atvirojo kodo AFP įgyvendinimas (Apple padavimo protokolas). Sekant oficialios CentO diegimo instrukcijosS, aš tiesiog gavau surinktą ir įdiegtą RPM paketą vos per porą minučių.

Konfigūracijos nustatymas

$ 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

Atkreipkite dėmesį, kad vol dbnest yra didelis patobulinimas mano atveju, nes pagal numatytuosius nustatymus „Netatalk“ įrašo CNID duomenų bazę į failų sistemos šaknį, o tai buvo visiškai nepageidautina, nes mano pagrindinė failų sistema veikia USB ir todėl yra gana lėta. Įsijungia vol dbnest Dėl to duomenų bazė išsaugoma tomo šaknyje, kuri šiuo atveju priklauso ZFS telkiniui ir jau yra eilės tvarka produktyvesnė.

Prievadų įjungimas ugniasienėje

$ 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
Jei viskas buvo tinkamai sukonfigūruota, jūsų kompiuteris turėtų būti rodomas ieškiklyje, o „Time Machine“ taip pat turėtų veikti.

Papildomi nustatymai
SMART stebėjimas

Norint išvengti disko gedimo, rekomenduojama stebėti diskų būseną.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

UPS demonas

Stebi APC UPS įkrovimą ir išjungia sistemą, kai įkrova tampa kritiškai žema.

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

Techninės įrangos atnaujinimas

Praėjus savaitei po sistemos nustatymo, aš pradėjau vis labiau nerimauti dėl serverio ne ECC atminties. Be to, ZFS atveju labai pravers papildoma atmintis buferiui. Taigi grįžau į „Amazon“, kur nusipirkau 2 x Kingston DDR3 8 GB ECC RAM už 80 USD ir pakeičiau ankstesnio savininko įdiegtą darbalaukio RAM. Sistema pirmą kartą paleidžiama be jokių problemų, ir aš įsitikinau, kad ECC palaikymas buvo aktyvuotas:

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

Rezultatas

Likau labai patenkinta rezultatu. Dabar galiu nuolat išlaikyti serverio 1Gbps LAN ryšį, kopijuodamas failus, o „Time Machine“ veikia nepriekaištingai. Taigi apskritai esu patenkintas sąranka.

Bendra kaina:

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

Iš viso = $ 689

Dabar galiu pasakyti, kad kaina buvo verta.

Ar kuriate savo NAS serverius?

Nebrangios namų NAS sistemos kūrimas „Linux“.

Nebrangios namų NAS sistemos kūrimas „Linux“.

Šaltinis: www.habr.com

Добавить комментарий