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.
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
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
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 atime
vä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ä
$ 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
Netatalkin asennus
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 * HP ProLiant N40L = 75 dollaria
- 2 * 8 Gt ECC RAM -muistia = 174 dollaria
- 4 * WD Red 3 TB HDD = 440 dollaria
Yhteensä = $ 689
Nyt voin sanoa, että hinta oli sen arvoinen.
Teetkö omia NAS-palvelimia?
Lähde: will.com