Krijimi i një sistemi NAS të lirë shtëpiak me Linux

Krijimi i një sistemi NAS të lirë shtëpiak me Linux

Si unë, ashtu si shumë përdorues të tjerë të MacBook Pro, u përballa me problemin e mungesës së hapësirës së brendshme. Në mënyrë më të saktë, MacBook Pro që përdor çdo ditë ishte i pajisur me një SSD prej vetëm 256GB, të cilit, natyrisht, nuk i mjaftonte për një kohë të gjatë.

Dhe kur gjithashtu fillova të regjistroj video gjatë fluturimeve të mia, situata u përkeqësua. Volume i materialeve të regjistruara pas këtyre fluturimeve ishte mbi 50 GB, dhe SSD im i mjerë prej 256GB shumë shpejt mbushi plot, duke më detyruar të blej një disk të jashtëm prej 1TB. Megjithatë, pas një viti, edhe ai nuk arriti të përballonte volumin e të dhënave që gjeneroja, për të mos përmendur mungesën e tepërsisë dhe kopjimit, që e bënte atë të papërshtatshëm për ruajtjen e informacionit të rëndësishëm.

Prandaj, në një moment, vendosa të ndërtoj një NAS me kapacitet 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.

Ky artikull e kam shkruar kryesisht si njĂ« rikujtim pĂ«r atĂ« qĂ« bĂ«ra dhe sesi e bĂ«ra, pĂ«r kur m’u nevojitet ta bĂ«j sĂ«rish. Shpresoj qĂ« pĂ«r ju tĂ« jetĂ« i dobishĂ«m nĂ«se planifikoni tĂ« bĂ«ni tĂ« njĂ«jtin proces.

Mbase është më e lehtë ta blej?

Pra, tashmë e dimë se çfarë duam të arrijmë, mbetet pyetja si?

Fillimisht, shqyrtova zgjidhjet komerciale dhe shqyrtova, sidomos, kompaninë Synology, e cila supozohej se ofronte NAS-ët më të mirë në nivel konsumatori në treg. Megjithatë, çmimi i këtij shërbimi rezultoi të ishte mjaft i lartë. Sistemi më i lirë me 4 hapësira kushton mbi $300, dhe hard diskët nuk përfshihen në paketim. Për më tepër, vetë përbërja e tillë nuk është e veçantë, çka vë në dyshim performancën e saj reale.

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

Kërkimi për serverin e duhur

Nëse planifikoni të përbëni një server të tillë, gjëja e parë që duhet të bëni është të gjeni harduerin e duhur. Një server i përdorur do të ishte i përshtatshëm për këtë përbërje, pasi për detyrat e ruajtjes nuk na nevojitet një performancë e lartë. Nga ato që na duhen, duhet të theksoj një volum të madh RAM, disa konektues SATA dhe karta rrjeti të mira. Duke qenë se serveri im do të funksionojë në vendin tim të përhershëm, niveli i zhurmës ka gjithashtu rëndësi.

Kërkimet e mia i fillova me eBay. Edhe pse aty gjeta shumë Dell PowerEdge R410/R210 të përdorura me çmim nën $100, duke pasur përvojë në një ambiente serverësh, e dija se këto njësitë 1U shkaktonin shumë zëra dhe nuk ishin të përshtatshme për përdorim në shtëpi. Në përgjithësi, serverat në formën tower janë më pak të zhurmshëm, por, fatkeqësisht, në eBay ishin të listuar pak dhe të gjithë ishin ose të shtrenjtë ose me kapacitet të ulët.

Vendi tjetër për t'u kërkuar ishte faqja e Craiglist, ku gjetëm një person që shiste një HP ProLiant N40L të përdorur për vetëm $75! Ishim të njohur me këta serverë, të cilët, madje edhe në gjendje të përdorur, zakonisht kushtojnë rreth $300, prandaj i dërgova një mesazh shitësit në shpresë se shpallja ishte akoma aktive. Pasi mësova që ishte, pa e menduar gjatë, u drejtova për në San Mateo për ta marrë këtë server, i cili, që nga pamja e parë, më gëzoi qartë. Kishte pak dëmtim minimal dhe, përveç një pluhuri të vogël, gjithçka tjetër ishte në gjendje të shkëlqyer.

Krijimi i një sistemi NAS të lirë shtëpiak me Linux
Fotografia e serverit, menjëherë pas blerjes

