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.
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
„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
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 atime
sumaž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
$ 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
„Netatalk“ diegimas
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 * HP ProLiant N40L = 75 USD
- 2 * 8 GB ECC RAM = 174 USD
- 4 * WD Red 3 TB HDD = 440 USD
Iš viso = $ 689
Dabar galiu pasakyti, kad kaina buvo verta.
Ar kuriate savo NAS serverius?
Šaltinis: www.habr.com