Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Datensicherung über .snapshots anlegen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    47

    Datensicherung über .snapshots anlegen

    Hallo.

    Ich möchte für meine private "Server" Büchse eine Datensicherung einbauen.
    Diese soll ähnlich funktonieren, wie die .snapshots auf einem NetApp Filer.

    Ich kenn das aus der Arbeit und erklär mal wie das funktioniert.
    Wir haben da so eine Reihe NetApp Filer jeder mit einer ganzen Zahl Platten.
    Wenn man jetzt ein Share auf einem dieser Filer mountet, hat man auch die Möglichkeit, auf die DaSi zuzugreifen.
    D.h. ich sehe mein Share und bekomme in meinem Share ein .snapshot Verzeichnis "verlinkt".
    In diesem .snapshot Verzeichnis sind dann lauter Verzeichnisse mit Datum und Uhrzeit.
    In diese kann man reinwechseln und Daten rauskopieren.
    Also z.B. ich lösche aus versehen /share/pfad1/pfad2/file_a dann kann ich mir das aus /share/.snapshot/24_11_2009_09Uhr/pfad1/pfad2/file_a wieder rauskopieren.
    Das Verzeichnis /share/.snapshot/24_11_2009_09Uhr zeigt das Share so, wie es zu diesem Zeitpunkt ausgesehen hat.

    Aus Admin-Sicht auf dem Filer beinhalten diese Snapshots allerdings nur die jeweiligen Änderungen zum Source-Share, d.h. ein Snapshot ist entsprechend kleiner, wenn sich nix ändert fast schon winzig. Die Snapshots belegen so ca. 20% der Source, je nach dem wie oft sich da drin was ändert und wie weit sie zurück reichen.

    Sowas brauch ich auch!
    Ich hab mir also mal LVM angeschaut, komme allerdings nicht so ganz klar damit.
    Ich erstelle erst mal ein Share:
    Code:
    >/usr/sbin/lvcreate --size 40G --name home /dev/raid5
    Das formatiere und mounte ich.
    Dann baue ich mir einen Snapshot dazu:
    Code:
    >/usr/sbin/lvcreate --size <?>G --snapshot --name home_snapshot /dev/raid5/home
    Wenn ich für --size z.B. 20G einsetzte, dann geht das, warum auch immer.
    Die Manpage zu der --snapshot Funktion ist leider recht mau.
    Anscheinend wird hier sowas wie eine Kopie erstellt.
    Aber ich weiß ja nicht, wie groß der Snapshot sein muss und ohne --size gehts nicht.
    Ich möchte aber nur die geänderten Daten wegsichern um dann dorthin zurückrollen zu können.

    Ich hab diese Anleitung im Netz gefunden:
    http://idolinux.blogspot.com/2008/09...snapshots.html
    Aber hier wird auch nur eine Kopie erstellt, die den Platz frisst.
    Ich will die .snapshots auch nur gegen Software-Schäden an den Daten nutzen, gegen Hardware Schäden hab ich ein monatliches Backup auf ein anderes System und ein Raid5.

    Hat sowas schon mal jemand konfiguriert?

    Danke,

    trequ

  2. #2
    .
    Registriert seit
    Oct 2001
    Ort
    Oberbayern
    Beiträge
    2.281
    also snapshots sind in lvm nicht ganz so bequem wie mans sich wünscht..
    grundsätzliches:
    ein snapshot benötigt beim erstellen erstmal keine größe. erst wenn änderungen auf dem snapshot oder auf der eigentlichen partition gemacht werden, wird platz verwendet (genauer gesagt, die veränderten blöcke werden umgemappt)
    wenn du nun einen Snapshot anlegst und sagst er bekommt 20G, dann kannst du entweder auf dem Snapshot, ca.20Gb an daten Verändern, oder auf dem eigentlichen volume. werden mehr blöcke verändert, so weiß ich nicht genau was passiert. hier könnten änderungen verloren gehen, oder ähnliches.

    ein typisches szenario ist z.b. du möchtest eine andere config ausprobieren:
    du hast ein volume mit dem eigentlichen system und legst davon einen snapshot an. dann arbeitest du auf dem snapshot weiter und probierst mit der configuration rum. Wenn diese schiefgeht, dann kannst du den snapshot löschen und das eigentliche volume weiter verwenden, als wäre nichts passiert.

    wenn du sicher bist, dass du die änderungen machen willst, aber zur sicherheit noch das alte brauchst, dann lässt du den snapshot unangetastet und kannst auf dem eigentlichen volume die config vornehmen. hat alles geklappt, snapshot löschen usw... wenn du allerdings zu dem snapshot zurückgehen willst, geht das nicht mit einem simplen merge, oder ähnlichem... du kannst den alten zustand auf dem snapshot sehen und ein backup davon machen (oder die einzelnen dateien zurückspielen), aber einen merge geht nicht, und das eigentlich volume löschen macht auch keinen sinn.

    also ein zurückrollen ist mit lvm nur begrenzt möglich...

    typischer einsatzzweck von lvm und snapshots ist zum beispiel:
    du hast eine XEN-installation und willst viele systeme (systemgröße angenommen mit 4gb) mit dem gleichen image starten. während des startens und dem betrieb werden höchstens 1 gb an daten verändert.
    dazu legst du ein volume an auf dem das quellsystem installiert wird. dann erstellst du für jede zu startende vm einen snapshot mit 1gb size, und kannst dann mit nur 40gb zusätzlich, 40 vms starten (sofern ram keine rolle spielt )... anstatt wie oft üblich, 40 vollständige kopien der festplattenimages anzulegen. desweiteren geht ja das anlegen eines snapshots in bruchteilen von sekunden, während das kopieren von images verhältnismäßig lange dauert.

    ich konnte dir zwar nicht wirklich helfen, hoffe aber dass du dadurch lvm ein wenig besser verstehst.
    Core i3 | 2x3tb btrfs-raid1 | 2x2tb sw-raid1+lvm2

  3. #3
    Linuxer Avatar von HBtux
    Registriert seit
    Oct 2009
    Ort
    $HOME
    Beiträge
    315
    Zitat Zitat von quinte17 Beitrag anzeigen
    werden mehr blöcke verändert, so weiß ich nicht genau was passiert. hier könnten änderungen verloren gehen, oder ähnliches.
    Die Snapshot-Partition wird ungültig und lässt sich dann z.B. nicht mehr mounten.
    Dann kann man meines Wissen nur noch das Snapshot löschen und wieder neu erzeugen. (natürlich dann wieder vom aktuellen datenbestand)
    Ist ja auch verständlich, schließlich reicht der Speicher nicht mehr aus, um die Änderungen weiterhin aufzunehmen.

    Ich habe auch mal ein wenig mit LVM-Snapshot rumexperimentiert...

    Ich bin mir nicht ganz sicher, ob LVM-Snapshot problemlos über ein längerer Zeitraum als quasi Backup parallel benutzt werden kann. (theoretisch sicherlich - Du müsstest es mal praktisch ausprobieren)

    Normalerweise machst Du mit dem Snapshot eine Momentaufnahme des System für z.B. das tägliche Backup auf ein externes Medium.
    Code:
    lvcreate ....  mit der Option --snapshot
    Die gewählte Größe des Snapshot sollte größer sein, als die zu erwartenden Änderungen im Dateisystem.
    z.B.
    - 40GB Original-Partition
    - Änderungen max. ca. 4GB (z.B. während der Nacht)
    - Größe 4,5 - 5 GB für das Snapshot sollte also reichen.
    (wobei 20 GB auch nicht wehtun - sofern der Platz nicht an anderer Stelle dringend gebraucht wird - zu groß ist kein Problem, aber zu klein!)

    "mal sinngemäß, ganz einfach erklärt"
    Nach dem anlegen des Snapshot ist das Snapshot-Volume erst mal komplett leer, obwohl man darin schon alle Dateien sieht.
    Von jeder Datei, die sich nun nach dem Zeitpunkt des Snapshots verändert, wird die alte Version der Datei im Snapshot gespeichert. Die Datei vor der Änderung liegt im Snapshot, die aktuelle und veränderte Datei im original Dateisystem.
    Die restlichen unveränderten Dateien liegen nicht im Snapshot, sondern nur einmal im original Filesystem. (auch wenn man Sie virtuell vor Augen hat, wenn man den Inhalt des Snapshot anschaut.)
    LVM mischt sich die Daten beim Zugriff einfach so zusammen, dass Du als Anwender den eingefrohrenen Stand siehst...

    Du kannst nun im laufenden System theoretisch den Inhalt des Snapshot komplett und in aller Ruhe als Backup wegsichern, ohne das sich aus Sicht des Backup-Systems auch nur eine Datei verändert....

    Wenn das Backup abgeschlossen ist, wird das Snapshot normalerweise gleich wieder mit "lvremove" gelöscht.
    Das war es.
    Wenn man das nächste Snapshot braucht - geht die ganze Prozedur von vorne los.

    Den lvcreate- und lvremove-Befehl kann man also nach Herzenslust anweden, so oft man will.


    Wie gesagt, ob das mit dem langzeitspeichern der Daten im Snapshot funktioniert, musst Du einfach mal testen.

    Bei meinen Experimenten kam es auch mal vor, dass das Snapshot plötzlich ungültig war, obwohl der Speicher bei weitem noch nicht ausgereitzt war.
    In diesem Fall wäre dann Dein "Virtuelles Backup" ebenfalls auf einen Schlag zunichte.
    Ich hatte glaube ich sogar mal beim Testen den Fall, dass das Linux mit dem ungültigen Snapshot nicht ordentlich gebootet hatte und im Rescue-System stehen geblieben ist....


    Das mit dem Zurückrollen geht meine ich nicht (bin mit aber auch nicht ganz sicher)
    Ich meine aber, dass Du die Snapshot-Daten quasi zurück kopieren müsstest. (wie eine Rücksicherung vom Backup)
    Viele Grüße
    HBtux

  4. #4
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    47
    Servus,

    Danke für die Infos.

    Ich bin grad über eine andere Manpage von lvcreate gestolpert:
    -s, --snapshot
    Create a snapshot logical volume (or snapshot) for an existing, so called original logical volume (or origin). Snapshots provide a 'frozen image' of the contents of the origin while the origin can still be updated. They enable consistent backups and online recovery of removed/overwritten data/files. The snapshot does not need the same amount of storage the origin has. In a typical scenario, 15-20% might be enough. In case the snapshot runs out of storage, use lvextend(8) to grow it. Shrinking a snapshot is supported by lvreduce(8) as well. Run lvdisplay(8) on the snapshot in order to check how much data is allocated to it.
    Ich werd mir also einen stündlichen Cronjob bauen, der einen snapshot zieht, der 30% so groß ist.
    Wenn der Snapshot gezogen wird soll der Cronjob dann gleich die Snapshot davor auf die korrekte Größe resizen.

  5. #5
    Linuxer Avatar von HBtux
    Registriert seit
    Oct 2009
    Ort
    $HOME
    Beiträge
    315
    Zitat Zitat von trequ Beitrag anzeigen
    Ich werd mir also einen stündlichen Cronjob bauen, der einen snapshot zieht, der 30% so groß ist.
    Wenn der Snapshot gezogen wird soll der Cronjob dann gleich die Snapshot davor auf die korrekte Größe resizen.
    Hab ich das richtig verstanden.

    Willst Du mehrere Snapshot zeitlich versetzt halten...?

    Was willst Du denn "resizen"?
    Der Snapshot belegt doch nur soviel Platz, wie Daten geändert wurden.

    Des weiteren wächst der Platzbedarf permanent weiter, je mehr Daten sich nach dem Zeitpunkt des Snapshots ändern.
    Der Snapshot hört erst auf zu wachsen, wenn Du in löscht oder wenn die max. Größe erreicht ist.....
    Viele Grüße
    HBtux

  6. #6
    .
    Registriert seit
    Oct 2001
    Ort
    Oberbayern
    Beiträge
    2.281
    wenn scheinbar eh genug platz vorhanden ist, warum nicht über "rsync -avP" regelmäßig "snapshotten"? und dieses laufwerk readonly einbinden?
    Core i3 | 2x3tb btrfs-raid1 | 2x2tb sw-raid1+lvm2

  7. #7
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    47
    Hallo.

    Zitat Zitat von HBtux Beitrag anzeigen
    Hab ich das richtig verstanden.
    Willst Du mehrere Snapshot zeitlich versetzt halten...?
    Ja, genau.
    Ich will wie bei einem NetApp Filer für jeden Snashot-Zeitpunkt einen Ordner, der den Zustand des Ordners anzeigt.
    Aus diesen Ordnern möchte ich dann Dateien rauskopieren können.

    Zitat Zitat von HBtux Beitrag anzeigen
    Was willst Du denn "resizen"?
    Der Snapshot belegt doch nur soviel Platz, wie Daten geändert wurden.
    Jein. Ich muss bei lvcreate --snapshot auch ein --size angeben.
    Zu diesem Zeitpunkt kenne ich aber die Menge der Änderungen ja nicht.

    Zitat Zitat von HBtux Beitrag anzeigen
    Des weiteren wächst der Platzbedarf permanent weiter, je mehr Daten sich nach dem Zeitpunkt des Snapshots ändern.
    Der Snapshot hört erst auf zu wachsen, wenn Du in löscht oder wenn die max. Größe erreicht ist.....
    Und genau das ist mein Problem.
    Wenn ich täglich ein Backup mache, habe ich die Änderungen vom Montag wieder im Backup vom Donnerstag stehen, wenn ich immer ein neues Snapshot Share erzeuge.

    Zitat Zitat von quinte17 Beitrag anzeigen
    wenn scheinbar eh genug platz vorhanden ist, warum nicht über "rsync -avP" regelmäßig "snapshotten"? und dieses laufwerk readonly einbinden?
    Wenn ich z.B. ein volles 100G Share habe, und ein daily Backup laufen lassen dann hätte ich nach 1 Monat 30x 100G Backup.
    Mit snapshots hätte ich nur die Änderungen die am Share gemacht wurden.

    Ich hab jetzt mal eine Stunde rumgetestet.
    Mein Ansatz sieht aktuell so aus:
    1. Share erstellen und formatieren und mounten
    2. Snapshot Share für hourly Snapshots erstellen mit ca. 10% der Größe
    3. Snapshot Share für daily Snaphots erstellen mit ca. 20% der Größe
    4. Cronjob erstellen, der stündlich aufgerufen wird.
    Ablauf:
    Wenn die akt. Stunde in den konfigurierten Stunden steht, erstelle ein "hourly" Backup.
    Dafür wollte ich das Snaphot Share "hourly" clonen (anders kann man anscheinend keine Snapshot Beziehung aufbrechen), also ein neues Share mit lvcreate erzeugen und das snapshot share mit dd rüberkopieren.
    Dann das hourly Snapshot Share mit lvremove zerstören und wieder ein neues bauen. Dadurch hab ich wieder nur die Änderung seit diesem Snapshot.
    Das gleiche dann täglich um 00 Uhr für das "daily" Backup.
    Geändert von trequ (27.11.09 um 10:21 Uhr)

  8. #8
    .
    Registriert seit
    Oct 2001
    Ort
    Oberbayern
    Beiträge
    2.281
    also mit rsync und hardlinks --link-destination kannst du doch auch inkrementelle backups machen...
    hier werden nur geänderte dateien neu verwendet. alle nicht veränderten werden durch hardlinks dargestellt und brauchen fast keinen platz..
    hierdurch würdest du bei 100GB daten nur bisschen mehr als 100Gb benötigen... (außer wenn alles geändert wird)
    nachteil ist doch nur, dass du die dateien der inkrementellen dinger NIEMALS ändern darfst...
    Core i3 | 2x3tb btrfs-raid1 | 2x2tb sw-raid1+lvm2

  9. #9
    Linuxer Avatar von HBtux
    Registriert seit
    Oct 2009
    Ort
    $HOME
    Beiträge
    315
    Dies ist mir auch noch eingefallen.
    Vor längerer Zeit war mal ein Artikel im c't, der mit rsync und hardlinks arbeitet.
    Ich habe das Heft tatsächlich noch gefunden. "Heft 9'2006 - April 2006"
    Allerings war das ein VBS-Script für Windows... (mit cygwin)

    Aber unter den Stichworten "rsync hardlink backup" oder "rsync incremental backup" findest Du genug Lesestoff.
    Viele Grüße
    HBtux

  10. #10
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    47
    Hallo.

    rsync und hardlinks kannte ich nicht.

    Werde ich mir anschauen, thx für den Tipp.

Ähnliche Themen

  1. vmware-workstation -> neue maschine anlegen -> absturz
    Von der_angler im Forum Virtuelle Maschinen und Emulatoren
    Antworten: 6
    Letzter Beitrag: 21.03.09, 18:08
  2. Benutzer anlegen mit den Konfigurationsfiles
    Von pat270881 im Forum System installieren und konfigurieren
    Antworten: 3
    Letzter Beitrag: 26.07.06, 17:42
  3. System und Samba User einfach anlegen
    Von BlacK FoX im Forum Linux in heterogenen Netzen
    Antworten: 8
    Letzter Beitrag: 21.12.05, 13:12
  4. Qemu Test Version
    Von stefan.becker im Forum Virtuelle Maschinen und Emulatoren
    Antworten: 35
    Letzter Beitrag: 16.12.05, 20:25
  5. [OT]Das Backup
    Von Homer56 im Forum Meldungen und Mitglieder
    Antworten: 30
    Letzter Beitrag: 25.07.05, 19:39

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •