Edullisen kodin NAS-järjestelmän rakentaminen Linuxille

Edullisen kodin NAS-järjestelmän rakentaminen Linuxille

Minä, kuten monet muut MacBook Pron käyttäjät, kohtasin riittämättömän sisäisen muistin ongelman. Tarkemmin sanottuna päivittäin käyttämäni rMBP oli varustettu SSD-levyllä, jonka kapasiteetti oli vain 256 Gt, mikä ei tietenkään riittänyt pitkään aikaan.

Ja kun kaiken muun lisäksi aloin kuvaamaan videoita lentojeni aikana, tilanne vain paheni. Tällaisten lentojen jälkeen kuvatun materiaalin määrä oli 50+ Gt, ja huono 256 Gt:n SSD-levyni täyttyi pian, mikä pakotti minut ostamaan ulkoisen 1 Tt:n aseman. Vuoden kuluttua se ei kuitenkaan enää pystynyt käsittelemään luomaani datamäärää, puhumattakaan redundanssin puutteesta ja varmuuskopiointi teki siitä sopimattoman tärkeän tiedon isännöimiseen.

Joten jossain vaiheessa päätin rakentaa suuren NAS:n siinä toivossa, että tämä järjestelmä kestäisi ainakin pari vuotta ilman uutta päivitystä.

Kirjoitin tämän artikkelin ensisijaisesti muistuttamaan tarkalleen mitä tein ja miten tein sen, jos minun täytyy tehdä se uudelleen. Toivon, että siitä on hyötyä myös sinulle, jos päätät tehdä samoin.

Ehkä se on helpompi ostaa?

Joten tiedämme, mitä haluamme saada, kysymys on edelleen: miten?

Tarkastelin ensin kaupallisia ratkaisuja ja erityisesti Synologya, jonka piti tarjota markkinoiden parhaat kuluttajatason NAS-järjestelmät. Palvelun hinta osoittautui kuitenkin melko korkeaksi. Halvin 4-paikkainen järjestelmä maksaa yli 300 dollaria, eikä se sisällä kiintolevyjä. Lisäksi tällaisen sarjan sisäinen täyttö itsessään ei ole erityisen vaikuttava, mikä kyseenalaistaa sen todellisen suorituskyvyn.

Sitten ajattelin: miksi en rakentaisi itse NAS-palvelinta?

Sopivan palvelimen löytäminen

Jos aiot koota tällaisen palvelimen, sinun on ensin löydettävä oikea laitteisto. Käytetyn palvelimen pitäisi olla varsin sopiva tähän koontiversioon, koska emme tarvitse paljon suorituskykyä tallennustehtäviin. Tarpeellisista asioista on syytä huomata suuri määrä RAM-muistia, useita SATA-liittimiä ja hyvät verkkokortit. Koska palvelimeni toimii vakituisen asuinpaikan paikassa, myös melutasolla on merkitystä.

Aloitin etsinnän eBaysta. Vaikka löysin sieltä paljon käytettyä Dell PowerEdge R410/R210:tä alle 100 dollarilla, palvelinhuoneessa työskentelykokemuksella tiesin, että nämä 1U:n yksiköt pitivät liikaa melua eivätkä sovellu kotikäyttöön. Yleensä tornipalvelimet ovat usein vähemmän meluisia, mutta valitettavasti niitä oli vähän eBayssa, ja ne olivat kaikki joko kalliita tai alitehoisia.

Seuraavaksi etsittävä paikka oli Craiglist, josta löysin jonkun myyvän käytettyä HP ProLiant N40L:ää vain 75 dollarilla! Tunsin nämä palvelimet, jotka maksoivat yleensä noin 300 dollaria käytettynäkin, joten lähetin myyjälle sähköpostia toivoen, että mainos olisi edelleen aktiivinen. Saatuani tietää, että näin oli, suuntasin ajattelematta kahdesti San Mateoon hakemaan tätä palvelinta, mikä ensi silmäyksellä ehdottomasti miellytti minua. Siinä oli vähän kulumaa ja pientä pölyä lukuun ottamatta kaikki muu oli hienoa.

Edullisen kodin NAS-järjestelmän rakentaminen Linuxille
Kuva palvelimesta heti oston jälkeen

