Wie viele andere MacBook Pro-Nutzer hatte ich mit dem Problem der unzureichenden internen Speicherkapazität zu kämpfen. Genauer gesagt, mein täglicher rMBP war mit einer SSD von gerade einmal 256GB ausgestattet, was natürlich auf Dauer nicht ausreicht.
Als ich zudem damit begann, während meiner Flüge Videos aufzunehmen, verschärfte sich die Situation nur noch. Der Speicherplatz der aufgenommenen Materialien nach solchen Flügen betrug über 50 GB, und meine unglückliche 256GB SSD war bald überfüllt, was mich zwang, eine externe Festplatte mit 1TB zu erwerben. Dennoch, nach einem Jahr konnte auch diese nicht mehr mit den von mir generierten Datenmengen umgehen, ganz zu schweigen von dem Mangel an Redundanz und Backup, die sie ungeeignet für die Speicherung wichtiger Informationen machten.
Irgendwann beschloss ich, ein größeres NAS-System zusammenzustellen, in der Hoffnung, dass dieses System wenigstens ein paar Jahre durchhält, ohne dass ich ein weiteres Upgrade vornehmen muss.
Ich habe diesen Artikel in erster Linie als Gedächtnisstütze geschrieben, um festzuhalten, was genau ich gemacht habe, falls ich es jemals wieder tun muss. Ich hoffe, dass er auch für Sie nützlich ist, wenn Sie dasselbe in Betracht ziehen.
Vielleicht wäre es einfacher, einfach zu kaufen?
Wir wissen also, was wir wollen, bleibt die Frage, wie wir es umsetzen?
Zunächst habe ich mich mit kommerziellen Lösungen beschäftigt und insbesondere die Firma Synology in Betracht gezogen, die als Anbieter von hervorragenden NAS-Systemen für Endverbraucher gilt. Allerdings waren die Kosten für diesen Service recht hoch. Das günstigste System mit 4 Einschüben kostet über 300 €, und die Festplatten sind nicht im Lieferumfang enthalten. Zudem ist die interne Ausstattung eines solchen Sets nicht besonders beeindruckend, was die tatsächliche Leistung in Frage stellt.
Da dachte ich mir: Warum nicht selbst einen NAS-Server zusammenstellen?
Suche nach dem passenden Server
Wenn du einen solchen Server zusammenstellen möchtest, ist es zuerst wichtig, die richtige Hardware zu finden. Ein gebrauchter Server sollte für dieses Setup gut geeignet sein, da für Speicheraufgaben keine besondere Leistung erforderlich ist. Erwähnenswert ist der große RAM, mehrere SATA-Anschlüsse und gute Netzwerkkarten. Da mein Server an meinem Wohnort betrieben wird, spielt auch das Geräuschlevel eine Rolle.
Meine Suche begann bei eBay. Obwohl ich dort viele gebrauchte Dell PowerEdge R410/R210 für unter 100 $ fand, wusste ich aus meiner Erfahrung im Rechenzentrum, dass diese 1U-Server zu laut sind und sich nicht für den Heimgebrauch eignen. In der Regel sind Tower-Server leiser, aber leider gab es auf eBay nur wenige, und sie waren entweder teuer oder schwach im Vergleich.
Als Nächstes schaute ich auf Craigslist, wo ich einen Verkäufer fand, der einen gebrauchten HP ProLiant N40L für nur 75 $ anbot! Ich kannte diese Server, die selbst gebraucht normalerweise um die 300 $ kosten, also schrieb ich dem Verkäufer in der Hoffnung, dass die Anzeige noch aktuell ist. Als ich erfuhr, dass dies der Fall ist, machte ich mich ohne zu zögern auf den Weg nach San Mateo, um diesen Server abzuholen, der mich bereits beim ersten Blick erfreute. Er wies nur minimale Abnutzung auf und war bis auf eine kleine Staubschicht in hervorragendem Zustand.

