ZFS Fragen.

fred123

Well-Known Member
Hallo
Baue gerade einen neuen Rechner auf.
Hier ein paar Daten
FreeBSD 8.2-RELEASE
AMD64 / Asus Board / 16GB Ram.
Bootplatte ad0 ufs
Als Datengrab raidz mit 4 Platten, ada0-3 native
.
Eine Sache bekomme ich nicht geregelt

Beim Schreiben/Lesen vom/zum Raid fängt die Maschine mit 16GB!! Ram an zu swapen!!!
(Nicht stille Prozesse werden ausgelagert, sonder es läuft fleissig in/out)

Der swap läuft z.B. bei einem Backup (schreiben) auf eine externe Platte
(e-Sata UFS im Dock) nach einigen Minuten von 0 hoch bleibt so nach ca 1/2
Std bei ca. 300M.

Beim in/out kommt es immer wieder, paralell zum swap ( ca.alle 10-15 Sek)
zum Einbruch der Geschwindigkeit von ca. 140-150M auf 5-10M.

Ähnliche Beobachtung auch beim cp (lesen) vom anderen Server per NFS.
.
Bei "normalen" Raid5 (Hardware oder Vinum) passiert das nicht :-((
.
Was mach ich da falsch?
.
Hat mal jemand einen Tip? ZFS ist für mich noch recht fremd :-))

Gruss Fred
 
Versuche mal in die "/boot/loader.conf" Datei folgenden Parameter einzusetzen:

vfs.zfs.arc_max="12G"

Und nach einem Neustart dann mal schauen, ob es hilft...
 
Also, ich hatte sowas, wenn man ZFS und UFS gleichzeitig benutzt, dann nimmt ZFS nicht den RAM, den ZFS zum puffern nutzt und da UFS fleißig puffert solange man hat, gibts irgendwann Konflikte. Ich hatte das nur, als ich einmal 2TB von UFS auf ZFS gespiegelt habe. Damals habe ich auch an irgendwas rumgdreht, so dass es dann ging. Mit pur-ZFS habe ich solche Probleme nicht.
 
Mit der Weile gibt es keinen technischen Grund mehr UFS und ZFS gleichzeitig zu nutzen. Man braucht kein /boot auf UFS. Allerdings darf der Pool aus dem man bootest nur ein VDEV enthalten d.h. einen Mirror oder ein RAID-Z1 nicht mehr. Das Problem, wenn man UFS und ZFS gleichzeitig nutzt ist das sie beide RAM zum Puffern brauchen (ZFS deutlich mehr) und jeweils eigene Caches haben. Die Algorithmen zum berechnen der Puffergröße wissen jedoch nichts von einander und muss man afaik beiden die Maximalgröße angeben oder sich zwischen UFS und ZFS entscheiden.
 
Das Problem, wenn man UFS und ZFS gleichzeitig nutzt ist das sie beide RAM zum Puffern brauchen (ZFS deutlich mehr) und jeweils eigene Caches haben. Die Algorithmen zum berechnen der Puffergröße wissen jedoch nichts von einander und muss man afaik beiden die Maximalgröße angeben oder sich zwischen UFS und ZFS entscheiden.

Dies gilt IMHO nur, wenn zwischen UFS und ZFS hin- und hergeschrieben wird. Wir haben Systeme mit ZFS und UFS in produktivem Einsatz und keine Probleme damit.

Rob
 
KobTheTilla: Es trat bei mir reproduzierbar auf, wenn ich Last auf UFS und ZFS gleichzeitig hatte. Es musst nicht kopieren zwischen UFS und ZFS sein, wenn das auch besonders "wirksam" ist. NFS auf ZFS und make -sj10 buildworld auf UFS reicht.
 
mit meinem Versuch habe ich das auch so gehalten, das ist ein Filserver mit einem FreeBSD 7er und entsprechend altem ZFS (nach einem Update auf eine neuere Version wollte der PC nicht mehr booten, weshalb ich ihn so liess)
Dabei habe ich eigene Gedanken gedacht, die natuerlich nicht alle so denken werden ;)
Ich wollte eine Trennung zwischen Betriebssystem und Daten (um das mal grob zu benennen).
Die Daten sollten auf mehreren in einem Pool zusammengefassten Platten ueber ein RAID(5) gehalten werden und nach einigen Versuchen und ein wenig Lektuere entschied ich mich hier fuer einen Pool mit RaidZ und eben ZSF.
Das Betriebssystem sollte auf einem anderen Medium liegen und bei Bedarf austauschbar sein. Hier entschied ich mich fuer einen USB-Stick, der innen im Gehause angeschlossen ist und nicht versehntlich entfernt werden kann. Da ist ein ZFS natuerlich nicht erste Wahl, sondern UFS und mit moeglichst wenig Schreib/Lese-Zugriffen.
Mir erscheint dieser Aufbau, dieses Konzept, vernuenftiger, als Betriebssystem und Daten-Bereich auf dem gleichen Medium zu haben. Wie gesagt, das moegen andere durchaus anders sehen. Fuer mich verkommt das BS dabei zu einem austauschbaren Modul, beinahe, wie die benutzte HW. Eine weitere Aufspalltung in Konfigurationsbereiche (die das System individuell machen) und eigentliches Betriebssystem waere die logische Fortfuehrung, doch dazu bin ich selbst nicht in der Lage und wenn an unterschiedliche BS gedacht wird, ist das sicher auch nicht einfach hinzubekommen.