Tässä ostamani sarjan tekniset tiedot:

  • prosessori: AMD Turion(tm) II Neo N40L -kaksiytiminen prosessori (64-bittinen)
  • RAM: 8 Gt ei-ECC-RAM-muistia (edellinen omistaja asentanut)
  • salama: 4 Gt USB-asema
  • SATA-liittimet:4+1
  • NIC: 1 Gbps sisäinen NIC

Sanomattakin on selvää, että vaikka tämä palvelin on useita vuosia vanha, sen tekniset tiedot ovat edelleen parempia kuin useimmat markkinoilla olevat NAS-vaihtoehdot, etenkin RAM-muistin suhteen. Hieman myöhemmin päivitin jopa 16 Gt ECC:hen suuremmalla puskurilla ja parannetulla tietosuojalla.

Kiintolevyjen valinta

Nyt meillä on erinomaisesti toimiva järjestelmä ja ei enää muuta kuin valitse sille kovalevyt. Ilmeisesti sain sillä 75 dollarilla vain itse palvelimen ilman kiintolevyä, mikä ei yllättänyt minua.

Pienen tutkimuksen jälkeen huomasin, että WD Red -kiintolevyt sopivat parhaiten NAS-järjestelmien käyttöön 24/7. Niiden ostamiseksi käännyin Amazoniin, josta ostin 4 kopiota 3 TB:stä kukin. Periaatteessa voit liittää minkä tahansa haluamasi kiintolevyn, mutta varmista, että niiden kapasiteetti ja nopeus ovat samat. Tämä auttaa sinua välttämään mahdollisia RAID-suorituskykyongelmia pitkällä aikavälillä.

Järjestelmän asennus

Uskon, että monet käyttävät järjestelmää NAS-versioihinsa FreeNAS, eikä siinä ole mitään vikaa. Huolimatta mahdollisuudesta asentaa tämä järjestelmä palvelimelleni, käytin kuitenkin mieluummin CentOS:ää, koska ZFS on Linux -järjestelmä on alun perin valmis tuotantoympäristöön ja yleensä Linux-palvelimen hallinta on minulle tutumpaa. Lisäksi en ollut kiinnostunut FreeNASin hienosta käyttöliittymästä ja ominaisuuksista - RAIDZ-taulukko ja AFP-jako riittivät minulle.

CentOS:n asentaminen USB:lle on melko yksinkertaista - määritä vain USB käynnistyslähteeksi, ja käynnistettäessä ohjattu asennus opastaa sinut kaikissa vaiheissaan.

RAID-rakenne

CentOS:n onnistuneen asennuksen jälkeen asensin myös ZFS:n Linuxiin luettelon mukaisesti askeleet tänne.

Kun tämä prosessi oli valmis, latasin ZFS-ydinmoduulin:

$ sudo modprobe zfs

Ja loi RAIDZ1-taulukon komennolla 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

Huomaa, että tässä käytän kiintolevyjen tunnuksia niiden näyttönimien sijaan (sdx).

Lisäsin myös ZIL- ja L2ARC-välimuistin, jotka toimivat erillisellä SSD-levyllä, jakaen SSD-levyn kahteen osioon: 5 Gt ZIL:lle ja loput L2ARC:lle.

Mitä tulee RAIDZ1:een, se kestää yhden levyvian. Monet väittävät, että tätä poolivaihtoehtoa ei pitäisi käyttää, koska on todennäköistä, että toinen levy epäonnistuu RAID-uudelleenrakennusprosessin aikana, mikä voi johtaa tietojen menetykseen. Jätin tämän suosituksen huomioimatta, koska tein säännöllisesti varmuuskopioita tärkeistä tiedoista etälaitteelle ja jopa koko joukon epäonnistuminen voi vaikuttaa vain tietojen saatavuuteen, mutta ei sen turvallisuuteen. Jos sinulla ei ole mahdollisuutta tehdä varmuuskopioita, on parempi käyttää ratkaisuja, kuten RAIDZ1 tai RAID2.

Voit varmistaa, että poolin luominen onnistui suorittamalla:

$ sudo zpool status

и

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

Oletusarvoisesti ZFS liittää juuri luodun poolin suoraan /, mikä on yleensä ei-toivottua. Voit muuttaa tämän suorittamalla:

zfs set mountpoint=/mnt/data data

