Bou 'n goedkoop Linux Home NAS-stelsel

Bou 'n goedkoop Linux Home NAS-stelsel

Ek, soos baie ander MacBook Pro-gebruikers, het te kampe gehad met die probleem van onvoldoende interne geheue. Om meer presies te wees, die rMBP wat ek daagliks gebruik het, was toegerus met 'n SSD van slegs 256 GB, wat natuurlik nie genoeg was vir 'n lang tyd nie.

En toe ek begin video's opneem tydens my vlugte, het die situasie net erger geword. Die volume beeldmateriaal na sulke vlugte was 50+ GB, en my ongelukkige 256 GB SSD het baie gou vol geword, wat my gedwing het om 'n 1TB eksterne skyf te koop. Na een jaar kon dit egter nie tred hou met die volumes data wat ek genereer nie, om nie eens te praat van die gebrek aan oortolligheid nie en rugsteun het dit ongeskik gemaak om belangrike inligting te huisves.

So, op 'n stadium het ek besluit om 'n groot-kapasiteit NAS te bou in die hoop dat hierdie stelsel ten minste 'n paar jaar sou hou sonder om nog 'n opgradering te vereis.

Ek het hierdie artikel hoofsaaklik geskryf as 'n herinnering aan presies wat en hoe ek gedoen het ingeval ek dit weer moet doen. Ek hoop dit sal nuttig wees vir jou as jy besluit om dieselfde te doen.

Miskien is dit makliker om te koop?

So, ons weet wat ons wil kry, die vraag bly hoe?

Ek het eers na kommersiële oplossings gekyk en veral na Synology gekyk, wat veronderstel was om die beste verbruikersgraad NAS-stelsels op die mark te verskaf. Die koste van hierdie diens was egter redelik hoog. Die goedkoopste 4-baai-stelsel kos $300+ en sluit nie hardeskywe in nie. Daarbenewens is die interne vulling van so 'n kit nie besonder indrukwekkend nie, wat die werklike prestasie daarvan bevraagteken.

Toe dink ek: hoekom bou jy nie self 'n NAS-bediener nie?

Vind die regte bediener

As jy so 'n bediener gaan voltooi, moet jy eerstens die regte hardeware vind. 'n Gebruikte bediener behoort goed te wees vir hierdie bou, aangesien ons nie veel werkverrigting vir bergingstake nodig het nie. Van die nodige moet kennis geneem word van 'n groot hoeveelheid RAM, verskeie SATA-verbindings en goeie netwerkkaarte. Aangesien my bediener by my permanente woonplek sal werk, maak die geraasvlak ook saak.

Ek het my soektog op eBay begin. Alhoewel ek baie gebruikte Dell PowerEdge R410/R210's onder $100 daar gevind het, nadat ek in 'n bedienerkamer gewerk het, het ek geweet dat hierdie 1U-eenhede te raserig was en nie geskik is vir tuisgebruik nie. As 'n reël is toringbedieners dikwels minder raserig, maar ongelukkig was daar min van hulle op eBay gelys, en hulle was almal óf duur óf onderkrag.

Die volgende plek om te kyk was Craiglist, waar ek 'n man gevind het wat 'n gebruikte HP ProLiant N40L vir slegs $75 verkoop! Ek was vertroud met hierdie bedieners, wat gewoonlik ongeveer $ 300 kos selfs gebruik, so ek het die verkoper e-pos gestuur met die hoop dat die aanbieding nog beskikbaar is. Nadat ek verneem het dat dit die geval is, het ek, sonder om twee keer te dink, na San Mateo gegaan om hierdie bediener op te tel, wat my reeds met die eerste oogopslag beslis behaag het. Dit het minimale slytasie gehad en, afgesien van 'n bietjie stof, was alles wonderlik.

Bou 'n goedkoop Linux Home NAS-stelsel
Bedienerfoto, onmiddellik na aankoop

