Aus Linux-Magazin 07/2014

Aus dem Alltag eines Sysadmin: Iwatch

Kürzlich stand Autor Charly vor der Aufgabe, ein Verzeichnis auf einem Server mit zwei NFS-gemounteten Clients zu synchronisieren. Das Ganze sollte schnell passieren und leicht handhabbar sein. Damit waren DRBD und Gluster-FS schon mal raus.

Mein Synchronisier-Setup schaut im Groben so aus: Ein Applikationsserver liest zyklisch Werte aus einer Datenbank, flicht daraus HTML-Dateien und einige Bilder und legt alles in dem Verzeichnis »/source« ab. Per NFS 4 eingehängt sind die Verzeichnisse »/dest1« und »/dest2« . Wann immer es neue Daten in »/source« gibt, sollen diese baldmöglichst in die beiden Zielverzeichnisse gelangen.

Einfach und schon lange dabei

Da komplexere Lösungen nicht in Frage kommen, bleibt eigentlich nur noch übrig, die Aufgabe dem Inotify-Subsystem in den Schoß zu werfen. Inotify ist seit 2.6.13 Bestandteil des Kernels und bietet Userspace-Programmen eine Schnittstelle zu Dateisystem-Ereignissen an. Abseits von Incron [1] habe ich dafür bisher kaum Verwendung gefunden, aber für das zeitnahe Syncen von Verzeichnissen sollte es ideal sein – so meine Überlegung. Fehlt nur noch das passende Tool für die Aufgabe.

Eine kurze Recherche brachte gleich zwei Kandidaten ans Licht: Lsyncd und Iwatch. Da zu Lsyncd bereits ein guter Linux-Magazin-Artikel [2] erschien, konzentriere ich mich hier auf Iwatch.

Der Wächter eignet sich für den Betrieb im Vordergrund genauso wie als Daemon. Im einfachsten Fall lasse ich beispielsweise mit »iwatch -r /var« ein Verzeichnis lediglich beobachten, ohne eine Aktion auszulösen. Iwatch meldet dann:

[ 6/May/2014 20:49:30] IN_CREATE /var/tmp/etilqs_SqorfaOvdiBaBI7
[ 6/May/2014 20:49:30] IN_DELETE /var/tmp/etilqs_SqorfaOvdiBaBI7

Mit dem Parameter »-c Aktion« weise ich Iwatch dagegen an, auf Ereignisse zu reagieren. Um der Parameterhölle zu entfliehen, erscheint mir eine Konfigurationsdatei wie in Abbildung 1 besser zu sein. Der spannende Teil der Konfiguration steht im »<path>« -Tag. Dort bestimme ich mit »type=recursive« , dass Iwatch auch Verzeichnisse unterhalb von »/source« einbeziehen möge.

Im Falle eines Dateisystem-Ereignisses startet der Mechanismus das Shellskript »/home/charly/bash/sync.sh« . Dabei übergibt Iwatch dem Skript die Variable »%f« . Darin steht der vollständige Pfad der Datei, die sich geändert hat.

Das Skript »sync.sh« wiederum ist ein schlanker Zweizeiler:

#!/bin/bash
rsync -a --delete $1 /dest1/$1 &
rsync -a --delete $1 /dest2/$1 &

Das klappt recht gut, wenn die Anzahl der zu verarbeitenden Ereignisse nicht exorbitant ansteigt. Wenn doch – wie etwa beim Syncen einer sechsstelligen Anzahl sehr kleiner Dateien, die der Server in maximaler Geschwindigkeit auf die Platte nagelt –, kommt es zu einer beachtlichen Menge Schlange stehender Rsync-Prozesse. Nicht, dass mir das schon mal passiert wäre – hust!

Abbildung 1: Iwatch lässt sich per Konfigurationsdatei besser steuern als über die Kommandozeile. Die zu überwachenden Verzeichnisse gehören in »<path>«-Tags.

Abbildung 1: Iwatch lässt sich per Konfigurationsdatei besser steuern als über die Kommandozeile. Die zu überwachenden Verzeichnisse gehören in »<path>«-Tags.

Infos

  1. Charly Kühnast, “Aus dem Alltag eines Sysadmin: Incron”: Linux-Magazin 02/07, S. 71, https://www.linux-magazin.de/Ausgaben/2007/02/Event-gesteuert (HTML) sowie auf vorliegender Delug-DVD (PDF)
  2. “Tooltipps Extended: Lsyncd”: https://www.linux-magazin.de/NEWS/Tooltipps-Extended-Lsyncd

Der Autor

Charly Kühnast administriert Unix-Systeme im Rechenzentrum Niederrhein. Zu seinen Aufgaben gehören Sicherheit und Verfügbarkeit der Firewalls und der DMZ.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben