Odava koduse NAS-süsteemi kokkupanek Linuxil

Odava koduse NAS-süsteemi kokkupanek Linuxil

Mina, nagu paljud teised MacBook Pro kasutajad, seisavad silmitsi sisemälu puudumise probleemiga. Täpsemalt öeldes, minu igapäevaselt kasutatav rMBP oli varustatud vaid 256 GB SSD-ga, mis muidugi pikaks ajaks ei piisanud.

Ja kui ma lisaks hakkasin oma lendude ajal videoid salvestama, halvenes olukord veelgi. Salvestatud materjalide maht pärast selliseid lende oli üle 50 GB, ja mu kehva õnnega 256 GB SSD täitus väga kiiresti, sundides mind ostma 1 TB välist ketast. Siiski, aasta hiljem ei suutnud ka see enam minu genereeritava andmemahu vajadustega toime tulla, rääkimata juba sellest, et üleliigsete ja varukoopiate puudumine tegi selle tähtsa teabe hoidmiseks sobimatuks.

Nii et ühel hetkel otsustasin kokku panna suure mahutavusega NAS-i, lootes, et see süsteem kestab vähemalt paar aastat ilma vajaduseta uut uuendust teha.

Selle artikli olen kirjutanud eelkõige meeldetuletuseks, et mida ja kuidas ma tegin, juhuks kui mul peaks seda kunagi uuesti tegema. Loodan, et see on kasulik ka teile, kui otsustate sama teha.

Kas ei oleks lihtsam osta?

Nii et, me teame, mida tahame saada, jääb küsmart, kuidas?

Esiteks tutvusin kommertslahendustega ja vaatasin eelkõige firmasid nagu Synology, mis pidid pakkuma parimaid tarbijataseme NAS-süsteeme turul. Kuid selle teenuse hind osutus piisavalt kõrgeks. Odavaim neljakohaline süsteem maksab üle 300 dollarit ja selle komplektis ei kaasne kõvakettad. Lisaks on sellise komplekti sisemine riistvara üsna keskpärane, mis seab kahtluse alla selle reaalse jõudluse.

Siis mõtlesin, miks mitte ehitada NAS-server ise?

Sobiva serveri otsimine

Kui plaanid sellist serverit kokku panna, siis on kõigepealt oluline leida õige riistvara. Selle kokkuvõtte jaoks sobib hästi kasutatud server, kuna salvestustööde jaoks ei ole meil erilist jõudlust vaja. Olulised on suur RAM-i maht, mitu SATA-pesa ja head võrgukardid. Kuna minu server töötab minu püsivalt elukohas, siis on ka müratase oluline.

Oma otsingud alustasin eBay'st. Kuigi leidsin sealt palju kasutatud Dell PowerEdge R410/R210 mudeleid hinnaga alla 100 dollari, teades, et heas serveriruumi kogemuses on need 1U seadmed liiga mürarikkaid koduseks kasutamiseks. Üldiselt on tower-formaadis serverid vaiksemad, kuid kahjuks oli eBay's neid vähe, ja kõik olid kas kallid või nõrgad.

Järgmine koht oma otsingute jätkamiseks oli Craiglist, kus leidsin inimese, kes müüs kasutatud HP ProLiant N40L vaid 75 dollari eest! Olin nende serveritega tuttav, mis isegi kasutatuna maksab tavaliselt umbes 300 dollarit, seega saatsin müüjale kirja lootuses, et kuulutus on endiselt aktuaalne. Kui sain teada, et nii ongi, suundusin mõtteid kaua raiskamata San Mateosse, et see server ära tuua, mis esimesest pilgust mind kindlasti rõõmustas. Sellel oli minimaalne kulumine ja, välja arvatud väike tolmukiht, oli kõik muus väga hästi.

Odava koduse NAS-süsteemi kokkupanek Linuxil
Serveri foto otse pärast ostmist

Ja siin on komplekti spetsifikatsioon, mille ma sain:

  • CPU: AMD Turion(tm) II Neo N40L kahetuumaine protsessor (64-bit)
  • RAM: 8 GB non-ECC RAM (eelmine omanik paigaldanud)
  • Flash: 4 GB USB-mälupulk
  • SATA ühendused: 4 + 1
  • NIC: 1 Gbps emaplaadi NIC

