Ich, wie viele andere Nutzer eines MacBook Pro, hatte das Problem des unzureichenden internen Speichers. Genauer gesagt war mein täglich genutztes rMBP mit einer SSD von nur 256 GB ausgestattet, was natürlich nicht lange ausreichte.
Als ich dann zusätzlich begann, während meiner Flüge Videos aufzunehmen, verschärfte sich die Situation nur noch. Der Umfang der aufgenommenen Materialien nach solchen Flügen betrug über 50 GB, und mein bedauernswerter SSD mit 256 GB war sehr schnell voll, was mich zwang, eine externe Festplatte mit 1 TB zu kaufen. Dennoch, nach einem Jahr konnte auch diese nicht mehr mit den von mir generierten Datenmengen umgehen, ganz zu schweigen davon, dass der Mangel an Redundanz und Backup sie ungeeignet für die Speicherung wichtiger Informationen machte.
Also entschied ich eines Tages, ein hochvolumiges NAS zusammenzustellen, in der Hoffnung, dass dieses System zumindest einige Jahre durchhält, ohne dass ich ein weiteres Upgrade durchführen muss.
Ich habe diesen Artikel in erster Linie als Erinnerung daran geschrieben, was genau ich getan habe und wie, falls ich es wieder tun muss. Ich hoffe, dass er auch für Sie nützlich sein wird, wenn Sie dasselbe vorhaben.
Wäre es nicht einfacher, einfach zu kaufen?
Also wissen wir, was wir wollen, bleibt nur die Frage: wie?
Zuerst habe ich mich mit kommerziellen Lösungen beschäftigt und insbesondere die Firma Synology in Betracht gezogen, die angeblich die besten NAS-Systeme für Verbraucher auf dem Markt anbietet. Allerdings war der Preis für diesen Service recht hoch. Das billigste System mit 4 Einschüben kostet über 300 $, und die Festplatten sind nicht im Lieferumfang enthalten. Außerdem ist die interne Ausstattung eines solchen Sets nicht besonders beeindruckend, was die tatsächliche Leistungsfähigkeit in Frage stellt.
Da dachte ich mir: Warum nicht einen NAS-Server selbst zusammenstellen?
Suche nach dem passenden Server
Wenn Sie einen solchen Server zusammenstellen möchten, müssen Sie zunächst die richtige Hardware finden. Ein gebrauchter Server sollte für dieses Setup gut geeignet sein, da wir für Speicheraufgaben keine besondere Leistungsfähigkeit benötigen. Was erforderlich ist, sind ein großer RAM und mehrere SATA-Anschlüsse sowie gute Netzwerkkarten. Da mein Server an meinem Wohnort betrieben wird, spielt auch der Geräuschpegel eine Rolle.
Meine Suche begann bei eBay. Obwohl ich dort viele gebrauchte Dell PowerEdge R410/R210 für weniger als 100 $ fand, wusste ich aufgrund meiner Erfahrung im Serverraum, dass diese 1U-Modelle zu laut sind und nicht für den Heimgebrauch geeignet sind. In der Regel sind Tower-Server leiser, aber leider waren auf eBay nur wenige verfügbar, und alle waren entweder teuer oder leistungsschwach.
Der nächste Ort, an dem ich suchte, war Craigslist, wo ich eine Person fand, die einen gebrauchten HP ProLiant N40L für nur 75 $ verkaufte! Ich kannte diese Server, die selbst im gebrauchten Zustand normalerweise etwa 300 $ kosten, also schrieb ich dem Verkäufer in der Hoffnung, dass die Anzeige noch aktuell sei. Als ich erfuhr, dass dem so war, machte ich mich ohne zu zögern auf den Weg nach San Mateo, um diesen Server abzuholen, der mich auf den ersten Blick sofort erfreute. Er wies minimale Abnutzung auf und abgesehen von einer kleinen Staubschicht war alles andere in einwandfreiem Zustand.

Foto des Servers, direkt nach dem Kauf
Hier sind die Spezifikationen des Sets, das ich erworben habe:
- 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
- NIC: 1 Gbps On-Board-NIC
Es versteht sich von selbst, dass trotz des Alters von mehreren Jahren die Spezifikationen dieses Servers immer noch die meisten NAS-Systeme auf dem Markt übertreffen, insbesondere in Bezug auf den Arbeitsspeicher. Einige Zeit später habe ich sogar auf 16 GB ECC mit größerem Puffer und verbesserter Datensicherheit aufgerüstet.
Auswahl der Festplatten
Nun haben wir ein hervorragendes funktionierendes System und es bleibt nur noch, die passenden Festplatten dafür zu finden. Offensichtlich habe ich für die 75 $ nur den Server ohne HDD erhalten, was mich nicht überraschte.
Nach einer kurzen Recherche stellte ich fest, dass für den Betrieb von NAS-Systemen im 24/7-Betrieb HDDs von WD Red am besten geeignet sind. Ich wandte mich an Amazon, wo ich 4 Exemplare mit je 3 TB kaufte. Im Grunde können Sie jede gewünschte HDD anschließen, achten Sie jedoch darauf, dass sie die gleiche Kapazität und Geschwindigkeit haben. Dies hilft Ihnen, potenzielle Probleme mit der RAID-Leistung in der Zukunft zu vermeiden.
Systemeinrichtung
Ich denke, viele werden für ihre NAS-Bauten das System , und das ist nicht schlimm. Allerdings habe ich, trotz der Möglichkeit, dieses System auf meinem eigenen Server zu installieren, beschlossen, CentOS zu verwenden, da das ZFS on Linux-System ursprünglich für Produktionsumgebungen vorbereitet ist, und ich allgemein mit der Verwaltung von Linux-Servern vertrauter bin. Außerdem interessierten mich die modischen Benutzeroberflächen und Funktionen, die FreeNAS bietet, nicht – mir genügte ein RAIDZ-Array und die AFP-Dateifreigabe.
CentOS auf einen USB-Stick zu installieren ist ziemlich einfach – man muss lediglich USB als Bootmedium angeben, und der Installationsassistent wird Sie durch alle Schritte führen.
RAID-Erstellung
Nach der erfolgreichen Installation von CentOS habe ich auch ZFS on Linux installiert, indem ich die hier aufgeführten .
Nachdem dieser Prozess abgeschlossen war, habe ich das ZFS-Kernel-Modul 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 (sdx) verwende, um die Wahrscheinlichkeit eines Fehlers beim Mounten nach dem Booten aufgrund von sich ändernden Laufwerksbuchstaben zu verringern.
Ich habe auch ZIL und L2ARC-Cache hinzugefügt, die auf einem separaten SSD laufen, indem ich dieses SSD in zwei Partitionen aufgeteilt habe: 5GB für ZIL und den Rest für L2ARC.
Was RAIDZ1 betrifft, so kann es den Ausfall einer Festplatte überstehen. Viele behaupten, dass man diesen Pooltyp aufgrund der Wahrscheinlichkeit eines Ausfalls der zweiten Festplatte während des RAID-Rebuilds nicht verwenden sollte, was zu Datenverlust führen könnte. Ich habe diese Empfehlung jedoch ignoriert, da ich regelmäßig wichtige Daten auf einem entfernten Gerät gesichert habe, und ein Ausfall des gesamten Pools nur die Verfügbarkeit der Daten, nicht jedoch deren Integrität beeinträchtigen kann. Falls Sie keine Möglichkeit haben, Sicherungen zu erstellen, wäre es besser, Lösungen wie RAIDZ2 oder RAID10 zu verwenden.
Um sicherzustellen, dass der Pool erfolgreich erstellt wurde, können Sie folgendes ausführen:
$ 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 Sie folgendes ausführen:
zfs set mountpoint=/mnt/data dataVon hier aus können Sie einen oder mehrere Datensätze zur Speicherung von Daten 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 ein Kontingent von 512 GB begrenzt, um unendliches Wachstum zu verhindern.
Optimierung
zfs set compression=on dataDieser Befehl aktiviert die Unterstützung für ZFS-Komprimierung. Die Komprimierung benötigt minimal CPU-Leistung, kann jedoch die I/O-Bandbreite 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-Generierung beim Zugriff auf Dateien zu verringern.
Standardmäßig verwendet ZFS unter Linux 50 % des physischen Speichers für ARC. In meinem Fall, wenn die Gesamtzahl der Dateien gering ist, kann dieses Volumen sicher auf 90 % erhöht werden, da auf dem Server keine anderen Anwendungen ausgeführt werden.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112Dann kann mit überprüft werden, dass die Änderungen wirksam geworden sind:
$ python arc_summary.py
...
ARC-Größe: 100.05% 11.55 GiB
Zielgröße: (Adaptiv) 100.00% 11.54 GiB
Mindestgröße (hartes Limit): 0.27% 32.00 MiB
Maximale Größe (Hochwasser): 369:1 11.54 GiB
...Konfiguration sich wiederholender Aufgaben
Ich habe verwendet, um systemd-Timer für die wöchentliche Bereinigung einzurichten und um automatisch alle 15 Minuten, 1 Stunde und 1 Tag Snapshots zu erstellen.
Installation von Netatalk
ist eine Open-Source-Implementierung von AFP (). Following habe ich in nur wenigen Minuten das RPM-Paket kompiliert und installiert.
Konfiguration einrichten
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x Konfigurationsdatei
;
[Global]
; Globale Servereinstellungen
mimic model = TimeCapsule6,106
; [Homes]
; basisverzeichnis regex = /home
; [Mein AFP Volume]
; pfad = /path/to/volume
; [Mein Time Machine Volume]
; pfad = /path/to/backup
; time machine = ja
[Datongs Dateien]
pfad = /mnt/data/datong
gültige Benutzer = datong
[Datongs Time Machine Backups]
pfad = /mnt/data/datong_time_machine_backups
time machine = ja
gültige Benutzer = datong Beachten Sie, dass vol dbnest stellt in meinem Fall eine signifikante Verbesserung dar, da Netatalk standardmäßig die CNID-Datenbank im Wurzelverzeichnis des Dateisystems speichert, was äußerst unerwünscht war, da mein Hauptdateisystem auf USB läuft, wodurch es relativ langsam arbeitet. Das Aktivieren von vol dbnest führt jedoch dazu, dass die Datenbank im Wurzelverzeichnis des Volumes gespeichert wird, das in diesem Fall zum ZFS-Pool gehört und im Vergleich dazu deutlich leistungsfähiger ist.
Aktivierung von 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 richtig konfiguriert ist, sollte Ihr Rechner im Finder angezeigt werden, und auch Time Machine sollte funktionieren.
Zusätzliche Einstellungen
S.M.A.R.T Monitoring
Es wird empfohlen, den Status Ihrer Festplatten zu überwachen, um deren Ausfall zu verhindern.
$ sudo yum install smartmontools
$ sudo systemctl start smartdDämon für die USV
Überwacht den Ladezustand der APC-USV und schaltet das System aus, wenn der Ladezustand kritisch niedrig wird.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsdHardware-Upgrade
Eine Woche nach der Systemeinrichtung begann ich mir mehr Sorgen darüber zu machen, dass im Server RAM ohne ECC installiert war. Zudem ist zusätzlicher Speicher für das ZFS-Buffering sehr nützlich. Also wandte ich mich wieder an Amazon, wo ich 2x Kingston DDR3 8GB ECC RAM für jeweils 80 USD kaufte und den Desktop-RAM, der vom vorherigen Besitzer installiert wurde, ersetzte. Das System startete beim ersten Mal ohne Probleme 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 gefreut. Jetzt kann ich ein 1Gbps LAN-Verbindung des Servers beim Kopieren von Dateien konstant nutzen, und Time Machine funktioniert einwandfrei. Insgesamt bin ich mit der Einrichtung zufrieden.
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 der Preis gerechtfertigt war.
Bauen Sie Ihre NAS-Server selbst?
Quelle: habr.com