Foto des Servers, direkt nach dem Kauf
Hier die Spezifikation des von mir erworbenen Systems:
- CPU: AMD Turion(tm) II Neo N40L Dual-Core Prozessor (64-bit)
- RAM: 8 GB non-ECC RAM (vom vorherigen Besitzer installiert)
- Flash: 4 GB USB Laufwerk
- SATA-Anschlüsse: 4 + 1
- Netzwerkadapter (NIC): 1 Gbps Onboard-NIC
Es versteht sich von selbst, dass trotz des Alters von mehreren Jahren die Spezifikation dieses Servers nach wie vor die meisten auf dem Markt angebotenen NAS-Systeme übertrifft, insbesondere im Hinblick auf den Arbeitsspeicher. Später habe ich sogar auf 16 GB ECC mit erweitertem Puffer und erhöhter Datensicherheit aufgerüstet.
Auswahl der Festplatten
Jetzt haben wir ein großartiges funktionierendes System, und es bleibt nur noch, die Festplatten auszuwählen. Offensichtlich habe ich für die 75 $ nur den Server ohne HDD erhalten, was mich nicht überrascht hat.
Nach einer kleinen Recherche stellte ich fest, dass für den Betrieb von NAS-Systemen im 24/7-Betrieb am besten HDDs der Serie WD Red geeignet sind. Ich wendete mich an Amazon, um 4 Exemplare mit jeweils 3 TB zu kaufen. Grundsätzlich können Sie jede bevorzugte HDD anschließen, aber stellen Sie sicher, dass sie gleich groß und schnell sind. Das hilft, mögliche Leistungsprobleme im RAID-Setup zu vermeiden.
Systemeinrichtung
Ich denke, viele werden für ihre NAS-Bauten das System , und das ist nichts Schlechtes. Doch obwohl ich die Möglichkeit habe, dieses System auf meinem Server zu installieren, habe ich mich für CentOS entschieden, da das ZFS on Linux-System ursprünglich für die Produktionsumgebung vorbereitet ist und ich insgesamt mit der Verwaltung von Linux-Servern vertrauter bin. Außerdem war ich nicht an der schickeren Oberfläche und den Funktionen von FreeNAS interessiert – mir genügte ein RAIDZ-Array und die AFP-Freigabe.
Es ist recht einfach, CentOS auf einen USB-Stick zu installieren – man muss lediglich den USB-Stick als Bootquelle angeben, und der Installationsassistent führt Sie durch alle Schritte.
RAID-Konfiguration
Nach der erfolgreichen Installation von CentOS habe ich auch ZFS on Linux installiert, indem ich die hier aufgeführten .
Nach Abschluss dieses Prozesses habe ich das ZFS-Kernelmodul geladen:
$ sudo modprobe zfs Und ich habe ein RAIDZ1-Array mit dem Befehl erstellt 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 Bitte beachten Sie, dass ich hier die IDs der Festplatten anstelle ihrer angezeigten Namen verwende (sdx), um die Wahrscheinlichkeit eines Fehlers beim Zugriff nach dem Hochladen aufgrund der Änderung der Laufwerksbezeichnung zu verringern.
Ich habe auch ZIL und L2ARC-Cache hinzugefügt, die auf einer separaten SSD laufen, und diese SSD in zwei Partitionen aufgeteilt: 5 GB für ZIL und den Rest für L2ARC.
Was RAIDZ1 betrifft, so kann es den Ausfall einer Festplatte überstehen. Viele argumentieren, dass diese Pool-Variante aufgrund der hohen Wahrscheinlichkeit eines zweiten Ausfalls während des Wideraufbaus von RAID nicht verwendet werden sollte, was zu Datenverlust führen könnte. Ich habe diese Empfehlung jedoch ignoriert, da ich regelmäßig wichtige Daten auf einem externen Gerät gesichert habe. Ein Ausfall des gesamten Arrays könnte nur die Verfügbarkeit der Daten, nicht aber deren Sicherheit beeinträchtigen. Wenn Sie keine Möglichkeit haben, Backups zu erstellen, wäre es besser, Lösungen wie RAIDZ2 oder RAID10 zu verwenden.
Um den erfolgreichen Aufbau des Pools zu überprüfen, kann Folgendes ausgeführt werden:
$ sudo zpool statusund
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data Standardmäßig mountet ZFS den gerade erstellten Pool direkt in /, was in der Regel unerwünscht ist. Dies kann geändert werden, indem Folgendes ausgeführt wird:
zfs set mountpoint=/mnt/data dataVon hier aus können Sie einen oder mehrere Datensätze zur Datenspeicherung erstellen. Ich habe zwei erstellt: einen für das Time Machine-Backup und einen für den allgemeinen Dateispeicher. Die Größe des Time Machine-Datensatzes habe ich auf 512 GB begrenzt, um ein unkontrolliertes Wachstum zu verhindern.
Optimierung
zfs set compression=on dataDieser Befehl aktiviert die Unterstützung für ZFS-Kompression. Die Kompression benötigt minimalen CPU-Ressourcen, kann jedoch die I/O-Durchsatz erheblich verbessern, weshalb ihre Verwendung immer empfohlen wird.
zfs set relatime=on data Mit diesem Befehl reduzieren wir die Anzahl der Aktualisierungen auf atime, um die IOPS-Erzeugung beim Zugriff auf Dateien zu verringern.
Standardmäßig verwendet ZFS on Linux für ARC 50 % des physischen Speichers. In meinem Fall, bei einer geringen Gesamtzahl an Dateien, kann dieser Wert sicher auf 90 % erhöht werden, da keine anderen Anwendungen auf dem Server ausgeführt werden.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112Dann kann mit Hilfe von überprüft werden, ob die Änderungen wirksam geworden sind:
$ python arc_summary.py
...
ARC-Größe: 100,05% 11,55 GiB
Zielgröße (adaptive): 100,00% 11,54 GiB
Mindestgröße (harte Grenze): 0,27% 32,00 MiB
Maximalgröße (Hochwasser): 369:1 11,54 GiB
...Einrichtung wiederkehrender Aufgaben
Ich habe verwendet zur Einrichtung von systemd-Timern für die wöchentliche Bereinigung und zur automatischen Erstellung von Snapshot-Kopien alle 15 Minuten, 1 Stunde und 1 Tag.
Installation von Netatalk
ist eine offene Implementierung des AFP (). Entsprechend , konnte ich innerhalb weniger Minuten ein RPM-Paket zusammenstellen und installieren.
Konfigurationseinrichtung
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x Konfigurationsdatei
;
[Global]
; Globale Servereinstellungen
mimic model = TimeCapsule6,106
; [Homes]
; basedir regex = /home
; [Mein AFP Volumen]
; path = /path/to/volume
; [Mein Time Machine Volumen]
; path = /path/to/backup
; time machine = yes
[Datong's Dateien]
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 nicht mit einem Bindestrich beginnt. In YAML bedeutet dies, dass vol dbnest stellt in meinem Fall eine erhebliche Verbesserung dar, da Netatalk standardmäßig die CNID-Datenbank in das Wurzelverzeichnis des Dateisystems schreibt, was äußerst unerwünscht war, da mein Hauptdateisystem auf USB läuft und daher relativ langsam arbeitet. Die Aktivierung von vol dbnest führt dazu, dass die Datenbank im Wurzelverzeichnis des Volumes gespeichert wird, das in diesem Fall zum ZFS-Pool gehört und bereits um einiges leistungsfähiger ist.
Öffnen der Ports in der 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
Wenn alles korrekt eingerichtet wurde, sollte Ihr Rechner im Finder angezeigt werden und Time Machine sollte ebenfalls funktionieren.
Zusätzliche Einstellungen
S.M.A.R.T-Überwachung
Es wird empfohlen, den Status Ihrer Festplatten zu überwachen, um Ausfälle vorzubeugen.
$ sudo yum install smartmontools
$ sudo systemctl start smartdDämon für die USV
Überwacht den Ladezustand der APC-USV und schaltet das System ab, wenn der Akku kritisch niedrig ist.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsdHardwareaufrüstungen
Eine Woche nach der Einrichtung des Systems begann ich mir zunehmend Sorgen zu machen, dass im Server RAM ohne ECC verbaut ist. Außerdem wäre zusätzlicher RAM zur Pufferung bei ZFS sehr hilfreich. Daher wandte ich mich erneut an Amazon, wo ich 2x Kingston DDR3 8GB ECC RAM für jeweils 80 $ kaufte und den vom Vorbesitzer installierten Desktop-RAM austauschte. Das System startete beim ersten Versuch problemlos und ich stellte sicher, dass die ECC-Unterstützung aktiviert war:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC aktiviert.Ergebnis
Das Ergebnis hat mich sehr erfreut. Jetzt kann ich ständig eine 1Gbps LAN-Verbindung des Servers nutzen, um Dateien zu kopieren, und Time Machine funktioniert einwandfrei. Insgesamt bin ich mit der Einrichtung sehr zufrieden.
Gesamtkosten:
- 1 * HP ProLiant N40L = 75 $
- 2 * 8 GB ECC RAM = 174 $
- 4 * WD Red 3 TB HDD = 440 $
Gesamt = $689
Jetzt kann ich sagen, dass der Preis gerechtfertigt war.
Bauen Sie Ihre NAS-Server selbst?
Quelle: habr.com