On ütlematagi selge, et hoolimata mitme aasta vanusest ületas selle serveri spetsifikatsioon endiselt enamik turul pakutavaid NAS-süsteeme, eriti mälumahu osas. Hiljem tegin isegi 16 GB ECC ülesande madalama latentsuse ja kõrgema andmekaitsega.

Kõvakettade valik

Nüüd on meil suurepärane töötav süsteem ja jääb valida sellele sobivad kõvakettad. Loomulikult sain ma nende 75 dollari eest ainult serveri ilma HDD-deta, mis mind ei üllatanud.

Veidi uurides leidsin, et 24/7 NAS-süsteemide jaoks sobivad kõige paremini HDD-d WD Red. Ostsin Amazonist 4 tükki, igaühe mahutavus on 3 TB. Sisuliselt võite ühendada ükskõik millise valitud HDD, kuid pidage meeles, et need peavad olema sama mahutavuse ja kiirusena. See aitab vältida võimalikke RAID-i jõudlusprobleeme tulevikus.

Süsteemi seadistamine

Arvan, et paljud kasutavad oma NAS-i ehitustes süsteemi FreeNAS, ja selles pole midagi halba. Kuid hoolimata võimalusest installida see süsteem oma serverisse, eelistasin kasutada CentOS-i, kuna ZFS on Linuxi süsteem on algselt ette valmistatud tootmis keskkonnaks, ja ma olen üleüldiselt Linuxi serveritega rohkem harjunud. Lisaks ei huvitanud mind trendikas liides ja FreeNAS-i pakutavad funktsioonid – mulle piisab RAIDZ maatriksist ja AFP jagamisest.

CentOS-i installimine USB-le on piisavalt lihtne – piisab USB-d käivitamisallikana määramisest, ja installatsioonimeister viib teid läbi kõikidest etappidest.

RAID-i kogumine

Pärast CentOS-i eduka installatsiooni installisin samuti ZFS on Linuxi, järgides siin loetletud samme.

Selle protsessi lõppedes laadisin ZFS Kernel mooduli:

$ sudo modprobe zfs

Ja lõin RAIDZ1 maatriksi käsu abil 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

Pange tähele, et siin kasutan kõvakettade ID-sid nende kuvatavate nimede asemel (sdx), et vähendada nende purunemise tõenäosust pärast laadimist tähed tähenduse muudatuse tõttu.

Lisaks lisasin ZIL-i ja L2ARC-i vahemälu, mis töötavad eraldi SSD-l, jagades selle SSD kaheks partitsiooniks: 5GB ZIL-i jaoks ja ülejäänud osa L2ARC-i jaoks.

Mis puudutab RAIDZ1-i, siis see suudab taluda 1 ketta riket. Paljud väidavad, et seda tüüpi puu ei tohi kasutada, sest on oht, et teine ketas võib rikke tõttu RAID-i ümberkorraldamise käigus ebaõnnestuda, mis võib viia andmete kadumiseni. Olen siiski sellest soovitusest üle astunud, kuna tegin regulaarselt varukoopiaid olulistele andmetele eemalolevale seadmele, ja kogu mahtuvuse rike võib mõjutada ainult andmete kättesaadavust, kuid mitte nende säilimist. Kui teil pole võimalik varukoopiaid teha, siis on parem kasutada lahendusi, nagu RAIDZ2 või RAID10.

Puu edukuse loomise kinnitamiseks võib käivitada:

$ sudo zpool status

ja

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

Vaikimisi montaaž ZFS just loodud puu otse /, mis tavaliselt ei ole soovitav. Seda saab muuta, käivitades:

zfs set mountpoint=/mnt/data data

Siit saate valida ühe või mitu andmestikku andmete salvestamiseks. Olen loonud kaks, üks Time Machine'i varundamiseks ja teine üldiseks failide salvestamiseks. Time Machine'i andmestiku ma piirasin 512 GB kvotiga, et vältida selle lõputut kasvu.

