Ndërtimi i një sistemi të lirë NAS në shtëpi në Linux

Ndërtimi i një sistemi të lirë NAS në shtëpi në Linux

Unë, si shumë përdorues të tjerë të MacBook Pro, u përballa me problemin e kujtesës së brendshme të pamjaftueshme. Për të qenë më të saktë, rMBP që përdorja çdo ditë ishte e pajisur me një SSD me një kapacitet prej vetëm 256 GB, e cila, natyrisht, nuk ishte e mjaftueshme për një kohë të gjatë.

Dhe kur, mbi gjithçka tjetër, fillova të regjistroja video gjatë fluturimeve të mia, situata vetëm u përkeqësua. Vëllimi i pamjeve të filmuara pas fluturimeve të tilla ishte 50+ GB dhe SSD-ja ime e dobët 256 GB u mbush shumë shpejt, duke më detyruar të blija një disk të jashtëm 1 TB. Megjithatë, pas një viti, ai nuk mund të trajtonte më sasinë e të dhënave që gjeneroja, për të mos përmendur mungesën e tepricës dhe rezervimit e bëri atë të papërshtatshëm për të pritur informacione të rëndësishme.

Kështu, në një moment vendosa të ndërtoj një NAS të madh me shpresën se ky sistem do të zgjasë të paktën disa vjet pa kërkuar një përmirësim tjetër.

E shkrova këtë artikull kryesisht si një kujtesë për atë që bëra dhe si e bëra atë në rast se duhet ta bëj përsëri. Shpresoj se do të jetë e dobishme edhe për ju nëse vendosni të bëni të njëjtën gjë.

Ndoshta është më e lehtë për të blerë?

Pra, ne e dimë se çfarë duam të marrim, pyetja mbetet: si?

Fillimisht shikova zgjidhjet komerciale dhe shikova në veçanti Synology, e cila supozohej të ofronte sistemet më të mira NAS të nivelit të konsumatorit në treg. Megjithatë, kostoja e këtij shërbimi doli të jetë mjaft e lartë. Sistemi më i lirë 4-bay kushton $300+ dhe nuk përfshin hard disqet. Për më tepër, vetë mbushja e brendshme e një komplete të tillë nuk është veçanërisht mbresëlënëse, gjë që vë në pikëpyetje performancën e saj reale.

Atëherë mendova: pse të mos ndërtoj vetë një server NAS?

Gjetja e një serveri të përshtatshëm

Nëse do të montoni një server të tillë, atëherë para së gjithash duhet të gjeni harduerin e duhur. Një server i përdorur duhet të jetë mjaft i përshtatshëm për këtë ndërtim, pasi nuk do të kemi nevojë për shumë performancë për detyrat e ruajtjes. Ndër gjërat e nevojshme, duhet të theksojmë një sasi të madhe RAM, disa lidhës SATA dhe karta të mira rrjeti. Meqenëse serveri im do të punojë në vendin e vendbanimit tim të përhershëm, niveli i zhurmës gjithashtu ka rëndësi.

Fillova kërkimin tim në eBay. Megjithëse gjeta shumë Dell PowerEdge R410/R210 të përdorura atje për nën 100 dollarë, duke pasur përvojë pune në një dhomë serveri, e dija që këto njësi 1U bënin shumë zhurmë dhe nuk ishin të përshtatshme për përdorim në shtëpi. Si rregull, serverët e kullave janë shpesh më pak të zhurmshëm, por, për fat të keq, kishte pak prej tyre në eBay, dhe të gjithë ishin ose të shtrenjtë ose të pafuqishëm.

Vendi tjetër për të parë ishte Craiglist, ku gjeta dikë që shiste një HP ProLiant N40L të përdorur për vetëm 75 dollarë! Isha i njohur me këta serverë, të cilët zakonisht kushtojnë rreth 300 dollarë edhe të përdorur, kështu që i dërgova email shitësit me shpresën se reklama ishte ende aktive. Pasi mësova se ishte kështu, unë, pa u menduar dy herë, u drejtova për në San Mateo për të marrë këtë server, i cili në shikim të parë më kënaqi padyshim. Kishte konsumim minimal dhe përveç pak pluhuri, gjithçka tjetër ishte e mrekullueshme.

Ndërtimi i një sistemi të lirë NAS në shtëpi në Linux
Foto e serverit, menjëherë pas blerjes

Këtu janë specifikimet për kompletin që bleva:

  • CPU: Procesor AMD Turion(tm) II Neo N40L me dy bërthama (64-bit)
  • RAM: 8 GB RAM jo-ECC (instaluar nga pronari i mëparshëm)
  • Blic: 4 GB USB drive
  • Konektorët SATA:4+1
  • NIC: 1 Gbps në bord NIC

Eshtë e panevojshme të thuhet, pavarësisht se është disa vjeç, specifikimi i këtij serveri është ende superior ndaj shumicës së opsioneve të NAS në treg, veçanërisht për sa i përket RAM-it. Pak më vonë, madje e përmirësova në 16 GB ECC me një madhësi të rritur të tamponit dhe mbrojtje të rritur të të dhënave.

Përzgjedhja e disqeve të ngurtë

Tani kemi një sistem të shkëlqyer pune dhe gjithçka që mbetet është të zgjedhim disqet e ngurtë për të. Natyrisht, për ato 75 dollarë mora vetëm vetë serverin pa HDD, gjë që nuk më befasoi.

Pasi bëra një kërkim të vogël, zbulova se HDD-të WD Red janë më të përshtatshmet për funksionimin e sistemeve NAS 24/7. Për t'i blerë ato, iu drejtova Amazon, ku bleva 4 kopje nga 3 TB secila. Në thelb, ju mund të lidhni çdo HDD që preferoni, por sigurohuni që ata të kenë të njëjtin kapacitet dhe shpejtësi. Kjo do t'ju ndihmojë të shmangni problemet e mundshme të performancës RAID në afat të gjatë.

Konfigurimi i sistemit

Unë mendoj se shumë do ta përdorin sistemin për ndërtimet e tyre NAS FreeNAS, dhe nuk ka asgjë të keqe me këtë. Sidoqoftë, pavarësisht nga mundësia e instalimit të këtij sistemi në serverin tim, unë preferova të përdor CentOS, pasi sistemi ZFS në Linux fillimisht është përgatitur për një mjedis prodhimi dhe në përgjithësi, menaxhimi i një serveri Linux është më i njohur për mua. Përveç kësaj, nuk isha i interesuar për ndërfaqen elegante dhe veçoritë e ofruara nga FreeNAS - grupi RAIDZ dhe ndarja e AFP-së ishin të mjaftueshme për mua.

Instalimi i CentOS në USB është mjaft i thjeshtë - thjesht specifikoni USB si burimin e nisjes dhe pas nisjes, magjistari i instalimit do t'ju udhëheqë në të gjitha fazat e tij.

Ndërtimi i RAID

Pas instalimit të suksesshëm të CentOS, unë instalova edhe ZFS në Linux sipas renditjes hapat këtu.

Pasi të përfundojë ky proces, ngarkova modulin ZFS Kernel:

$ sudo modprobe zfs

Dhe krijoi grupin RAIDZ1 duke përdorur komandën 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

Ju lutemi vini re se këtu unë po përdor ID-të e disqeve të ngurtë në vend të emrave të tyre të shfaqur (sdx) për të zvogëluar mundësinë që ato të dështojnë të montohen pas nisjes për shkak të ndryshimit të shkronjave.

Shtova gjithashtu cache ZIL dhe L2ARC që funksionojnë në një SSD të veçantë, duke e ndarë atë SSD në dy ndarje: 5 GB për ZIL dhe pjesa tjetër për L2ARC.

Sa i përket RAIDZ1, ai mund të përballojë 1 dështim të diskut. Shumë argumentojnë se ky opsion i grupit nuk duhet të përdoret për shkak të gjasave që disku i dytë të dështojë gjatë procesit të rindërtimit RAID, gjë që mund të çojë në humbje të të dhënave. E injorova këtë rekomandim, pasi bëja rregullisht kopje rezervë të të dhënave të rëndësishme në një pajisje të largët, dhe dështimi i të gjithë grupit mund të ndikojë vetëm në disponueshmërinë e të dhënave, por jo në sigurinë e tyre. Nëse nuk keni aftësinë për të bërë kopje rezervë, atëherë do të ishte më mirë të përdorni zgjidhje si RAIDZ2 ose RAID10.

Mund të verifikoni që krijimi i pishinës ishte i suksesshëm duke ekzekutuar:

$ sudo zpool status

и

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

Si parazgjedhje, ZFS monton direkt pishinën e krijuar rishtazi /, e cila në përgjithësi është e padëshirueshme. Ju mund ta ndryshoni këtë duke ekzekutuar:

zfs set mountpoint=/mnt/data data

Nga këtu mund të zgjidhni të krijoni një ose më shumë grupe të dhënash për të ruajtur të dhënat. Kam krijuar dy, një për kopje rezervë të Time Machine dhe një për ruajtjen e skedarëve të përbashkët. E kufizova madhësinë e grupit të të dhënave Time Machine në një kuotë prej 512 GB për të parandaluar rritjen e saj të pafund.

optimization

zfs set compression=on data

Kjo komandë mundëson mbështetjen e kompresimit ZFS. Kompresimi përdor fuqi minimale të CPU-së, por mund të përmirësojë ndjeshëm qarkullimin I/O, kështu që rekomandohet gjithmonë.

zfs set relatime=on data

Me këtë komandë reduktojmë numrin e përditësimeve në atimepër të reduktuar gjenerimin e IOPS kur aksesoni skedarët.

Si parazgjedhje, ZFS në Linux përdor 50% të memories fizike për ARC. Në rastin tim, kur numri i përgjithshëm i skedarëve është i vogël, ai mund të rritet me siguri në 90% pasi asnjë aplikacion tjetër nuk do të funksionojë në server.

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

Më pas duke përdorur arc_summary.py Ju mund të verifikoni që ndryshimet kanë hyrë në fuqi:

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

Vendosja e detyrave të përsëritura

une e perdora systemd-zpool-scrub për të konfiguruar kohëmatësit e sistemit për të kryer pastrimin një herë në javë dhe zfs-auto-snapshot për të krijuar automatikisht fotografi çdo 15 minuta, 1 orë dhe 1 ditë.

Instalimi i Netatalk

nettalk është një zbatim me kod të hapur i AFP (Protokolli i dosjes së Apple). Në vijim udhëzimet zyrtare të instalimit për CentOS, fjalë për fjalë mora një paketë RPM të mbledhur dhe të instaluar në vetëm disa minuta.

Konfigurimi i konfigurimit

$ 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

Vini re se vol dbnest është një përmirësim i madh në rastin tim, pasi si parazgjedhje Netatalk shkruan bazën e të dhënave CNID në rrënjën e sistemit të skedarëve, gjë që nuk ishte aspak e dëshirueshme pasi sistemi im kryesor i skedarëve funksionon në USB dhe për këtë arsye është relativisht i ngadalshëm. Duke u ndezur vol dbnest rezulton në ruajtjen e bazës së të dhënave në rrënjën Volume, e cila në këtë rast i përket grupit ZFS dhe tashmë është një rend i madhësisë më produktive.

Aktivizimi i porteve në Firewall

$ 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
Nëse gjithçka është konfiguruar saktë, kompjuteri juaj duhet të shfaqet në Finder dhe Time Machine duhet të funksionojë gjithashtu.

Cilësimet shtesë
Monitorimi SMART

Rekomandohet të monitoroni statusin e disqeve tuaja për të parandaluar dështimin e diskut.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Daemon për UPS

Monitoron ngarkimin e UPS-it APC dhe fiket sistemin kur ngarkesa ulet në mënyrë kritike.

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

Përmirësimi i harduerit

Një javë pas konfigurimit të sistemit, fillova të shqetësohesha gjithnjë e më shumë për memorien jo-ECC të serverit. Përveç kësaj, në rastin e ZFS, memoria shtesë për buffering do të jetë shumë e dobishme. Kështu që u ktheva në Amazon ku bleva RAM 2x Kingston DDR3 8 GB ECC për 80 dollarë secili dhe zëvendësova RAM-in e desktopit të instaluar nga pronari i mëparshëm. Sistemi u nis herën e parë pa asnjë problem dhe u sigurova që mbështetja ECC të ishte aktivizuar:

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

Result

Unë isha shumë i kënaqur me rezultatin. Tani mund ta mbaj vazhdimisht të zënë lidhjen LAN të serverit 1 Gbps duke kopjuar skedarë dhe Time Machine funksionon pa të meta. Pra, në përgjithësi, jam i kënaqur me konfigurimin.

Kostoja totale:

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

Në total = $ 689

Tani mund të them që çmimi ia vlente.

A krijoni serverët tuaj NAS?

Ndërtimi i një sistemi të lirë NAS në shtëpi në Linux

Ndërtimi i një sistemi të lirë NAS në shtëpi në Linux

Burimi: www.habr.com

Shto një koment