Fuer mich gibt es also Gruende, UFS (oder ein anderes) fuer das BS zu nutzen, die Daten aber auf einem ZFS zu halten.
Mit dem 7er BSD habe ich dabi auch keine negativen Erfahrungen gemacht.
 
Danke für die Antworten!

echo "vfs.zfs.arc_max="10G" ">>/boot/loader.conf # done:-) Danke!
verkürzt die Pausen verhindert swap, ändert aber an den Einbrüchen nichts.

habe einmal weiter getestet. Stimmt, das beide Filesysteme sich den Speicher krallen und dort cachen.
.
Das Verhalten tritt bei mir, wie ihr schon richtig vermutetet, auf, wenn zfs mit ufs bzw. nfs große Datenmengen schaufeln soll. Sowohl raus wie auch rein. Also beim Backup/Restore auf Platten im Dock bzw. beim "sync" der Datenplatten übers Netz mit nfs.
.
Laut gedacht:
Von schnell (raidz) auf langsam backup-platte scheinen solche Pausen logisch.
Von langsam (nfs, restore) auf schnell (raidz) kann ich mir das nicht erklären?


Maschinen complett auf zfs umstellen?
.
Da habe ich noch eine Sperre im Kopf! :-((
.
Fragen:
a. booten von zfs! Geht dann noch problemlos "recue" im Problemfall?

"zpool" ist zwar drin, aber ich habe beim Googeln von Problemen damit gelesen?
.
b. Wartung der Maschinen von Dritten?
.
zfs ist noch nicht Standardfilesystem. Die gewohnten Tools z.B. sysinstall "ls /dev/ad*" usw. sehen die Platten als "unused","raw", fsck nicht mehr nötig/möglich usw.

Ich kann zwar die Leute mit rootpermission informieren, aber im Fehlerfall rasten wohl erst einmal die "jahrzehntealten" Gewohnheiten ein. :-((
.
Wie kann ich die Platten (Lable??....) so markieren, das dort niemand aus versehen ein usf drüberbuegelt? Romane im fstab usw. sind zwar da, aber die werden immer erst gelesen nachdem das Geraet platt ist :-)
.
c. Zusammenarbeit mit nfs? "syncen" der Daten auf andere Maschinen. Dort habe ich das als Ausgang beschriebene Verhalten auch.
.
ist da "zfs send...." eine Alternative?

.
Last mich noch einmal etwas lernen:-))
.
Gruss
Fred
 
Es ist mittlerweile gut möglich, eine Maschine mit ZFS only zu betreiben, vorzugsweise mit FreeBSD 8.2 - Release oder - Stable oder CURRENT . In 8.2-Release ist die Storage pool Version 15 und Filesystem Version 4 und im aktuellen -Stable ist die Version 28 enthalten, in CURRENT ist die Version 28 .
Das allermeiste, was bezüglich FBSD und ZFS an teilweise haarsträubendem Gefrickel im Netz zu finden ist, bezieht sich auf das, was in FBSD 8.1 enthalten war.
Es sind insbesondere in - Stable ein *MENGE* Änderungen und Verbesserungen die das Gefrickel auf ein Minimum (*holzklopf*) beschränken.
Für ausgesprochene Fans exzessiven Gefummels findet sich aber schon noch was . ;)

Zu Frage a): Wenn du mit *rescue* (?) meinst, ob single user modus etc. so funktioniert wie unter ufs, dann ist die Antwort ja.
Einzig das mounten läuft nicht mit dem befehl /sbin/mount -a sondern mit /sbin/zfs mount -a usw.

Zu Frage b) : Deine "Dritten mit root Permissions" musst du in den Griff kriegen egal ob UFS oder ZFS.
sysinstall ist nur sehr bedingt tauglich (siehe link weiter unten), gpart(8) sollte erste Wahl sein. fsck(8) gibts nicht unter ZFS.

Zu Frage c) : zfs send / recieve ist ungewohnt, funktioniert aber gut, ist aber kein Ersatz für nfs mounts.

Ein exzellentes Howto zur Erstellung eines ZFS - only Sytems ist http://blogs.freebsdish.org/pjd/2010/08/06/from-sysinstall-to-zfs-only-configuration/. Damals (FBSD 8.1) brauchte es noch in /boot/loader.conf :
--> vm.kmem_size="6G" # This should be 150% of your RAM. <== Der ist *NICHT* mehr notwendig und eher schädlich.
--> vfs.zfs.arc_max="3G" # This should be a little less than the amount of your RAM. <== Der aber schon, und entspricht dem, was cla empfohlen hat und du umgesetzt hast.

raidz scheint im Moment die ganz grosse Mode zu sein, ob die allermeisten nicht mit einem oder mehreren mirror(s) besser fahren würden, ist eine andere Frage.
Viel Spass.
 
Ein RAID-Z1 über 4-5 HDDs bietet guten Lesedurchsatz und akzeptablen Schreibdurchsatz für alles was halbwegs lineare Zugriffsmuster hat und `zfs replace` geht auch noch in Stunden nicht tagen. ZFS RAID-Z2 hat einen höheren CPU bedarf (es ist nicht mehr mit XOR getan) dafür hat man naiv gerechnt auch bei `zfs replace` noch Redundanz. Erreicht man mit seinen VDEVs Größenordnungen das von mindestens einem non-recoverable Lesefehler oder einem weiteren Ausfall beim resilvern aus zu gehen ist wird ZFS RAID-Z3 interessant. Damit kann man VDEVs über >10 Platten bauen. Der CPU Overhead sollte deutlich weiter steigen. Über die Performance in der Praxis kann ich nicht sagen, weil ich es nie benutzt habe.
 
Zurück
Oben