Ich war, wie viele andere MacBook Pro-Benutzer, mit dem Problem konfrontiert, dass der interne Speicher nicht ausreichte. Genauer gesagt war das von mir täglich verwendete rMBP mit einer SSD mit einer Kapazität von nur 256 GB ausgestattet, was natürlich lange Zeit nicht ausreichte.
Und als ich dann noch dazu begann, während meiner Flüge Videos aufzunehmen, wurde die Situation nur noch schlimmer. Die nach solchen Flügen gefilmte Menge an Filmmaterial betrug mehr als 50 GB, und meine schlechte 256-GB-SSD war sehr schnell voll, sodass ich ein externes 1-TB-Laufwerk kaufen musste. Nach einem Jahr war es jedoch nicht mehr in der Lage, die von mir generierte Datenmenge zu verarbeiten, ganz zu schweigen davon, dass es aufgrund der fehlenden Redundanz und Sicherung für das Hosten wichtiger Informationen ungeeignet war.
Also beschloss ich irgendwann, ein großes NAS zu bauen, in der Hoffnung, dass dieses System mindestens ein paar Jahre halten würde, ohne dass ein weiteres Upgrade erforderlich wäre.
Ich habe diesen Artikel in erster Linie geschrieben, um mich daran zu erinnern, was ich genau getan habe und wie ich es getan habe, für den Fall, dass ich es noch einmal tun muss. Ich hoffe, dass es auch für Sie nützlich sein wird, wenn Sie sich dazu entschließen, dasselbe zu tun.
Vielleicht ist es einfacher zu kaufen?
Wir wissen also, was wir erreichen wollen, die Frage bleibt: Wie?
Ich habe mir zunächst kommerzielle Lösungen angesehen und dabei insbesondere Synology in Betracht gezogen, das die besten NAS-Systeme für Endverbraucher auf dem Markt anbieten sollte. Allerdings erwiesen sich die Kosten für diesen Service als recht hoch. Das günstigste 4-Bay-System kostet über 300 US-Dollar und beinhaltet keine Festplatten. Darüber hinaus ist die Innenausstattung eines solchen Kits selbst nicht besonders beeindruckend, was seine tatsächliche Leistung in Frage stellt.
Dann dachte ich: Warum nicht selbst einen NAS-Server bauen?
Suche nach einem geeigneten Server
Wenn Sie einen solchen Server zusammenbauen möchten, müssen Sie zunächst die richtige Hardware finden. Ein gebrauchter Server sollte für diesen Build durchaus geeignet sein, da wir für Storage-Aufgaben nicht viel Leistung benötigen. Zu den notwendigen Dingen zählen ein großer Arbeitsspeicher, mehrere SATA-Anschlüsse und gute Netzwerkkarten. Da mein Server an meinem ständigen Wohnsitz betrieben wird, spielt auch der Geräuschpegel eine Rolle.
Ich habe meine Suche bei eBay gestartet. Obwohl ich dort viele gebrauchte Dell PowerEdge R410/R210 für unter 100 US-Dollar gefunden habe, wusste ich aufgrund meiner Erfahrung in der Arbeit in einem Serverraum, dass diese 1U-Geräte zu viel Lärm machten und nicht für den Heimgebrauch geeignet waren. In der Regel sind Tower-Server oft weniger laut, aber leider gab es bei eBay nur wenige davon und sie waren alle entweder teuer oder leistungsschwach.
Die nächste Anlaufstelle war Craiglist, wo ich jemanden fand, der einen gebrauchten HP ProLiant N40L für nur 75 US-Dollar verkaufte! Ich war mit diesen Servern vertraut, die normalerweise selbst im Gebrauch etwa 300 US-Dollar kosten, also habe ich dem Verkäufer eine E-Mail geschickt, in der Hoffnung, dass die Anzeige noch aktiv ist. Nachdem ich erfahren hatte, dass dies der Fall war, machte ich mich ohne langes Nachdenken auf den Weg nach San Mateo, um diesen Server abzuholen, der mir auf den ersten Blick sehr gefiel. Es hatte nur minimale Gebrauchsspuren und bis auf ein wenig Staub war alles andere großartig.

Foto des Servers, direkt nach dem Kauf
Hier sind die Spezifikationen für das Kit, das ich gekauft habe:
- CPU: AMD Turion(tm) II Neo N40L Dual-Core-Prozessor (64-Bit)
- RAM: 8 GB Nicht-ECC-RAM (vom Vorbesitzer installiert)
- Blinken (Flash): 4 GB USB-Laufwerk
- SATA-Anschlüsse: 4 + 1
- NIC: 1 Gbit/s integrierte Netzwerkkarte
Es versteht sich von selbst, dass dieser Server, obwohl er schon mehrere Jahre alt ist, in seinen Spezifikationen den meisten NAS-Optionen auf dem Markt immer noch überlegen ist, insbesondere was den Arbeitsspeicher angeht. Wenig später habe ich sogar auf 16 GB ECC mit erhöhter Puffergröße und erhöhtem Datenschutz aktualisiert.
Auswahl von Festplatten
Jetzt haben wir ein hervorragend funktionierendes System und müssen nur noch die Festplatten dafür auswählen. Offensichtlich habe ich für die 75 US-Dollar nur den Server selbst ohne Festplatte bekommen, was mich nicht überrascht hat.
Nach ein wenig Recherche habe ich herausgefunden, dass WD Red-Festplatten am besten für den Betrieb von NAS-Systemen rund um die Uhr geeignet sind. Um sie zu kaufen, wandte ich mich an Amazon, wo ich 24 Exemplare mit jeweils 7 TB kaufte. Grundsätzlich können Sie jede beliebige Festplatte anschließen, achten Sie jedoch darauf, dass diese über die gleiche Kapazität und Geschwindigkeit verfügt. Dies hilft Ihnen, mögliche RAID-Leistungsprobleme auf lange Sicht zu vermeiden.
Systemkonfiguration
Ich denke, dass viele das System für ihre NAS-Builds verwenden werden Und daran ist nichts auszusetzen. Trotz der Möglichkeit, dieses System auf meinem Server zu installieren, zog ich es jedoch vor, Folgendes zu verwenden: CentOSda das ZFS-System eingeschaltet ist Linux anfänglich auf das Produktionsumfeld vorbereitet und im allgemeinen Management LinuxIch bin mit dem Server besser vertraut. Außerdem interessierten mich die ausgefeilte Benutzeroberfläche und die Funktionen von FreeNAS nicht – das RAIDZ-Array und die AFP-Freigabe reichten mir völlig.
Installieren CentOS Die Installation über USB ist ganz einfach – geben Sie einfach USB als Startquelle an, und der Installationsassistent führt Sie nach dem Start durch alle Schritte.
RAID-Aufbau
Nach erfolgreicher Installation CentOS Ich habe auch ZFS installiert auf Linux, im Anschluss an die aufgeführten .
Nachdem dieser Vorgang abgeschlossen war, habe ich das ZFS-Kernel-Modul geladen:
$ sudo modprobe zfs Und mit dem Befehl das RAIDZ1-Array 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 Anzeigenamen verwende (sdx), um die Wahrscheinlichkeit zu verringern, dass sie nach dem Booten aufgrund einer Buchstabenänderung nicht gemountet werden können.
Ich habe außerdem ZIL- und L2ARC-Cache hinzugefügt, die auf einer separaten SSD ausgeführt werden, und diese SSD in zwei Partitionen aufgeteilt: 5 GB für ZIL und der Rest für L2ARC.
RAIDZ1 kann einem Festplattenausfall standhalten. Viele argumentieren, dass diese Pool-Option nicht verwendet werden sollte, da die Wahrscheinlichkeit besteht, dass die zweite Festplatte während des RAID-Wiederherstellungsprozesses ausfällt, was zu Datenverlust führen kann. Ich habe diese Empfehlung ignoriert, da ich regelmäßig Sicherungskopien wichtiger Daten auf einem Remote-Gerät erstellt habe und der Ausfall selbst des gesamten Arrays nur die Verfügbarkeit der Daten beeinträchtigen kann, nicht jedoch deren Sicherheit. Wenn Sie nicht über die Möglichkeit verfügen, Backups zu erstellen, ist es besser, Lösungen wie RAIDZ1 oder RAID2 zu verwenden.
Sie können überprüfen, ob die Poolerstellung erfolgreich war, indem Sie Folgendes ausführen:
$ sudo zpool statusи
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data Standardmäßig stellt ZFS den neu erstellten Pool direkt bereit /, was im Allgemeinen unerwünscht ist. Sie können dies ändern, indem Sie Folgendes ausführen:
zfs set mountpoint=/mnt/data dataVon hier aus können Sie einen oder mehrere Datensätze zum Speichern der Daten erstellen. Ich habe zwei erstellt, eine für die Time Machine-Sicherung und eine für die gemeinsame Dateispeicherung. Ich habe die Größe des Time Machine-Datensatzes auf ein Kontingent von 512 GB begrenzt, um ein endloses Wachstum zu verhindern.
Optimierung
zfs set compression=on dataDieser Befehl aktiviert die ZFS-Komprimierungsunterstützung. Die Komprimierung beansprucht nur minimale CPU-Leistung, kann aber den E/A-Durchsatz erheblich verbessern und wird daher immer empfohlen.
zfs set relatime=on data Mit diesem Befehl reduzieren wir die Anzahl der Updates auf atimeum die IOPS-Erzeugung beim Zugriff auf Dateien zu reduzieren.
Standardmäßig ist ZFS aktiviert. Linux ARC nutzt 50 % des physischen Speichers. In meinem Fall, wenn die Gesamtzahl der Dateien gering ist, kann dieser Wert problemlos auf 90 % erhöht werden, da keine anderen Anwendungen auf dem Server laufen.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112Dann mit Sie können überprüfen, ob die Änderungen wirksam wurden:
$ 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
...Wiederkehrende Aufgaben einrichten
ich benutzte um systemd-Timer so zu konfigurieren, dass sie einmal pro Woche eine Bereinigung durchführen und um automatisch alle 15 Minuten, 1 Stunde und 1 Tag Snapshots zu erstellen.
Netatalk installieren
ist eine Open-Source-Implementierung von AFP (). Nachfolgend S, ich habe buchstäblich in nur wenigen Minuten ein zusammengestelltes und installiertes RPM-Paket erhalten.
Konfigurationssetup
$ 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 Bitte beachten Sie, dass vol dbnest ist in meinem Fall eine große Verbesserung, da Netatalk standardmäßig die CNID-Datenbank in das Stammverzeichnis des Dateisystems schreibt, was überhaupt nicht wünschenswert war, da mein Hauptdateisystem auf USB läuft und daher relativ langsam ist. Einschalten vol dbnest führt dazu, dass die Datenbank im Stammverzeichnis des Volumes gespeichert wird, das in diesem Fall zum ZFS-Pool gehört und bereits um eine Größenordnung produktiver ist.
Ports in der Firewall aktivieren
$ 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 richtig konfiguriert wurde, sollte Ihre Maschine im Finder angezeigt werden und Time Machine sollte auch funktionieren.
Zusätzliche Einstellungen
SMART-Überwachung
Es wird empfohlen, den Status Ihrer Festplatten zu überwachen, um Festplattenausfällen vorzubeugen.
$ sudo yum install smartmontools
$ sudo systemctl start smartdDaemon für UPS
Überwacht den Ladezustand der APC-USV und schaltet das System ab, wenn der Ladezustand kritisch niedrig wird.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsdHardware-Upgrade
Eine Woche nach der Einrichtung des Systems machte ich mir zunehmend Sorgen über den Nicht-ECC-Speicher des Servers. Darüber hinaus ist im Fall von ZFS zusätzlicher Speicher zum Puffern sehr nützlich. Also ging ich zurück zu Amazon, wo ich zwei Kingston DDR2 3 GB ECC-RAM für jeweils 8 US-Dollar kaufte und den vom Vorbesitzer installierten Desktop-RAM ersetzte. Das System startete beim ersten Mal problemlos und ich habe sichergestellt, dass die ECC-Unterstützung aktiviert ist:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.Erlebe die Kraft effektiver Ergebnisse
Ich war sehr zufrieden mit dem Ergebnis. Jetzt kann ich die 1-Gbit/s-LAN-Verbindung des Servers durch das Kopieren von Dateien ständig belasten und Time Machine funktioniert einwandfrei. Insgesamt bin ich also mit dem Setup zufrieden.
Die Gesamtkosten:
- 1 * HP ProLiant N40L = 75 $
- 2 * 8 GB ECC-RAM = 174 $
- 4 * WD Red 3 TB HDD = 440 $
Insgesamt = $ 689
Jetzt kann ich sagen, dass sich der Preis gelohnt hat.
Stellen Sie Ihre eigenen NAS-Server her?
Source: habr.com