Täältä voit luoda yhden tai useamman tietojoukon tietojen tallentamista varten. Loin kaksi, yhden Time Machine -varmuuskopiointia varten ja toisen jaettuun tiedostojen tallennusta varten. Rajoitin Time Machine -tietojoukon koon 512 Gt:n kiintiöön estääkseni sen loputtoman kasvun.

optimointi

zfs set compression=on data

Tämä komento mahdollistaa ZFS-pakkaustuen. Pakkaaminen käyttää minimaalista suorittimen tehoa, mutta voi merkittävästi parantaa I/O-suorituskykyä, joten se on aina suositeltavaa.

zfs set relatime=on data

Tällä komennolla vähennämme päivitysten määrää arvoon atimevähentääksesi IOPS-tuotantoa tiedostoja käytettäessä.

Oletusarvoisesti ZFS Linuxissa käyttää 50 % fyysisestä muistista ARC:lle. Minun tapauksessani, kun tiedostojen kokonaismäärä on pieni, tämä voidaan turvallisesti nostaa 90 prosenttiin, koska palvelimella ei ole käynnissä muita sovelluksia.

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

Sitten käyttämällä arc_summary.py Voit varmistaa, että muutokset ovat tulleet voimaan:

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

Toistuvien tehtävien määrittäminen

käytin systemd-zpool-scrub määrittää järjestelmäajastimet suorittamaan siivouksen kerran viikossa ja zfs-auto-snapshot luodaksesi tilannekuvia automaattisesti 15 minuutin, 1 tunnin ja 1 päivän välein.

Netatalkin asennus

nettalk on avoimen lähdekoodin AFP (Apple Fileing Protocol). Seurata CentO:n viralliset asennusohjeetS, sain kirjaimellisesti kootun ja asennetun RPM-paketin vain muutamassa minuutissa.

Kokoonpanon asetukset

$ 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

Huomaa, että vol dbnest on suuri parannus tapauksessani, koska oletuksena Netatalk kirjoittaa CNID-tietokannan tiedostojärjestelmän juureen, mikä ei ollut ollenkaan toivottavaa, koska päätiedostojärjestelmäni toimii USB:llä ja on siksi suhteellisen hidas. Käynnistys vol dbnest johtaa tietokannan tallentamiseen Volume-juureen, joka tässä tapauksessa kuuluu ZFS-pooliin ja on jo suuruusluokkaa tuottavampi.

Porttien käyttöönotto palomuurissa

$ 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
Jos kaikki on määritetty oikein, koneesi pitäisi näkyä Finderissa ja myös Time Machinen pitäisi toimia.

Lisäasetukset
SMART-valvonta

On suositeltavaa seurata levyjesi tilaa levyvikojen estämiseksi.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Daemon UPS:lle

Valvoo APC UPS:n latausta ja sammuttaa järjestelmän, kun lataus laskee kriittisesti alhaiseksi.

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

Laitteiston päivitys

Viikko järjestelmän asentamisen jälkeen aloin olla yhä enemmän huolissani palvelimen ei-ECC-muistista. Lisäksi ZFS:n tapauksessa lisämuisti puskurointia varten on erittäin hyödyllinen. Joten palasin Amazoniin, josta ostin 2x Kingston DDR3 8GB ECC RAM-muistia 80 dollarilla kappaleelta ja vaihdoin edellisen omistajan asentaman työpöydän RAM-muistin. Järjestelmä käynnistyi ensimmäisen kerran ilman ongelmia ja varmistin, että ECC-tuki oli aktivoitu:

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

Tulos

Olin erittäin tyytyväinen tulokseen. Nyt voin jatkuvasti pitää palvelimen 1Gbps LAN-yhteyden kiireisenä kopioimalla tiedostoja ja Time Machine toimii moitteettomasti. Joten kaiken kaikkiaan olen tyytyväinen järjestelyyn.

Kokonaiskustannukset:

  1. 1 * HP ProLiant N40L = 75 dollaria
  2. 2 * 8 Gt ECC RAM -muistia = 174 dollaria
  3. 4 * WD Red 3 TB HDD = 440 dollaria

Yhteensä = $ 689

Nyt voin sanoa, että hinta oli sen arvoinen.

Teetkö omia NAS-palvelimia?

Edullisen kodin NAS-järjestelmän rakentaminen Linuxille

Edullisen kodin NAS-järjestelmän rakentaminen Linuxille

Lähde: will.com

Lisää kommentti