Extreme ZFS-Verlangsamung nach mehreren Monaten

8

Ich habe einen Allzweckserver, der E-Mail, DNS, Web, Datenbanken und einige andere Dienste für eine Reihe von Benutzern bereitstellt.

Es hat einen Xeon E3-1275 mit 3,40 GHz und 16 GB ECC-RAM. Ausführen des Linux-Kernels 4.2.3 mit ZFS-on-Linux 0.6.5.3.

Das Festplattenlayout besteht aus 2x Seagate ST32000641AS 2 TB-Laufwerken und 1x Samsung 840 Pro 256 GB SSD

Ich habe die 2 Festplatten in einem RAID-1-Spiegel und die SSD fungiert als Cache- und Protokollgerät, die alle in ZFS verwaltet werden.

Als ich das System zum ersten Mal einrichtete, war es erstaunlich schnell. Keine wirklichen Benchmarks, nur ... schnell.

Jetzt bemerke ich extreme Verlangsamungen, insbesondere im Dateisystem, in dem alle Maildirs gespeichert sind. Das Erstellen eines nächtlichen Backups dauert über 90 Minuten für nur 46 GB E-Mail. Manchmal verursacht die Sicherung eine so extreme Belastung, dass das System bis zu 6 Stunden lang fast nicht mehr reagiert.

Ich habe während dieser Verlangsamungen ausgeführt zpool iostat zroot(mein Pool heißt zroot) und Schreibvorgänge in der Größenordnung von 100 bis 200 KByte / s gesehen. Es gibt keine offensichtlichen E / A-Fehler, die Festplatte scheint nicht besonders hart zu arbeiten, aber das Lesen ist fast ungewöhnlich langsam.

Das Seltsame ist, dass ich genau die gleiche Erfahrung auf einem anderen Computer mit ähnlicher Hardware hatte, obwohl keine SSD, auf der FreeBSD ausgeführt wurde. Es funktionierte monatelang gut und wurde dann auf die gleiche Weise langsam.

Mein Verdacht ist folgender: Ich verwende zfs-auto-snapshot , um fortlaufende Snapshots für jedes Dateisystem zu erstellen. Es erstellt 15-minütige, stündliche, tägliche und monatliche Schnappschüsse und behält jeweils eine bestimmte Anzahl bei, wobei die ältesten gelöscht werden. Dies bedeutet, dass im Laufe der Zeit Tausende von Snapshots auf jedem Dateisystem erstellt und zerstört wurden. Es ist die einzige laufende Operation auf Dateisystemebene, die ich mir mit einem kumulativen Effekt vorstellen kann. Ich habe versucht, alle Schnappschüsse zu zerstören (aber den Prozess am Laufen gehalten und neue erstellt) und keine Änderung festgestellt.

Gibt es ein Problem beim ständigen Erstellen und Zerstören von Schnappschüssen? Ich finde sie ein äußerst wertvolles Werkzeug und bin zu der Überzeugung gelangt, dass sie (abgesehen vom Speicherplatz) mehr oder weniger kostengünstig sind.

Gibt es noch etwas, das dieses Problem verursachen könnte?

EDIT: Befehlsausgabe

Ausgabe von zpool list:

NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zroot  1.81T   282G  1.54T         -    22%    15%  1.00x  ONLINE  -

Ausgabe von zfs list:

NAME             USED  AVAIL  REFER  MOUNTPOINT
zroot            282G  1.48T  3.55G  /
zroot/abs       18.4M  1.48T  18.4M  /var/abs
zroot/bkup      6.33G  1.48T  1.07G  /bkup
zroot/home       126G  1.48T   121G  /home
zroot/incoming  43.1G  1.48T  38.4G  /incoming
zroot/mail      49.1G  1.48T  45.3G  /mail
zroot/mailman   2.01G  1.48T  1.66G  /var/lib/mailman
zroot/moin       180M  1.48T   113M  /usr/share/moin
zroot/mysql     21.7G  1.48T  16.1G  /var/lib/mysql
zroot/postgres  9.11G  1.48T  1.06G  /var/lib/postgres
zroot/site       126M  1.48T   125M  /site
zroot/var       17.6G  1.48T  2.97G  legacy

Dies ist im Allgemeinen kein sehr ausgelastetes System. Die Peaks in der folgenden Grafik sind nächtliche Backups:

E / A-Statistiken

Ich habe es geschafft, das System während einer Verlangsamung zu fangen (ab heute Morgen um 8 Uhr). Einige Vorgänge reagieren ziemlich schnell, aber der Lastdurchschnitt liegt derzeit bei 145 und zpool listhängt nur. Graph:

/ dev / sdb Latenz

Tintenfisch
quelle
Bitte zeigen zpool listund zfs list.
ewwhite
Ist Ihr Pool fast zu 80% voll? Das könnte Probleme verursachen.
Ryan Babchishin
Oh nein ... ZFS-Root unter Linux. Hmm ... Hast du irgendwelche Tunings gemacht? Möglicherweise leiden Sie auch unter Fragmentierung. Was ist deine ZoL-Version? Hast du überhaupt aktualisiert?
ewwhite
Wenn ich die Dinge richtig lese, ist zpool Version 28, zfs ist Version 5. Nicht annähernd 80% voll (eher 16% voll?). ZoL ist aktuell, 0.6.5.3.
Kaolin Feuer
Es wurde auch vorgeschlagen, dass die SSD bei starker Nutzung als Protokoll ausfällt, aber SMART sagt, dass es gut läuft, denke ich. Reallocated_Sector_Ct 0, Wear_Leveling_Count Rohwert 402 (und Wert ist 88), keine Fehler ...
Kaolin Fire

Antworten:

1

Schauen Sie sich arc_meta_used und arc_meta_limit an. Mit vielen kleinen Dateien können Sie den Metadaten-Cache im RAM füllen, sodass er auf der Festplatte nach Dateiinformationen suchen muss und die Welt zum Crawlen verlangsamen kann.

Ich bin mir nicht sicher, wie ich das unter Linux machen soll. Meine Erfahrung ist unter FreeBSD.

Aaron Tomosky
quelle
Interessant - danke! Hinzufügen von github.com/zfsonlinux/zfs/issues/1261 als Referenz. Chaoswurzel: ~ # cat / proc / spl / kstat / zfs / arcstats | grep arc_meta_used arc_meta_used 4 5895985776 Chaoswurzel: ~ # cat / proc / spl / kstat / zfs / arcstats | grep arc_meta_limit arc_meta_limit 4 6301327872
Kaolin Fire
Wenn man sich die Festplatten-E / A-Raten ansieht, scheint es jedoch nicht viel physische Festplattenaktivität zu geben.
Squidpickles