En hier is die spesifikasie van die kit wat ek gekoop het:

  • CPU: AMD Turion(tm) II Neo N40L Dubbelkernverwerker (64-bis)
  • RAM: 8 GB nie-ECC RAM (geïnstalleer deur vorige eienaar)
  • flits: 4GB USB Drive
  • SATA-verbindings:4+1
  • NIC: 1 Gbps aan boord NIC

Nodeloos om te sê, ondanks die feit dat dit etlike jare oud is, vaar die spesifikasie van hierdie bediener steeds beter as die meeste NAS-opsies op die mark, veral wat RAM betref. 'n Bietjie later het ek selfs opgegradeer na 16 GB ECC met meer bufferspasie en beter databeskerming.

Die keuse van hardeskywe

Nou het ons 'n uitstekende werkende stelsel en dit bly om hardeskywe daarvoor te kies. Dit is duidelik dat ek vir daardie $75 net die bediener self gekry het sonder die HDD, wat my nie verras het nie.

Nadat ek 'n bietjie navorsing gedoen het, het ek gevind dat 24/7 NAS-aandrywers die beste geskik is vir WD Red HDD's. Om dit te koop, het ek my na Amazon gewend, waar ek 4 kopieë van 3 TB elk gekoop het. Trouens, jy kan enige voorkeur HDD koppel, maar maak seker dat hulle dieselfde grootte en spoed het. Dit sal jou help om potensiële RAID-werkverrigtingprobleme op die lang termyn te vermy.

Stelselinstelling

Ek dink dat baie die stelsel sal gebruik vir hul NAS-bou. FreeNAS, en daar is niks fout daarmee nie. Ten spyte van die moontlikheid om hierdie stelsel op my bediener te installeer, het ek egter verkies om CentOS te gebruik, aangesien die ZFS op Linux-stelsel aanvanklik voorberei is vir 'n produksie-omgewing, en oor die algemeen is ek meer vertroud met die bestuur van 'n Linux-bediener. Ek was ook nie geïnteresseerd in die spoggerige koppelvlak en funksies wat FreeNAS verskaf het nie - ek was tevrede met die RAIDZ-skikking en AFP-deling.

Die installering van CentOS op USB is redelik eenvoudig - spesifiseer net USB as die selflaaibron, en wanneer jy begin, sal die installasie-assistent jou deur al die stappe lei.

RAID-samestelling

Nadat ek CentOS suksesvol geïnstalleer het, het ek ook ZFS op Linux geïnstalleer deur die gelys te volg hier tree.

Met hierdie proses voltooi, het ek die ZFS Kernel-module gelaai:

$ sudo modprobe zfs

En het 'n RAIDZ1-skikking geskep deur die opdrag te gebruik 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

Let daarop dat ek hier hardeskyf-ID's gebruik in plaas van hul vertoonname (sdx) om die kans te verminder dat hulle versuim om na selflaai te monteer as gevolg van 'n letterverandering.

Ek het ook ZIL- en L2ARC-kas bygevoeg wat op 'n aparte SSD loop, en hierdie SSD in twee partisies verdeel: 5GB vir ZIL en die res vir L2ARC.

Wat RAIDZ1 betref, dit kan 1 skyffout weerstaan. Baie redeneer dat hierdie poel-opsie nie gebruik moet word nie as gevolg van die moontlikheid dat 'n tweede skyf tydens die RAID-herbou misluk, wat belaai is met dataverlies. Ek het hierdie aanbeveling afgeskeep, want ek het gereeld belangrike data op 'n afgeleë toestel gerugsteun, en die mislukking van selfs die hele skikking kan slegs die beskikbaarheid van data beïnvloed, maar nie hul veiligheid nie. As jy nie die vermoë het om rugsteun te maak nie, sal dit beter wees om oplossings soos RAIDZ2 of RAID10 te gebruik.

U kan verifieer dat die swembad suksesvol geskep is deur:

$ sudo zpool status

и

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

By verstek monteer ZFS die nuutgeskepte swembad direk op /wat oor die algemeen ongewens is. Jy kan dit verander deur te doen:

zfs set mountpoint=/mnt/data data

Van hier af kan jy kies om een ​​of meer datastelle te skep om jou data te stoor. Ek het twee geskep, een vir die Time Machine-rugsteun en een vir die gedeelde lêerberging. Ek het die grootte van die Time Machine-datastel beperk tot 'n kwota van 512 GB om te verhoed dat dit onbepaald groei.

Optimization

zfs set compression=on data

Hierdie opdrag aktiveer ZFS-kompressie-ondersteuning. Kompressie gebruik minimale SVE-krag, maar kan I/O-deurset aansienlik verbeter, so dit word altyd aanbeveel.

zfs set relatime=on data

Met hierdie opdrag verminder ons die aantal opdaterings na atimeom die generering van IOPS te verminder wanneer toegang tot lêers verkry word.

By verstek gebruik ZFS op Linux 50% van fisiese geheue vir ARC. In my geval, wanneer die totale aantal lêers klein is, kan hierdie bedrag veilig tot 90% verhoog word, aangesien ander toepassings op die bediener nie sal loop nie.

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

Dan met die hulp arc_summary.py Jy kan verifieer dat die veranderinge in werking getree het:

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

Opstel van herhalende take

ek het gebruik systemd-zpool-skrop om systemd timers te stel om een ​​keer per week skoon te maak, en zfs-outo-snapshot om elke 15 minute, 1 uur en 1 dag outomaties kiekies te skep.

Netatalk installasie

nettalk is 'n oopbron-implementering van AFP (Apple-liasseringsprotokol). Volgende amptelike installasie-instruksies vir CentOS, ek het letterlik 'n ingeboude en geïnstalleerde RPM-pakket binne 'n paar minute gekry.

Konfigurasie opstelling

$ 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

Let asseblief daarop dat vol dbnest is 'n groot verbetering in my geval, aangesien Netatalk by verstek die CNID-databasis na die wortel van die lêerstelsel skryf, wat nie wenslik was nie aangesien my hooflêerstelsel op USB is, en dus relatief stadig is. Skakel dieselfde aan vol dbnest lei tot die stoor van die databasis in die Volume-wortel, wat in hierdie geval aan die ZFS-poel behoort en reeds 'n orde van grootte vinniger is.

Aktiveer poorte in die 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=publiek --add-port=afpovertcp/tcp
As alles korrek opgestel is, moet jou masjien in die Finder verskyn, en Time Machine behoort ook te werk.

Bykomende instellings
SMART monitering

Dit word aanbeveel om die status van u skywe te monitor om te voorkom dat hulle misluk.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Daemon vir UPS

Monitor die lading van die APC UPS en skakel die stelsel af wanneer die lading krities laag word.

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

Hardeware opgradering

'n Week nadat ek die stelsel opgestel het, het ek meer en meer begin bekommer oor nie-ECC geheue wat in die bediener geïnstalleer is. Daarbenewens, in die geval van ZFS, sal addisionele geheue vir buffering baie nuttig wees. Ek het dus weer na Amazon gedraai, waar ek 2x Kingston DDR3 8GB ECC RAM vir $80 elk gekoop het en die lessenaar-RAM wat die vorige eienaar geïnstalleer het, vervang het. Die stelsel het die eerste keer sonder enige probleme opgestart, en ek het seker gemaak dat ECC-ondersteuning geaktiveer is:

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

Gevolg

Die resultaat het my baie gelukkig gemaak. Nou kan ek voortdurend die bediener se 1Gbps LAN-verbinding laai deur lêers te kopieer, en Time Machine werk foutloos. So, oor die algemeen, is ek tevrede met die opstelling.

Die totale koste:

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

In totaal = $ 689

Nou kan ek sê dat die prys die moeite werd was.

Maak jy jou eie NAS-bedieners?

Bou 'n goedkoop Linux Home NAS-stelsel

Bou 'n goedkoop Linux Home NAS-stelsel

Bron: will.com

Voeg 'n opmerking