ZIL - welche Möglichkeiten gibt es?

H

holgerw

Guest
Hallo,

für meine zwei Spiegelpools (2x2 normale Festplatten) auf dem Daten-NAS möchte ich die Schreibgeschwindigkeit auf den NFS-Shares erhöhen, indem ich den Pools jeweils ein ZIL von 4 GB gönne.

Wie ich es verstanden habe, kann entweder ein komplettes SSD-Device oder aber eine Partition auf einer SSD als zfs Log dienen.

Ich habe auf der einzigen SSD (zfs Stripe) im NAS das FreeBSD laufen und der Installer hat auf dieser SSD am Ende unter ein MB nur Platz gelassen (merkwürdig, ich kann mich an Diskussionen hier zur manuellen zfs Einrichtung erinnern, dass es gar nicht so gut sein soll, bei Verwendung von zfs auf einer SSD diese bis zum Anschlag zu benutzen).

Eine weitere SSD einbauen geht nicht. Meine Fragen:
Muss ich in den sauren Apfel beißen, und auf der SSD FreeBSD nochmal installieren, manuell zfs einrichten und 2 kleine 4 GB Pools auf dieser SSD dann anlegen für die ZILs?
Ist es auch möglich, innerhalb des zpools, auf welchem FreeBSD installiert ist, zwei neue Datasets anzulegenund für die ZILs zu nutzen?

Viele Grüße
Holger
 
hi

schon mal

zfs set sync=disabled tank/dataset

versucht ?

alternativ kannst du auch einen kleinen , schnellen , usb stick verwenden .

ich selber nutzen eine kleine 2 GB partition auf meine boot ssd , platten technisch bin ich auch bei 2x 2 Festplatten .

Holger
 
Ich persönlich würde heute einfach mehr RAM einbauen. ZFS profitiert enorm von mehr Speicher. Um mehr zu sagen, brauchen wir deutlich mehr Infos (Mainboard, RAM, HDD, ZFS Aufbau, gpart Ausgabe, zfs-stats Ausgabe ect.).
 
Hallo Namensvetter, hallo @foxit

danke für die Info.

Der Rechner ist ein älterer AMD-Quadcore mit 4x2 GB RAM Riegeln und in diese Richtung kaum aufrüstbar.

Sync zu deaktivieren wird zwar als Möglichkeit zur Beschleunigung erwähnt aber nicht als erste Wahl, was ich bisher mir da angelesen habe.
Der PC hat schon USB3 Schnittstellen, vielleicht ist ein flotter USB3 Stick schon eine effektive Maßnahme.
Daten zu dem System kann ich übrigens erst Morgen liefern, bin unterwegs.
 
Nachtrag: Ich habe noch eine 500 GB eSATA Platte und der Nas-Rechner hat zwei eSATA Schnittstellen.
Auf diese Platte könnte ich ja FreeBSD installieren, dann hätte ich die SSD frei und könnte sie für ZILs verwenden.
Und die Platte würde endlich Mal wieder benutzt, sie liegt schon Jahre herum.
Mal schauen ....
 
USB-Sticks kann man vergessen. Das ist selbst bei Markenherstellern Russisch Roulette, man kann Glück haben und für wenig Geld einen schnellen, über Jahre zuverlässigen Stick bekommen oder für viel Geld einen langsamen Schrottstick, der unter Belastung nach Tagen durch ist. Dazu kommt, dass die allermeisten Sticks darauf ausgelegt sind Daten linear zu schreiben, also mehrere direkt hintereinander liegende Blöcke. Die ZIL schreibt aber zufällige Blöcke, was viele Sticks mit massivem Geschwindigkeitseinbruch quitieren.

Ich würde stattdessen eine UHS-II SD-Karte nehmen. Das ist ein definierter Standard mit klar vorgegebenen Mindestgeschwindigkeiten, was die Hersteller zwingt vernünftigen Flash mit vernünftigen Controllern zu verbauen. Das Problem ist nur, dass UHS-II Karten und passende USB3-Reader recht teuer sind, wodurch sich die Frage stellt, ob sich der Spaß rechnet. Eine Transcend 32GB Karte mit Video Speed Class 90 (90 MB/s schreiben, 250 MB/s lesen) kostet ca. 35€, ein Sandisk UHS-II Cardeader noch mal 20€.
 
Hallo @Yamagi

dann ist es wohl am besten, das FreeBSD neu auf der SSD zu installieren und Platz für ZIL-Poole zu lassen.
Da habe ich keine extra Kosten und dank Sicherung der config Dateien ist das ja schnell erledigt.

Danke für Deine zusätzliche Info.
 
Das bringt dir als Ersatz für ein ZIL nichts.
Ja richtig aber der Cache für ZFS wird grösser. Dadurch hatte ich einen Performance-Gewinn bei kleinen Dateien (Samba). Ich selber hatte es privat schon im Einsatz und konnte mit einem ZIL keine Performance gewinnen. War vielleicht aber auch nicht der richtige Einsatzzweck.
 
Ich selber hatte es privat schon im Einsatz und konnte mit einem ZIL keine Performance gewinnen. War vielleicht aber auch nicht der richtige Einsatzzweck.
ZIL ist auch in erster Linie bei Schreibzugriffen interessant. Und auch nur dann, wenn diese "synchron" erfolgen sollen. Daher profitieren vor allem Datenbanken davon. Die schreiben ihr Kram synchron, weil die halt sicher sein wollen, dass das Zeug auch auf der Platte liegt wenn es rausgeschrieben wurde.
 
@foxit, zu ZIL habe ich aber u.a. gelesen, dass damit auch der schreibende Zugriff auf NFS-Shares deutlich beschleunigt werden kann .....
 
Ein SLOG kann bei NFS-Shares die auf "Synchronous Writes" bestehen einiges an Geschwindigkeit bringen.
In meinem Fall, von "burst"-artigen Schreibraten zwischen 0 bis ca. 30 MB/s hoch auf ca. 80-90 MB/s. Außer bei Dateien die mehrere Gigabyte groß sind, da Fällt die Schreibrate, was aber auch am RAM liegt.

Edit:
Ich lasse einfach mal folgenden Link hier: ZFS Administration, Part III- The ZFS Intent Log
 
Die Frage ist ob NFS wirklich Synchron eingebunen werden muss. Das ist für die meisten Aufgaben, bei denen NFS heutzutage Verwendung findet nicht nötig.
 
vielleicht mal noch einen oder zwei Gedanken:
-wie sieht es mit Redundanz aus?

Wenn dir die eine SSD stirbt, wieviele Daten in wievielen Pools verlierst du damit? Oder macht das nichts aus? Ich weiß das wirklich nicht, weil ich mich nie eingehend eingelesen habe, aber alle Beispiele, die ich so schwach erinnere, nutzten nicht ein ZIL-Gerät für mehrere Pools.

-wie sieht es mit Tests aus?
kann man einfach ein ZIL auf Probe anlegen und danach wieder zerstören, ohne Daten zu verlieren? Und wenn, könnte man dann nicht auf die Schnelle einfach ein RAM-basiertes-ZIL-Gerät anlegen und testen? Schneller geht ja wohl nicht und zum Test muss das vielleicht keine 2G groß sein.
 
Wenn dir die eine SSD stirbt, wieviele Daten in wievielen Pools verlierst du damit?
Also eigentlich sieht man genau aus dem Grund öfter mal, dass ein Intent-Log auf 2 verschiedenen physikalischen Geräten parallel geführt wird.
Sozusagen zpool add mypool log mirror ata5 ata6

Wenn Du das nicht machst und das Gerät auf dem das Intent-log geschrieben wird geht kaputt, dann verlierst Du halt die Schreibzugriffe die da grad drin sind.

kann man einfach ein ZIL auf Probe anlegen und danach wieder zerstören, ohne Daten zu verlieren?
Im Prinzip geht das.
 
Hallo,

aufgrund von Zeitmangel habe ich mich nun doch erstmal für folgende Maßnahme entschieden, die mir @mark05 empfohlen hat:
Code:
zfs set sync=disabled <poolname>/<datasetname>

Mal schauen, ob das schon was bringt.
 
Ist es auch möglich, innerhalb des zpools, auf welchem FreeBSD installiert ist, zwei neue Datasets anzulegenund für die ZILs zu nutzen?

In der man zu zpool lese ich gerade:
file A regular file. The use offiles as a backing store is strongly
discouraged. It isdesigned primarily for experimental purposes,
asthe fault tolerance of a file is only as good the file system
ofwhich it is a part. A file mustbe specified bya full path.
Man sollte das also nicht tun, aber das bedeutet doch auch, man könnte es machen? Ich habe das gerade probieren wollen und hatte damit keinen Erfolg.
Als Beispiel wird auch nur gezeigt, wie ein Pool mit Dateien angelegt werden könnte:
Example 4 Creatinga ZFS Storage Pool by Using Files

The following command creates anunmirrored poolusing files. While not
recommended, a pool based on files can be usefulfor experimental pur-
poses.

# zpool createtank /path/to/file/a /path/to/file/b
 
Zurück
Oben