Ja specifikimi i paketës që kam blerë:

  • CPU: Procesori AMD Turion(tm) II Neo N40L Dual-Core (64-bit)
  • RAM: 8 GB RAM jo-ECC (e instaluar nga pronari i mĂ«parshĂ«m)
  • Flash: 4 GB USB Drive
  • KonektorĂ«t SATA: 4 + 1
  • NIC: 1 Gbps NIC i integruar

Nuk është nevoja të them se, pavarësisht nga mosha disa vjeçare, specifikimi i këtij serveri ende tejkalon shumicën e mundësive të sistemeve NAS të ofruara në treg, veçanërisht sa i përket RAM-it. Disa kohë më vonë madje bëra një përmirësim në 16 GB ECC me një buffer të rritur dhe mbrojtje të përmirësuar të të dhënave.

Zgjedhja e disqeve të forta

Tani kemi një sistem funksional të shkëlqyer dhe duhet të zgjedhim disqet e forta për të. Sigurisht, për ato $75, unë mora vetëm serverin pa HDD, që nuk më befasoi.

Pas një hulumtimi të vogël, kuptova se për të punuar me sistemet NAS gjatë 24/7, HDD-të WD Red janë më të përshtatshmit. Për t'i blerë, shkova në Amazon dhe bleva 4 njësi me nga 3 TB. Në thelb, mund të lidhni çdo HDD sipas preferencës, por sigurohuni që të jenë të njëjtë në kapacitet dhe shpejtësi. Kjo do t'ju ndihmojë të evitoni probleme të mundshme me performancën RAID në të ardhmen.

Konfigurimi i sistemit

Mendoj se shumĂ« do tĂ« pĂ«rdorin sistemin pĂ«r montazhet e tyre NAS FreeNAS, dhe nuk ka asgjĂ« tĂ« keqe nĂ« kĂ«tĂ«. MegjithatĂ«, pavarĂ«sisht mundĂ«sisĂ« pĂ«r ta instaluar kĂ«tĂ« sistem nĂ« serverin tim, preferova tĂ« pĂ«rdor CentOS, pasi sistemi ZFS mbi Linux Ă«shtĂ« fillimisht i pĂ«rgatitur pĂ«r mjedisin e prodhimit, dhe menaxhimi i serverit Linux mĂ« Ă«shtĂ« mĂ« i njohur. PĂ«r mĂ« tepĂ«r, nuk isha i interesuar pĂ«r ndonjĂ« ndĂ«rfaqe moderne dhe funksione qĂ« ofron FreeNAS – mjaftonte njĂ« grup RAIDZ dhe ndarja pĂ«rmes AFP.

TĂ« instalohet CentOS nĂ« USB mjafton tĂ« jetĂ« i thjeshtĂ« – mjafton tĂ« specifikoni USB-nĂ« si burim ngarkimi, dhe gjatĂ« nisjes, asistenti i instalimit do t'ju ndihmojĂ« nĂ« tĂ« gjitha hapat e saj.

Ndërtoni RAID

Pas përfundimit me sukses të instalimit të CentOS, unë gjithashtu instalova ZFS mbi Linux, duke ndjekur hapat e përmendur këtu.

Pas përfundimit të këtij procesi, ngarkova modul ZFS Kernel:

$ sudo modprobe zfs

Dhe krijova një grup RAIDZ1 me 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

Vini re se këtu po përdor ID-të e hard diskëve në vend të emrave të tyre të shfaqur (sdx), për të zvogëluar mundësinë e dështimit të montimit pas ngarkimit për shkak të ndryshimit të shkronjave.

Unë gjithashtu shtova ZIL dhe cache L2ARC, duke e ndarë këtë SSD në dy pjesë: 5GB për ZIL dhe pjesën tjetër për L2ARC.

Sa i përket RAIDZ1, ai mund të përballojë dështimin e 1 disku. Shumë pretendojnë se ky opsion pool-i nuk duhet përdorur për shkak të mundësisë së dështimit të diskut të dytë gjatë risndërtimit të RAID-it, çka rrezikon humbjen e të dhënave. Unë e injorova këtë rekomandim, pasi rregullisht bëja kopje rezervë të të dhënave të rëndësishme në një pajisje të largët, dhe dështimi i plotë i grupit mund të ndikonte vetëm në disponueshmërinë e të dhënave, por jo në ruajtjen e tyre. Nëse nuk keni mundësi të bëni kopje rezervë, ishte më mirë të përdorni zgjidhje si RAIDZ2 ose RAID10.

Për të siguruar suksesin e krijimit të pool-it, mund të ekzekutoni:

$ sudo zpool status

dhe

