Geschichte/Server/top3/Backup
Aus UUGRN
< Geschichte | Server | top3(Weitergeleitet von UUGRN:Server/top3/Backup)
Das aktuelle Backup-Konzept von top3offline sieht vor, dass alle Daten vom zroot-Pool inkrementell per zfs send gesichert werden.
Dazu wird per cron täglich ein rekursiver Snapshot im Format zroot@YYYYMMDDHHMMSS erzeugt und per zfs send als Delta zum vorigen Snapshot auf den tank-Pool gelegt, hier /tank/backup/uugrn.org/top3/top3_zroot@YYYYMMDDHHMMSS.
Die so erzeugten ZFS-Dumps können dann entweder im tank-Pool eingelesen werden oder per Filetransfer auf higgsBeta oder einen anderen failover-Server kopiert (oder von dort abgeholt) und dort abgelegt oder in einen zpool importiert werden.
Annahmen[Bearbeiten]
- Es wird angenommen, dass immer ein ZFS-Dump vom Vortag existiert. Existiert dieser nicht, wird ein neuer, initialer Dump erzeugt. FIXME: Die Namen der Dump-Files sollten diese Unterscheidung ermöglichen, etwa indem im Filename für Deltas beide Snapshots enthalten sind oder im Falle eines Initial-Dumps dieser Umstand aus dem Namen hervorgeht (siehe Diskussionsseite)
Fallstricke[Bearbeiten]
- Es gib aktuell keinen Automatismus, der nicht mehr benötigte Dumps rekursiv entsorgt, d.h. zroot wird vollaufen, da keine Daten gelöscht werden. FIXME: Löschjob schreiben (siehe Diskussionsseite)
Restore-Möglichkeiten[Bearbeiten]
Verlorene Daten oder Inhalte können rekonstruiert werden aus:
- noch vorhandene Snapshots im zroot, zB /jails/uugrn.org/foo/.zfs/snapshots/YYYYMMDDHHMMSS/etc/passwd
- aus der Langzeit-Archivierten read-only-Kopie im lokalen tank-Pool zB /tank/backup/uugrn.org/top3/zroot/jails/uugrn.org/foo/.zfs/snapshots/YYYYMMDDHHMMSS/etc/passwd
- aus der Langzeit-Archivierten read-only-Kopie auf higgsBeta, zB unter /tank/backup/top3.uugrn.org/zroot/jails/uugrn.org/foo/.zfs/snapshots/YYYYMMDDHHMMSS/etc/passwd
- aus komprimierten ZFS-Dumps aus OfflineBackupMedien (Tape, USB-Disk, DVD-Split, …)
Script[Bearbeiten]
#! /bin/sh set -x NOW="$(date +%Y%m%d%H%M%S)" DOM="uugrn.org" HOST="top3" POOL="zroot" SNAPDIR="/tank/backup/${DOM}/${HOST}/" SNAP="${POOL}@${NOW}" SNAPFILE="${SNAPDIR}/${HOST}_${SNAP}" LASTSNAP="$(find "${SNAPDIR}" -name "${HOST}_${POOL}@*" | sort -r | head -n 1 | grep -o "${POOL}@[0-9]*$")" zfs snapshot -r "${SNAP}" if [ -n "${LASTSNAP}" ]; then # inkrementellen dump erzeugen zfs send -v -D -R -I "${LASTSNAP}" "${SNAP}" > "${SNAPFILE}.tmp" && mv -v "${SNAPFILE}.tmp" "${SNAPFILE}" else # initialen snapshot erzeugen # ACHTUNG, VIEL! zfs send -v -D -R "${SNAP}" > "${SNAPFILE}.tmp" && mv -v "${SNAPFILE}.tmp" "${SNAPFILE}" fi