Erstmal zu ZFS: ZFS ist in der Version, in der es in FreeBSD 7.0 vorliegt meiner bescheidenen Meinung nach nicht für produktiven Einsatz geeignet. Es hat schlicht noch zu viele Unwägbarkeiten. Pawels Patches gegen -CURRENT beheben das, aber sind für dich schlicht noch uninteressant. Auch hast du ein 1 GB RAM, was für ZFS schonr echt wenig ist. MySQL, Apache und co. wollen ja auch was abhaben. Kurz: ZFS kannst du knicken.
Wie ich schon schrieb und wie Google noch mal bestätigte, UFS2-Snapshots sind eher sperrig. Wie sperrig hängt von drei Faktoren ab: Größe des Dateisystems, Anzahl der belegten Inodes und Zugriffe auf die Platte während des Erstellens. Die zum Erstellen und Löschen benötigte Zeit schwangt extrem. Meine Jail-Systeme haben im Schnitt 100GiB Dateisysteme mit Belegungen von durchschnittlich 20%. Sind ein paar hunderttausend Dateien. Das Erstellen benötigt zwischen 5 und 10 Minuten und ist damit völlig akzeptabel. Mein Dateiserver hat ein 5TiB Array mit mehreren zehn Millionen Dateien darauf. Ich bunkere da diverse Quellcode-Bäume der Kundensysteme. Die Belegeung ist knappe 85%. Das Erstellen eines Snapshots dauert zwischen 6 und 8 Stunden, damit ist es viel zu langsam.
Die UFS2 Snapshots wurden Anfang des Jahrtausends auch nicht eingebaut, um sie durch den Nutzer groß nutzen zu lassen. Stattdessen benötgte man sie für das Hintergrund-fsck. Dies legt einen Snapshot an und läuft über ihn, ein nicht unbeträchtlicher Teil der fsck-Zeit wird tatsächlich für das Erstellen des Snapshots benötigt. Irgendwann kam dann "dump -l" dazu, auch dies läuft über Snapshots...
Um nun zu deiner Frage zurückzukommen, in der Praxis führt kaum etwas an den Snapshots vorbei, wenn man vollständige Backups laufender Jails machen möchte. Schon allein, weil die Jails ja eingefrohren werde müssen, ansonsten verändern sie sich eventuell während des Backuplaufs und die ganze Sache wird inkonsistent. Die billige Milchmädchenlösung ist: MySQL stoppen -> Snapshot erstellen -> MySQL starten -> Snapshot mounten ->Sichern. Nicht sonderlich ausgereift, aber in vielen Einsatzszenarien völlig ausreichend. Alterntaiv kann man sich sagen "Ausbrüche schrecken mich nicht und Inkonsistenten sind unwahrscheinlich" und ganz einfach die laufenden Jails ohne weitere Abfederung sichern. Muss man für sich selbst entscheiden, ich hatte bei dieser Methode ab und an mal ausgebrochene Prozesse, was schon nervte. Die Prozesse sind dann sowohl den Host, als auch dem Jail zugeordnet. Inzwischen verwende ich eine etwas ausgekluegeltere Prozedur. Ich mounte das Jail per Nullfs an einen anderen Ort. Durch das Nullfs erreiche ich eine Entkopplung, Dateideskriptoren werden nicht aus dem Jail heraus genommen, ich kann auf dem Nullfs-Mount problemlos sichern. Sichern tue ich dort allerdings nur den garantiert konsistenten Teil, Dinge wie MySQL, Apache Webroots (wenn Scripte in sie schreiben dürfen), Mailboxen und so erforden angepasste Mechanismen. Für MySQL ist dies z.b. MySQK Hotcopy, was innerhalb des entsprechenden Jails läuft. In der Praxis kann man den sich verändernden Teil des Jails z.b. täglich sichern und den unveränderlichen Teil einmal die Woche. Ein Jail besteht also aus mehreren Sicherungen, in dem Beispiel das Jail selbst und dazu MySQL. Wer möchte kann sich nun ein simples Script schreiben, welches automatisiert aus diesen Einzelsicherungen bei der Wiederherstellung wieder ein Jail zusammensetzt.