Optimeerimine

zfs set compression=on data

See käsk lülitab sisse ZFS-i tihendamise toe. Tihendamine kasutab minimaalset CPU võimsust, kuid võib oluliselt parandada I/O läbilaskevõimet, seega on selle kasutamine alati soovitatav.

zfs set relatime=on data

Selle käsklusega vähendame värskenduste arvu atime, et vähendada IOPS-i genereerimist failidele juurdepääsul.

Vaikimisi kasutab ZFS on Linux ARC jaoks 50% füüsilisest mälust. Minu puhul, kui üldine failide arv ei ole suur, saab seda mahtu ohutult suurendada 90%-ni, kuna serveril ei toimu teisi rakendusi.

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

Seejärel saab arc_summary.py kasutada, et veenduda, et muudatused on jõustunud:

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

Korduvate ülesannete seadistamine

Ma kasutasin systemd-zpool-scrub systemd-timereid seadistamine kord nädalas puhastamiseks ja zfs-auto-snapshot seisundite automaatne loomine iga 15 minuti, 1 tunni ja 1 päeva järel.

Netatalki installimine

Netatalk on avatud rakenduste AFP („Apple Filing Protocol). Järgides ametlikke installimisjuhiseid CentOSS, suutsin ma mõne minutiga RPM paketi koostada ja installida.

Konfiguratsiooni seadistamine

$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf 
;
; Netatalk 3.x konfiguratsioonifail
;

[Globaalne]
; Üldised serveri seaded
mimic model = TimeCapsule6,106

; [Kodud]
; basedir regex = /home

; [Minu AFP maht]
; path = /path/to/volume

; [Minu Time Machine maht]
; path = /path/to/backup
; time machine = jah

[Datongi failid]
path = /mnt/data/datong
valid users = datong

[Datongi Time Machine varukoopiad]
path = /mnt/data/datong_time_machine_backups
time machine = jah
valid users = datong

Pange tähele, et vol dbnest on minu olukorras tõsine täiustus, kuna vaikimisi kirjutab Netatalk CNID andmebaasi failisüsteemi juure, mis polnud soovitav, kuna minu peamine failisüsteem töötab USB-l, mille tõttu see töötab aeglaselt. Samas kui vol dbnest toob andmebaasi salvestamise mahuti juurte, mis seondub ZFS-i kogumiga ja on juba kordades kiirem.

Pordid tulemüüris lubamine

$ 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
Kui kõik on õigesti seadistatud, peaks teie masin ilmuma Finderisse ja Time Machine peaks samuti töötama.

Lisaseaded
S.M.A.R.T jälgimine

Soovitav on jälgida teie kõvaketaste olekut, et ennetada nende tõrkeid.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

UPS-i demon

Jälgib APC UPS-i laadimist ja välgutab süsteemi, kui laadimine muutub kriitiliselt madalaks.

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

Riistvarauuendus

Nädala pärast süsteemi seadistamist hakkasin üha enam muretsema, et serveris on mälu ilma ECC-ta. Lisaks on ZFS-i puhul tarvilik täiendav mälu vahemäluks. Seetõttu pöördusin taas Amazoni poole, kus ostsin 2x Kingston DDR3 8GB ECC RAM-i igaühe eest 80 dollari eest ja asendasin varasema omaniku paigaldatud lauaarvuti RAM-i. Süsteem käivitus esimesest korrast probleemideta ja veendusin, et ECC tugi oli aktiveeritud:

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

Tulemus

Tulemus rõõmustas mind väga. Nüüd saan pidevalt 1Gbps LAN-iühenduse serverisse faile kopeerides laadida, ja Time Machine töötab laitmatult. Nii et, kokkuvõttes olen seadistusega rahul.

Lõplik maksumus:

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

Kokku = $689

Nüüd võin öelda, et hind oli seda väärt.

Kas teete NAS-servereid ise?

Odava koduse NAS-süsteemi kokkupanek Linuxil

Odava koduse NAS-süsteemi kokkupanek Linuxil

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster