Mein NAS mit FreeBSD 7.4 läuft seit einigen Jahren vom USB-Stick und betreibt fünf Platten im RAIDZ mit ZFS und ein DVD Laufwerk, weshalb ich auch nicht eine (damals auch noch unerschwingliche) SSD verbaut habe.
Damals hatte ich zunächst VINUM probiert.
Es war mir nicht gelungen, die Platten schlafen zu schicken, bzw, nach jedem Aufwachen war der Raid in der einen oder anderen Form nicht mehr konsistent.
Mit ZFS habe ich es deshalb gar nicht erst so probiert und lasse die Platten einfach durchlaufen.
Ich glaube, dass es Probleme macht, weil die Platten nicht spontan nach dem Aufwachen Daten liefern und es deutliche Exemplarstreuungen gibt. Früher hatten SCSI Platten ja eine extra Leitung zum Syncen, wenn sie in einem Verband eingesetzt werden sollten. So etwas muss sicher heute nicht mehr sein, aber ich glaube eben, dass es genau die Richtung ist, in der wir immer noch Probleme haben. Wenn eine Platte im Verband nicht zur passenden Zeit die gewünschten Daten liefern kann, gibt es halt einen Fehlern und so etwas ist bei einem Aufwachen von mehreren Platten einfach der NormalFall.
Den Stick habe ich kopiert, also einen zweiten Stick im PC liegen, den ich bei Bedarf einstecken und einfach davon booten kann.
Gelegentlich, wenn das System zur Wartung heruntergefahren wird, synchronisiere ich die Sticks und tausche sie gegeneinander, etwa alle 100 bis 150 Tage.
Alle Anwendungen wurden komplett mit pkg_upgrade installiert, es gibt da keinen Ports-Tree. Ich bin damit zwar ausreichend glücklich, weiß aber nicht, ob ich das wieder so machen würde. Letztlich hatte mich irgendein Wahnsinn befallen und ich wollte etwas zusätzlich installieren, was eine Menge Abhängigkeiten mit sich brachte und damit schließlich meinen Stick voll packte. Das machte einige Arbeit, meine Aktion wieder rückgängig zu machen, weil die mir bekannten Tools nun nicht griffen und pkg_upgrade keine downgrade, bzw pkg_delete Funktion kennt. Es sichert zwar, was war, aber es deinstalliert nicht.
Mit pkgng sollte das vielleicht kein Thema mehr sein, ich habe das bislang aber noch nicht benutzt.
Die Schreibzugriffe auf den Stick habe ich so gut es geht minimiert.
Ich nutze kein Journal.
Ich nutze keinen SWAP (wirklich, ich nutze gar keinen SWAP aber das ist nicht zu empfehlen, wie mir glaubhaft versichert wurde) und SWAP auf USB ist natürlich eh ein NOGO.
Ich lenke alle Syslogs über Links auf den Raid (anstatt die vielen configs anzupassen, einfach /var/log auf den Raid und zurück-gelinkt) und nicht auf den Stick, analog zu anderen Schreibvorgängen, die vorhersehbar sind, etwa Druckaufträge oder Zeitabfragen von ntpd oder was auch immer.
Im Grunde genommen boote ich nur von USB, nutze dann tmpfs und den Raid und schreibe hoffentlich gar nicht mehr auf den Stick.
So sollte eigentlich auch die Performance vollkommen unabhängig vom Stick sein, aber für mich unverständlich und vollkommen überraschend fand ich durch schlechte Werte bei einer hier im Forum damals durchgeführten Prüfung mit bonnie (benchmarks/bonnie) eine schlechte Lötstelle im Sockel des verwendeten USB-Adapters. Ich habe den Stick mit diesem Adapter ins Gehäuse gelegt, damit niemand ihn versehentlich abziehen kann. Im Grunde würde ich ihn lieber direkt an die Anschlussstelle auf dem Motherboard löten, aber damit ist ein Tausch des Sticks nicht mehr einfach und schnell.
Die Performance insgesamt ist nicht so berauschend bei mir, wenn ich das mit einem gewöhnlichen SW-Raid unter einem busybox/Linux vergleiche, das sogar von einer CF bootet und ausgiebig Gebrauch von sogenannten RAM-Disks macht. Dabei rede ich von einem Thecus, einem recht teuren fertig-Produkt, der ziemlich verschlossen ist und deshalb nicht wirklich für mich durchschaubar wird. Aber mit einem i386 (ich denke ATOM, will aber nun nicht nachsehen) und nur 512MB RAM leistet der im Grunde alles, was ich auch mit meinem FreeBSD NAS kann, außer einigen Dingen, die ich eben doch genau so einbauen konnte, wie ich das wollte.
ZFS braucht vergleichsweise viel PC-Power und RAM, aber beides ist ja heute billig und ich würde und werde wohl wieder einen eigenen NAS mit FreeBSD und ZFS bauen, wenn das nötig wird.
Allerdings würde ich wohl auch SSDs einplanen, alleine, weil ich darauf ZIL realisieren würde. Suche mal Beiträge hier dazu, das wird dann schnell offensichtlich, dass jeder das will und zwar am liebsten redundant. ZIL auf USB verbietet sich natürlich vollkommen von selbst. Hat man erst mal SSD drin, dann würde ich die natürlich auch für das System selbst nutzen. Die Vorteile gegenüber USB sind enorm, aber an grundlegenden Technologien, möglichst wenig auf eine System-Partition zu schreiben, würde ich dabei festhalten.
Ja, USB-Sticks sind gewissermaßen Kinderkram, das möchte ich unterschreiben.
Mit USB3 war ich bisher nicht konfrontiert und da könnte alles doch ein wenig anders aussehen, ich weiß das nicht. Alles, was ich sage, bezieht sich auf den alten USB-Stack in FreeBSD7.4 und maximal USB2 und da ist der noch recht schlecht, soweit ich das überhaupt erkennen kann (also von der Endanwender-Sicht). Ein Linux (egal ob mit busybox oder GNU) scheint da besser zu sein, aber neuere FreeBSDs wohl auch.
Aber sogar damit konnte sogar ich einen brauchbaren NAS für den Heimanwender aufbauen und über Jahre ohne einen einzigen Fehler betreiben und
er läuft immer noch...