$ sudo zfs list
EMRI                               PËRDORUR  DISPONIBIL  REFER  PIKAPRISHJE
data                               510G  7.16T   140K  "/mnt/data"

Për të drejtuar ZFS monton vetëm të krijuarin pool direkt në /, e cila, në përgjithësi, nuk është e dëshirueshme. Mund ta ndryshoni këtë duke ekzekutuar:

zfs set mountpoint="/mnt/data" data

Nga këtu mund të zgjidhni të krijoni një ose disa dataset-e për ruajtjen e të dhënave. Kam krijuar dy, një për kopje rezervë Time Machine dhe një tjetër për ruajtje të përgjithshme skedarësh. Vëllimi i dataset-it Time Machine e kam kufizuar me një kuotë prej 512 GB, për të parandaluar rritjen e tij të pafund.

Optimizimi

zfs set compression=on data

Ky komandë aktivizon mbështetje për kompresionin ZFS. Kompresioni përdor minimal energji CPU, por mund të përmirësojë ndjeshëm kapacitetin e I/O, prandaj rekomandohet gjithmonë përdorimi i tij.

zfs set relatime=on data

Me këtë komandë ne reduktojmë numrin e azhurnimeve në atime, për të ulur gjenerimin e IOPS kur qasemi në skedarë.

Për default, 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, ky vëllim mund të rritet në mënyrë të sigurt deri në 90%, pasi aplikacione të tjera në server nuk do të funksionojnë.

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

Më pas, me arc_summary.py mund të sigurohemi 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
...

Konfigurimi i detyrave të përsëritura

Kam përdorur systemd-zpool-scrub për të konfiguruar timer-at e systemd për të kryer pastrimin çdo javë dhe zfs-auto-snapshot për krijimin automatik të snapshots çdo 15 minuta, 1 orë dhe 1 ditë.

Instalimi i Netatalk

Netatalk është një realizim i hapur i AFP (Protokollit të Arkivimit të Apple). Duke ndjekur udhëzimet zyrtare për instalim për CentOSS, e krijova dhe e instalova paketën RPM brenda pak minutash.

Konfigurimi i Konfiguracionit

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

[Global]
; Rregullat globale të serverit
mimic model = TimeCapsule6,106

; [Homes]
; baza e rregullave 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 konsiderueshëm në rastin tim, pasi për default Netatalk shkruan databazën CNID në rrënjën e sistemit të skedarëve, që ishte krejtësisht e padëshirueshme, pasi sistemi im kryesor i skedarëve funksionon mbi USB, dhe për këtë arsye punon relativisht ngadalë. Aktivizimi i kësaj vol dbnest çon në ruajtjen e databazës në rrënjën e Volume, që në këtë rast i referohet rezervës ZFS dhe tashmë është shumë më efikas.

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 siç duhet, makina juaj duhet të shfaqet në Finder dhe Time Machine gjithashtu duhet të funksionojë.

Konfigurime të tjera
Monitorimi S.M.A.R.T

ËshtĂ« e rekomanduar tĂ« monitoroni statusin e disqeve tuaja pĂ«r tĂ« parandaluar dĂ«shtimin e tyre.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Demon për UPS

Monitoron ngarkesën e UPS APC dhe fik sistemin kur ngarkesa bëhet kritikisht e ulët.

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

Përmirësimi harduerik

Një javë pas konfigurimit të sistemit, fillova të shqetësohem gjithnjë e më shumë se në server ishte instaluar memorie pa ECC. Për më tepër, në rastin e ZFS, memoria e shtuar për buferizim do të ishte shumë e nevojshme. Prandaj, u ktheva përsëri te Amazon, ku bleva 2x Kingston DDR3 8GB ECC RAM për $80 çdo njësi dhe zëvendësova RAM-në e desktopit që ishte instaluar nga pronari i kaluar. Sistemi u ngarkua pa asnjë problem dhe u sigurova që mbështetja ECC ishte aktivizuar:

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

Rezultati

Rezultati më gëzoi shumë. Tani mund të ngarkoj vazhdimisht një lidhje LAN 1Gbps të serverit duke kopjuar skedarë, dhe Time Machine funksionon pa ndonjë problem. Pra, në përgjithësi, jam i kënaqur me konfigurimin.

Kostoja përfundimtare:

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

Përveç kësaj = $689

Tani mund të them se çmimi ia vlejti.

A bëni vetë servera NAS?

Krijimi i një sistemi NAS të lirë shtëpiak me Linux

Krijimi i një sistemi NAS të lirë shtëpiak me Linux

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster