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.