Re: GrXXe von Snapshots (softupdates)

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Tue, 22 Nov 2005 12:09:34 +0100 (CET)

Ich fasse mal zwei Mails in einer Antwort zusammen ...

Peter Ross <Peter.Ross(at)alumni.tu-berlin.de> wrote:
> Oliver Fromme wrote:
> > Es ist kein Log, Snapshots haben nichts mit Logging- oder
> > Journaling-Dateisystemen zu tun. Und das Anlegen _ist_ ab-
> > abhängig von der Größe des Dateisystems, weil ja die voll-
> > ständigen Verwaltungsstrukturen der Snapshot-Datei angelegt
> > und mit Daten gefüllt werden müssen. Bei einem 1-Tbyte-
> > Dateisystem mit Default-Parametern sind das immerhin Struk-
> > turen (indirekte Blöcke) für ca. 67 Millionen Blöcke, die
> > angelegt werden müssen. Das ist kein Pappenstiel.
>
> Ist das praktisch ein newfs auf die Snapshotdatei?

Nein. Grob gesagt: Ein newfs legt den Superblock an (und
eine Kopie davon pro Zylindergruppe), initialisiert die
Free-list, das Wurzelverzeichnis, Strukturen zur Verwaltung
der inodes und ein paar andere Dinge. Das ist vergleichs-
weise wenig. 99% des Datenträgers werden dabei überhaupt
nicht berührt.

Beim Anlegen der Snapshot-Datei dagegen müssen die komplet-
ten Belegungsdaten eines existierenden (und mehr oder weni-
ger gefüllten) Dateisystems erstellt werden. Der Snapshot
ist ja nicht leer.

> Wenn ja, waere es doch sicher intelligent, erst das "newfs"
> zu machen, und dann den Snapshot auszuloesen.
>
> Da das "newfs" nur die Struktur aufbaut (keine Datenbloecke),
> braucht waehrend dieser Zeit doch das FS nicht blockiert
> werden..

Doch, es muß für die Dauer des Anlegens der Snapshot-Datei
blockiert werden. Anderenfalls bestünde die Gefahr, daß
der Snapshot einen inkonsistenten Stand des Dateisystems
erwischt.

Tja, wenn man jetzt Journalling-Support wie bei DragonFly
hätte, wäre das alles kein Thema: Dateisystem-Aktivitäten
werden während der Dauer des Snapshot-Anlegens im Journal
abgelegt und könnten hinterher wieder zurückgespielt wer-
den. Kein Blockieren des Dateisystems notwendig, nichtmal
für einen Sekundenbruchteil.

Leider haben wir das in FreeBSD nicht.

> > Danke. Ich "baue" gerade eine neue FreeBSD-Installation auf
> > dem Laptop, derzeit noch ohne XWindows und /usr/src, deshalb
> > muss die Lektuere bis heute nachmittag warten.
>
> Done. Inklusive Rechnerzeitstellen.. und twm, schone nostalgisch;-)
> (Gnome kompiliert noch).

Ich verwende den ebenso »nostalgischen« wie (IMHO) prakti-
schen olvwm. Gnome habe ich noch nie kompiliert und werde
das auf absehbare Zeit auch nicht über mich bringen. :-)

> Ja, den Artikel habe ich schon frueher gelesen.. es sagt leider
> nicht sehr viel, wie es funktioniert.

Er richtet sich auch eher an Admins und beschreibt daher,
wie man Snapshots verwendet. Andererseits bin ich durchaus
der Meinung, daß es nicht schadet, wenn man auch als Admin
weiß, wie es »unter der Haube« funktioniert. (Aber das ist
nur meine Meinung ... Ich bin ja auch der Ansicht, daß ein
guter UNIX-Admin auch ein guter C-Programmierer sein muß.)

> > Wenn ja, waere es doch sicher intelligent, erst das "newfs"
> > zu machen, und dann den Snapshot auszuloesen.
> >
> > Da das "newfs" nur die Struktur aufbaut (keine Datenbloecke),
> > braucht waehrend dieser Zeit doch das FS nicht blockiert
> > werden..
>
> Was wohl auch passiert ("nur die letzten 5 Sek. ist das FS
> suspendiert".)

Nein: Es sind diese 5 Sekunden, in denen die Snapshot-Da-
tei angelegt wird. Denke dran, daß Kirks Beispiel in dem
Artikel von einem 8-Gbyte-Dateisystem ausgeht. Mit den De-
fault-Parametern wären das nur ca. 500.000 Blöcke. Deren
Verwaltungsstrukturen lassen sich durchaus in 5 Sekunden
anlegen.

> Ich frage mich, was denn da noch passiert, dass es _hier_ linear
> anwaechst - ich meine, die Strukturen sind doch schon da?

Sind sie eben nicht, siehe oben.

> Das mit der Groesse des softupdates-backlogs leuchtet mir ein.
> Macht ein forciertes sync nicht so etwas?

Das kommt drauf an, was Du mit einem »forcierten sync«
meinst. Falls Du sync(8) meinst: Das ist kein forciertes
sync (die Manpage ist leider etwas irreführend).

Die einzige Situation, wo ein echter »forcierter sync«
durchgeführt wird, ist bei einem unmount.

> Dauert das wirklich
> minutenlang auf einem FS im Bereich nahe eines TeraBytes?

Ja, das kann passieren. Im Normalfall merkt man das bei
einem unmount nicht so drastisch, weil man normalerweise
keine Dateisysteme unmountet, auf denen gerade heftige Ak-
tivitäten stattfinden.

Wenn das Tbyte-Dateisystem viele kleine Dateien enthält,
auf denen extrem viele Operationen stattfinden, dann kann
das Soft-updates-backlog enorm anwachsen. Bei einem großen
Mailserver, Webproxy o.ä. sind tausende von Dateioperatio-
nen pro Sekunde nichts Ungewöhnliches. Mit iostat(8) kann
man das beobachten (Spalte »tps« == transfers per second,
wobei allerdings ein Device-transfer mehrere Dateioperatio-
nen beinhalten kann).

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"I invented Ctrl-Alt-Delete, but Bill Gates made it famous."
        -- David Bradley, original IBM PC design team
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 22 Nov 2005 - 12:10:44 CET

search this site