Empfehlungen zu ZFS unter FreeBSD als NAS-Box?

9

Bitte beachten Sie, dass die Antworten auf dieser Seite aus dem Jahr 2009 stammen und nicht als Evangelium betrachtet werden sollten. Wenn Sie eine bestimmte Frage zu , klicken Sie bitte auf die Schaltfläche Frage stellen und stellen Sie eine bestimmte Frage.

Ich dachte daran, ein Home-Backup-System mit FreeBSD 7.2 und dem ZFS-Dateisystem zu erstellen. Hat jemand Erfahrung mit diesem Dateisystem?

Speziell:

  • Ist es möglich, von ZFS zu booten? (Würde ich wollen?)
  • Wie einfach ist es, ein Laufwerk hinzuzufügen?
  • Wie gut können Laufwerke unterschiedlicher Größe verarbeitet werden?
  • Können Sie neue Laufwerke im laufenden Betrieb hinzufügen (oder zumindest mit nur einem Neustart)?
  • Würde ich besser von etwas von der Stange bedient werden?

Alle anderen Gedanken und Vorschläge wären willkommen.

Bearbeiten:

Um ganz klar zu sein, habe ich die FreeBSD-Seite auf ZFS gelesen . Ich suche Vorschläge von Leuten mit praktischer Erfahrung mit einem ähnlichen Setup wie ich möchte.

trauern
quelle

Antworten:

13

Ich baue einen Home FreeBSD-Dateiserver mit ZFS.

Es ist ein AMD X2 3200+ mit 3 GB RAM. Es hat einen PCI Express Gig-E. Das Boot-Laufwerk ist ein altes 400-GB-Laufwerk und ich habe 4 750-GB-Seagte-Laufwerke (eines mit einer anderen Firmware-Version, nur für den Fall).

Das Booten von ZFS wäre schön gewesen (es würde die Installation vereinfachen), aber ich habe die ZFSOnRoot-Anweisungen verwendet, um das Root / OS-Laufwerk mit ZFS einzurichten (wenn alle Partitionen ZFS sind, muss beim Booten kein fsck ausgeführt werden um die UFS-Dateisysteme zu überprüfen). Der Grund, warum Sie dies möchten, ist, dass Sie dann alle Ihre Partitionen (/ var, / usr, / tmp usw.) mit verschiedenen Optionen nach Bedarf einrichten können (z. B. noatime und async für / usr / obj, wodurch der Kernel beschleunigt wird kompiliert), aber alle teilen sich den Speicherplatz aus einem gemeinsamen Pool. Anschließend können Sie ein Datenlaufwerk einrichten und jedem Benutzer eine eigene Partition zuweisen (mit unterschiedlichen Anführungszeichen und Einstellungen). Sie können dann Schnappschüsse machen (die für ZFS kostengünstig sind).

My home server has a df that looks like:
/dev/ad0s1a           1.9G    744M    1.1G    41%    /
devfs                 1.0K    1.0K      0B   100%    /dev
dozer/data            1.8T     62G    1.7T     3%    /data
dozer/home            1.7T    9.6G    1.7T     1%    /home
dozer/home/walterp    1.9T    220G    1.7T    11%    /home/walterp
tank/tmp              352G    128K    352G     0%    /tmp
tank/usr              356G    4.4G    352G     1%    /usr
tank/var              354G    2.2G    352G     1%    /var

In Bezug auf die Leistung ist das Kopieren von Dateien sehr schnell. Das einzige, was ich bemerken würde, ist, dass ich ZFS auf FreeBSD AMD64-Systemen mit 3-4 GB verwendet habe und es gut funktioniert hat, aber nach meiner Lektüre würde ich mir Sorgen machen, es auf einem i386-System mit 2 GB oder mehr auszuführen weniger Speicher.

Ich habe keine SATA-Anschlüsse mehr auf dem Motherboard, daher habe ich nicht versucht, neue Laufwerke hinzuzufügen. Die anfängliche Einrichtung war einfach, ein Befehl zum Erstellen des RAIDZ und dann der Befehl zum Erstellen / Home, der in Sekunden (IIRC) formatiert wurde. Ich verwende immer noch die ältere Version von ZFS (v6), daher gibt es einige Einschränkungen (es sind keine Laufwerke gleicher Größe erforderlich, aber im Gegensatz zu einem Drobo, wenn Sie 3 750-GB-Laufwerke und ein 1-TB-Laufwerk hatten, ist das Endergebnis wird so sein, als ob Sie 4 750 GB Laufwerke hätten).

Einer der Hauptgründe, warum ich ZFS mit RAIDZ verwendet habe, waren die End-to-End-Prüfsummen. Das CERN veröffentlichte ein Papier, in dem ein Test dokumentiert wurde, bei dem über 200 unkorrigierte Lesefehler festgestellt wurden, während ein R / W-Test über einen Zeitraum von einigen Wochen durchgeführt wurde (es wird erwartet, dass die ECC in Einzelhandelslaufwerken alle 12 TB einen Fehler aufweist). Ich möchte, dass die Daten auf meinem Server korrekt sind. Ich hatte einen schweren Absturz aufgrund eines Stromausfalls (jemand hat die USV überlastet, indem er eine Raumheizung daran angeschlossen hat), aber als das System zurückkehren kann, kam ZFS schnell zurück, ohne die Standardprobleme mit fsck.

Ich mag es, weil ich dann Samba CUPS hinzufügen könnte, um einen Druckserver zu erhalten. Ich habe einen DNS-Cache hinzugefügt und kann nach Belieben andere Software hinzufügen (ich denke darüber nach, den Desktops in meinem Haus eine SNMP-Überwachung hinzuzufügen, um die Bandbreitennutzung zu messen). Ich bin mir sicher, dass ich für das, was ich für das System ausgegeben habe, eine billige NAS-Box hätte kaufen können, aber dann hätte ich keine lokale 64-Bit-Unix-Box zum Spielen. Wenn Sie FreeBSD mögen, würde ich sagen, machen Sie mit. Wenn Sie Linux bevorzugen, würde ich eine Linux-Lösung empfehlen. Wenn Sie keine Administration durchführen möchten, würde ich mich für die eigenständige NAS-Box entscheiden.

Bei meiner nächsten Runde von Hardware-Upgrades plane ich, die Hardware zu aktualisieren und dann die aktuelle Version von FreeBSD mit ZFS v13 zu installieren. V13 ist cool, weil ich eine batteriegepufferte RAM-Disk habe, die ich für das ZIL-Protokoll verwenden kann (dies bringt Schreibvorgänge zum Schreien). Es wird auch die Verwendung von SSDs zur Beschleunigung des Dateiservers unterstützt (die Spezifikationen auf den neuen Sun-Dateiservern sind sehr gut und werden von einem ZFS-System bezogen, das SSD verwendet, um das System sehr schnell zu machen).

EDIT: (Kann noch keine Kommentare hinterlassen). Ich habe die Anweisungen unter http://www.ish.com.au/solutions/articles/freebsdzfs ziemlich genau befolgt . Die einzige wichtige Änderung in 7.X seit dem Schreiben dieser Anweisungen war, dass 7.2 herauskam. Wenn Sie über 2+ GB verfügen, sollten Sie die folgenden drei Zeilen nicht in /boot/loader.conf hinzufügen müssen:

vm.kmem_size_max="1024M"
vm.kmem_size="1024M"  
vfs.zfs.arc_max="100M"

In den Anweisungen wird auch erläutert, wie Sie einen Spiegel erstellen und das System wieder in den Wiederherstellungsmodus versetzen (Mounten mit ZFS). Nachdem ich ein- oder zweimal mit seinen Anweisungen gespielt hatte, benutzte ich das ZFS-Administratorhandbuch von Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf , um besser zu verstehen, was ZFS ist. Zum Erstellen meines Datenspeichers habe ich eine geänderte Version des Befehls auf Seite 91 verwendet, um ZFS-Pools zu erstellen. Da es sich um FreeBSD handelt, musste ich eine kleine Änderung vornehmen:

zpool create dozer raidz /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10

Wo ad4-ad10 durch Ausführen von dmesg | grep 'ata. * Master' gefunden wurde, sind dies die Namen der SATA-Festplatten auf dem System, die für die Big-Data-Partition verwendet werden. Auf meinem Motherboard, den ersten drei ata-Ports (ad0-3), an denen sich die 4 PATA-Ports befinden, und da jeder SATA-Port ein Master ist, gibt es keine alten Nummern.

Um das Dateisystem zu erstellen, habe ich gerade Folgendes getan:

zfs create dozer/data
zfs set mountpoint=/data dozer/tank

Der zweite Befehl ist erforderlich, da ich Standard-Mountpunkte für Freigaben deaktiviert habe.

Walter
quelle
Haben Sie zufällig Notizen von allem, was Sie getan haben? Und wären Sie bereit, sie zu posten? :)
trauern
Toller Beitrag zu FreeNAS + ZFS. Ich war selbst neugierig darauf. Danke für deine Information!
Osij2is
11

Einführung: Ich habe endlich mein System gebaut und hier sind meine Notizen, falls es jemand anderem hilft.

Tore:

  • Erstellen Sie eine NAS-Heimbox, die auch als Quellcodeverwaltung und interner Webserver fungieren kann.
  • Halten Sie die Kosten unter 1000 $

Spezifikationen:

  • Muss mindestens ein Terabyte Speicherplatz haben
  • Muss Datenredundanz haben (RAID oder ähnliches)
  • Muss in der Lage sein, meinen aktuellen alternden Quellcodeverwaltungsserver zu ersetzen

Design:

  • FreeBSD 7.2 (eventuell auf 8.0 zu aktualisieren).
  • Das Betriebssystem befindet sich auf einem eigenen Startlaufwerk, in diesem Fall einem IDE-Laufwerk
  • Die Daten werden auf sechs SATA-Laufwerken gespeichert.

Wir verwenden ZFS als Dateisystem, da es so positive Bewertungen erhalten hat. ZFS erfordert ziemlich viel, dass wir ein 64-Bit-Betriebssystem ausführen und viel Speicher mögen, also sollte ich ein Minimum von 4 GB bekommen

Hardware:

Software: FreeBSD 7.2 - 1 @ $ 0.00 http://www.freebsd.org/

Gesamtkosten: 874,81 USD

Hardware-Setup: Ein grundlegender Computer-Build mit drei kleineren Problemen.

  1. Das von mir gekaufte Gehäuse hatte Steckplätze für 6 Festplatten und zwei 3,5-fach-Steckplätze. Ich nahm an, dass die IDE in eines der 3,5 Felder passen könnte. Dies war eine schlechte Annahme, und es gab keinen vernünftigen Weg, um es zum Laufen zu bringen. Ich ging und kaufte einen Adapter bei Fry's für ~ $ 17.00, und es funktionierte gut.

  2. Die Sata-Kabel, die ich gekauft habe, hatten die 90-Grad-Anschlüsse, was sehr schön war, außer dass es mit sechs Laufwerken keine Möglichkeit gab, die Arbeit zu erledigen. Durch Einstecken eines Kabels hing der unflexible Teil des Steckers über der nächsten Festplatte. Ich musste zu Fry's und mit 5 normalen SATA-Kabeln gehen. Leider waren die, die ich bei Newegg gekauft habe, so billig, dass es sich nicht lohnt, sie zurückzuschicken.

  3. Das Gehäuse zeigt die Rückseite der Festplatten zur Seite des Gehäuses, und die Stromkabel vom Netzteil haben einen steifen Stecker, der über den Rand des Gehäuses hinausragt. Dadurch konnte ich die Seitenabdeckung nicht wieder einschieben. Ich musste ein wenig damit herumspielen, um es zum Laufen zu bringen, und schließlich endeten die beiden modularen Stromkabel (sie haben jeweils vier SATA-Stecker) zwischen den Laufwerken, so dass die ersten kabelbetriebenen Laufwerke 0, 2 und 4 und die zweite angetriebene 1, 3 und 5. Dies ermöglichte genug Flex, dass ich sie mit einem Reißverschluss aus dem Weg binden konnte.

Betriebssystem-Setup:

  1. Brannte die FreeBSD 7.2 ISOs auf CD. Ich hätte die einzelne DVD benutzen können, aber ich hatte keine herumliegen.

  2. Memtest86 + ( http://www.memtest.org/ ) wurde auf eine CD gebrannt .

  3. Schaltete den frisch gebauten Computer ein und ging ins BIOS, um sicherzustellen, dass alle 7 Laufwerke und die DVD-ROM angezeigt wurden. Es tat es. Die Startreihenfolge wurde geändert, um zuerst die CD-ROM zu erstellen.

  4. Legen Sie die memtest86 + -CD in den frisch gebauten Computer ein, starten Sie sie neu und lassen Sie sie über Nacht laufen. Ohne Fehler bestanden.

  5. Installiertes FreeBSD 7.2. Wenn Sie damit nicht vertraut sind, empfehle ich Folgendes zu lesen: http://www.freebsd.org/doc/en/books/handbook/install.html Es ist viel besser zu erklären, was zu tun ist als ich kann. Hier sind meine spezifischen Einstellungen:

    • Hat eine Standardinstallation durchgeführt
    • Verwendete das gesamte IDE-Laufwerk für das Betriebssystem
      • verwendete das Standardlayout des Dateisystems
      • Die 6 SATA-Laufwerke blieben unberührt
    • Entwickler installieren ohne X-Windows, da die Box kopflos sein wird
    • Das System ist kein NFS-Client oder -Server
    • FTP und inetd deaktiviert
    • SSH erlaubt
    • Es wurden keine Pakete hinzugefügt (diese werden später hinzugefügt).
    • Ein Benutzer wurde hinzugefügt
  6. Nach der Installation und dem Neustart stellte ich fest, dass nur 4 der 6 SATA-Laufwerke erkannt wurden. Ich ging ins BIOS und änderte unter Integrierte Peripheriegeräte den OnChip-SATA-Typ in AHCI und den OnChip-SATA-Port 4/5 in "SATA". Gespeicherte Einstellungen und Neustart.

  7. Zu diesem Zeitpunkt erkannte FreeBSD alle sechs Laufwerke als: ad4 ad6 ad8 ad10 ad12 ad14

  8. Holen Sie sich das Neueste von cvs mit csup: csup -g -L 2 Stable-Supfile Ich hatte die Datei bereits bearbeitet, um den Host zu verwenden: cvsup11.us.FreeBSD.org, wobei alle anderen Informationen unverändert bleiben.

  9. Den neuesten Kernel und die neueste Welt wie hier beschrieben neu erstellt und installiert: http://www.freebsd.org/doc/en/books/handbook/makeworld.html Mein Kernel wurde angepasst (siehe ZFSNAS). Ich habe eine große Anzahl von Geräten deaktiviert, da ich nie vorhabe, SCSI, USB, PCMCIA, Seriell, Parallel usw. zu verwenden. Ich habe /etc/make.conf Folgendes hinzugefügt: CPUTYPE = athlon64 CFLAGS = -O2 -fno-strict-aliasing -pipe make -j8 buildworld

NAS-Setup:

  1. Erstellen Sie den ZFS-Pool für unseren Speicher: zpool create storage raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. Erstellen Sie das Home-Dateisystem auf dem neu erstellten Speicher:

    zfs create storage/home
    cp -rp /home/* storage/home
    rm -rf /home /usr/home
    zfs set mountpoint=/home storage/home
    
  3. Bearbeiten Sie /etc.rc/conf und fügen Sie Folgendes hinzu:

    zfs_enable="YES"
    

    Dadurch werden die ZFS-Dateisysteme beim Booten bereitgestellt.

  4. Erstellt Root-, Samba- und Perforce-Verzeichnisse

    zfs create storage/root
    cp -rp /root/* storage/root
    rm -rf /root 
    zfs set mountpoint=/root storage/root
    zfs create storage/fileshare
    zfs create storage/perforce
    

    Wenn Sie nicht mehr Dateisysteme in Ihrem Pool benötigen, sind Sie mit dem ZFS-Teil ziemlich fertig. Weitere Informationen finden Sie im Folgenden: http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf

Installierte Ports:

/usr/ports/shells/bash
    make install
/usr/ports/editors/vim
    make install
/usr/ports/net/samba33
    make
    make install
    // Use all defaults un-check cups.
/usr/ports/devel/perforce
    make
    make install PERFORCE_PORT=XXXX PERFORCE_USER=p4user PERFORCE_GROUP=p4
    rm -rf /usr/local/perforce
    cd /storage/perforce/
    mkdir root
    mkdir log
    chown p4user:p4user *
    cd /storage
    chown p4user:p4user perforce 

Edited /usr/local/etc/perforce.conf as follows:
    #
    # Perforce FreeBSD configuration file
    #
    #
    # $FreeBSD: ports/devel/perforce/files/perforce.conf.in,v 1.3 2005/01/18 15:43:36 lth Exp $

    #
    # Perforce ROOT
    #
    PERFORCE_ROOT="/storage/perforce/root"

    #
    # Perforce user (it is recommended to run p4d as a non-root user)
    #
    PERFORCE_USER="p4user"

    #
    # p4d/p4p port (default: 1666)
    #
    PERFORCE_PORT="XXXX"

    #
    # p4p cache directory
    #
    PERFORCE_PROXY_CACHE="/usr/local/perforce/cache"

    #
    # p4p target server (default: perforce:1666)
    #
    PERFORCE_PROXY_TARGET="perforce:1666"

    #
    # p4d options (see man p4d)
    #
    PERFORCE_OPTIONS="-d -p $PERFORCE_PORT -v server=1 -L /storage/perforce/logs/p4d.log"

    #
    # Uncomment this line to have the server started automatically
    #
    PERFORCE_START=yes

Benutzer hinzugefügt:

user1
user2

Gruppen erstellt:

sambashare
    Added user1 and user2 as members

chgrp sambashare /storage/fileshare
chmod 775 /storage/fileshare
chmod g+s /storage/fileshare

Samba-Konfiguration:

Samba configuration file:
#################
    [global]
       workgroup = USERLAN
       server string = ZFS NAS
       security = user
       hosts allow = 192.168.1. 127.
       log file = /usr/local/samba/var/log.%m
       max log size = 50
       passdb backend = tdbsam
       dns proxy = no

    [user1share]
       comment = user1 share
       path = /storage/fileshare
       valid users = user1 user2
       public = no
       writable = yes
       printable = no
       create mask = 0765
#################

pdbedit -a -u user1 
    # followed prompts
pdbedit -a -u user2 
    # followed prompts
trauern
quelle
Fantastische Antwort! Upvote ... check!
Mei
5
  • Ist es möglich, von ZFS zu booten? (Würde ich wollen?)

Ich sehe keinen Grund, warum Sie möchten. Ich würde denken, dass die Snapshot-Unterstützung in OpenSolaris nur ausgereift genug ist, damit Sie zu einer älteren Version zurückkehren und diese starten können (aber das ist eigentlich nur eine wilde Vermutung).

  • Wie einfach ist es, ein Laufwerk hinzuzufügen?

Hinzufügen wie beim Erweitern eines gestreiften Pools? Fügen Sie einfach eine Fahrt zum Pool hinzu, das war's auch schon. Betrachten Sie die Auswirkungen Ihrer nächsten Frage.

  • Wie gut können Laufwerke unterschiedlicher Größe verarbeitet werden?

Sie können es als Streifen verwenden und ZFS anweisen, n Kopien einer Datei aufzubewahren. So können Sie die volle Speicherverfügbarkeit nutzen, die Sie haben, und trotzdem eine angemessene Redundanz erhalten

  • Können Sie neue Laufwerke im laufenden Betrieb hinzufügen (oder zumindest mit nur einem Neustart)?

Ersetzen von Geräten in einem Speicherpool Ich denke, dies ist die empfohlene Lösung. Der einfachste Weg, um herauszufinden, wie gut dies unter FreeBSD funktioniert, besteht wahrscheinlich darin, es auszuprobieren.

  • Würde ich besser von etwas von der Stange bedient werden?

Haben Sie schon einmal darüber nachgedacht, dass FreeNAS (Roadmap) 0.70 bald veröffentlicht wird und ZFS unterstützen wird?

Sie sparen sich den Aufwand des gesamten Frameworks und erhalten damit eine relativ gut zu bedienende GUI.

Martin M.
quelle
Ich verwende FreeNAS 0.7RC1 und die Einrichtung mit ZFS war ein Kinderspiel.
Joseph
3

Ich habe Server mit FreeBSD + ZFS (auf 7.2-STABLE und 8.0-CURRENT), die nicht in Produktion sind.

Das Booten von ZFS wird hier beschrieben: http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/

Das Hinzufügen von Laufwerken im laufenden Betrieb ist so einfach wie das Eingeben von "zpool add mypool da7". Ein neues Laufwerk kann direkt danach verwendet werden. Sie können auch eine ganze Reihe von Laufwerken in Stripe, Mirror, Raidz (verbessertes Raid-5) oder Raidz2 (verbessertes Raid-6) hinzufügen.

Laufwerke unterschiedlicher Größe können im Pool abgelegt werden, aber nicht in Spiegel / Streifen / Schlachtzug (wenn ich mich richtig erinnere, kann dann nur der kleinste Festplattenspeicher verwendet werden).

(Offen) Solaris unterstützt ZFS sofort

SaveTheRbtz
quelle
2

Es gibt einen schönen Thread zum Aufbau eines Heim-ZFS-NAS bei ArsTechnica.

quux
quelle