Ik werd, net als veel andere MacBook Pro-gebruikers, geconfronteerd met het probleem van onvoldoende intern geheugen. Om preciezer te zijn: de rMBP die ik dagelijks gebruikte was uitgerust met een SSD met een capaciteit van slechts 256 GB, wat uiteraard lange tijd niet genoeg was.
En toen ik bovendien tijdens mijn vluchten video's begon op te nemen, werd de situatie alleen maar erger. Het volume aan beeldmateriaal dat na dergelijke vluchten werd gefilmd, bedroeg meer dan 50 GB, en mijn arme SSD van 256 GB was al snel vol, waardoor ik een externe schijf van 1 TB moest kopen. Na een jaar kon het echter de hoeveelheid gegevens die ik genereerde niet meer verwerken, om nog maar te zwijgen van het gebrek aan redundantie en back-up, waardoor het ongeschikt werd voor het hosten van belangrijke informatie.
Dus op een gegeven moment besloot ik een NAS met grote capaciteit te bouwen in de hoop dat dit systeem minstens een paar jaar mee zou gaan zonder dat er nog een upgrade nodig was.
Ik heb dit artikel in de eerste plaats geschreven als herinnering aan wat ik precies heb gedaan en hoe ik het heb gedaan, voor het geval ik het opnieuw moet doen. Ik hoop dat het ook voor jou nuttig zal zijn als je besluit hetzelfde te doen.
Misschien is kopen makkelijker?
We weten dus wat we willen bereiken, de vraag blijft: hoe?
Ik keek eerst naar commerciële oplossingen en keek vooral naar Synology, dat de beste NAS-systemen voor consumenten op de markt moest bieden. De kosten van deze service bleken echter behoorlijk hoog. Het goedkoopste systeem met 4 bays kost $300+ en bevat geen harde schijven. Bovendien is de interne vulling van een dergelijke kit zelf niet bijzonder indrukwekkend, wat de werkelijke prestaties ervan in twijfel trekt.
Toen dacht ik: waarom bouw ik niet zelf een NAS-server?
Een geschikte server vinden
Als je zo'n server gaat voltooien, moet je allereerst de juiste hardware vinden. Een gebruikte server zou prima moeten zijn voor deze build, omdat we niet veel prestaties nodig hebben voor opslagtaken. Van het noodzakelijke moeten een grote hoeveelheid RAM, verschillende SATA-connectoren en goede netwerkkaarten worden opgemerkt. Omdat mijn server op mijn vaste verblijfplaats zal werken, is het geluidsniveau ook van belang.
Ik begon mijn zoektocht op eBay. Hoewel ik daar veel gebruikte Dell PowerEdge R410/R210 vond voor minder dan $ 100, en omdat ik ervaring had met werken in een serverruimte, wist ik dat deze 1U-eenheden te veel lawaai maakten en niet geschikt waren voor thuisgebruik. In de regel zijn torenservers vaak minder luidruchtig, maar helaas waren er maar een paar op eBay, en ze waren allemaal duur of hadden te weinig vermogen.
De volgende plek om te zoeken was Craiglist, waar ik iemand vond die een gebruikte HP ProLiant N40L verkocht voor slechts $ 75! Ik kende deze servers, die normaal gesproken zo'n $300 kosten, zelfs als ze gebruikt werden, dus heb ik de verkoper een e-mail gestuurd in de hoop dat de advertentie nog steeds actief was. Toen ik hoorde dat dit het geval was, ging ik, zonder er twee keer over na te denken, naar San Mateo om deze server op te halen, wat me op het eerste gezicht zeker beviel. Het had minimale slijtage en afgezien van een beetje stof was al het andere geweldig.
Foto van de server, direct na aankoop
Hier zijn de specificaties van de kit die ik heb gekocht:
- CPU: AMD Turion(tm) II Neo N40L dual-coreprocessor (64-bit)
- RAM: 8 GB niet-ECC RAM (geïnstalleerd door vorige eigenaar)
- flash: 4 GB USB-stick
- SATA-connectoren:4+1
- NIC: 1 Gbps ingebouwde netwerkkaart
Het is onnodig om te zeggen dat de specificatie van deze server, ondanks dat hij enkele jaren oud is, nog steeds beter presteert dan de meeste NAS-opties op de markt, vooral op het gebied van RAM. Even later heb ik zelfs geüpgraded naar 16 GB ECC met meer bufferruimte en betere gegevensbescherming.
Harde schijven selecteren
Nu hebben we een uitstekend werkend systeem en het enige dat overblijft is het selecteren van harde schijven ervoor. Het is duidelijk dat ik voor die $ 75 alleen de server zelf kreeg zonder de HDD, wat mij niet verbaasde.
Na wat onderzoek te hebben gedaan, kwam ik erachter dat 24/7 NAS-schijven het meest geschikt zijn voor WD Red HDD's. Om ze te kopen, wendde ik me tot Amazon, waar ik 4 exemplaren van elk 3 TB kocht. In feite kunt u elke gewenste HDD aansluiten, maar zorg ervoor dat deze dezelfde grootte en snelheid hebben. Dit zal u helpen potentiële RAID-prestatieproblemen op de lange termijn te voorkomen.
Systeeminstellingen
Ik denk dat velen het systeem zullen gebruiken voor hun NAS-builds
Het installeren van CentOS op USB is vrij eenvoudig: specificeer gewoon USB als de opstartbron, en bij het starten zal de installatiewizard u door alle fasen leiden.
RAID-assemblage
Nadat ik CentOS succesvol had geïnstalleerd, heb ik ook ZFS op Linux geïnstalleerd door het onderstaande te volgen
Nadat dit proces was voltooid, heb ik de ZFS Kernel-module geladen:
$ sudo modprobe zfs
En creëerde een RAIDZ1-array met behulp van de opdracht 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
Merk op dat ik hier harde schijf-ID's gebruik in plaats van hun weergegeven namen (sdx
) om de kans te verkleinen dat ze na het opstarten niet kunnen worden geactiveerd vanwege een letterwijziging.
Ik heb ook ZIL- en L2ARC-cache toegevoegd die op een aparte SSD draaien, waarbij ik die SSD in twee partities heb gesplitst: 5 GB voor ZIL en de rest voor L2ARC.
Wat RAIDZ1 betreft, deze is bestand tegen 1 schijfstoring. Velen beweren dat deze pooling-optie niet mag worden gebruikt vanwege de mogelijkheid dat een tweede schijf defect raakt tijdens het opnieuw opbouwen van de RAID, wat gepaard gaat met gegevensverlies. Ik heb deze aanbeveling genegeerd, omdat ik regelmatig een back-up heb gemaakt van belangrijke gegevens op een extern apparaat, en het falen van zelfs de hele array kan alleen de beschikbaarheid van gegevens beïnvloeden, maar niet hun veiligheid. Als u niet over de mogelijkheid beschikt om back-ups te maken, kunt u beter oplossingen als RAIDZ2 of RAID10 gebruiken.
U kunt verifiëren dat de pool met succes is aangemaakt door het volgende uit te voeren:
$ sudo zpool status
и
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data
Standaard koppelt ZFS de nieuw gemaakte pool rechtstreeks aan /
, wat over het algemeen onwenselijk is. U kunt dit wijzigen door het volgende uit te voeren:
zfs set mountpoint=/mnt/data data
Hier kunt u ervoor kiezen om een of meer datasets te maken om uw gegevens op te slaan. Ik heb er twee gemaakt, één voor de Time Machine-back-up en één voor de gedeelde bestandsopslag. Ik heb de grootte van de Time Machine-dataset beperkt tot een quotum van 512 GB om te voorkomen dat deze voor onbepaalde tijd zou groeien.
Optimalisatie
zfs set compression=on data
Met deze opdracht wordt ondersteuning voor ZFS-compressie ingeschakeld. Compressie gebruikt minimaal CPU-vermogen, maar kan de I/O-doorvoer aanzienlijk verbeteren, dus dit wordt altijd aanbevolen.
zfs set relatime=on data
Met dit commando verminderen we het aantal updates tot atime
om het genereren van IOPS bij het openen van bestanden te verminderen.
Standaard gebruikt ZFS op Linux 50% van het fysieke geheugen voor ARC. In mijn geval, als het totale aantal bestanden klein is, kan dit veilig worden verhoogd tot 90%, omdat er geen andere applicaties op de server draaien.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112
Vervolgens gebruiken
$ 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
...
Terugkerende taken instellen
ik gebruikte
Netatalk-installatie
Configuratie-instelling
$ 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
Houd er rekening mee dat vol dbnest
is een grote verbetering in mijn geval, omdat Netatalk de CNID-database standaard naar de root van het bestandssysteem schrijft, wat niet wenselijk was omdat mijn hoofdbestandssysteem op USB staat en daarom relatief traag is. Hetzelfde aanzetten vol dbnest
resulteert in het opslaan van de database in de Volume root, die in dit geval tot de ZFS-pool behoort en al een orde van grootte productiever is.
Poorten inschakelen in 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
Als alles correct is ingesteld, zou uw machine in de Finder moeten verschijnen en zou Time Machine ook moeten werken.
Aanvullende instellingen
SMART-monitoring
Het wordt aanbevolen om de status van uw schijven te controleren om schijfstoringen te voorkomen.
$ sudo yum install smartmontools
$ sudo systemctl start smartd
Daemon voor UPS
Bewaakt de lading van de APC UPS en schakelt het systeem uit wanneer de lading kritiek laag wordt.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsd
Hardware-upgrade
Een week na het instellen van het systeem begon ik me steeds meer zorgen te maken over niet-ECC-geheugen dat op de server was geïnstalleerd. Bovendien zal in het geval van ZFS extra geheugen voor buffering erg handig zijn. Dus wendde ik me opnieuw tot Amazon, waar ik 2x Kingston DDR3 8GB ECC RAM kocht voor $ 80 per stuk en het desktop-RAM verving dat de vorige eigenaar had geïnstalleerd. Het systeem startte de eerste keer zonder problemen op en ik zorgde ervoor dat ECC-ondersteuning werd geactiveerd:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.
Resultaat
Ik was erg blij met het resultaat. Nu kan ik de 1Gbps LAN-verbinding van de server voortdurend bezig houden door bestanden te kopiëren, en Time Machine werkt feilloos. Dus over het algemeen ben ik blij met de opzet.
De totale kosten:
- 1 * HP ProLiant N40L = $75
- 2 * 8 GB ECC-RAM = $ 174
- 4 * WD Red 3TB harde schijf = $440
In totaal = $ 689
Nu kan ik zeggen dat de prijs het waard was.
Maak je je eigen NAS-servers?
Bron: www.habr.com