{"id":2728,"date":"2021-01-18T08:00:00","date_gmt":"2021-01-18T07:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=2728"},"modified":"2021-11-09T12:57:01","modified_gmt":"2021-11-09T10:57:01","slug":"mit-dokumentation-zum-datenverlust","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/mit-dokumentation-zum-datenverlust\/","title":{"rendered":"Mit Dokumentation zum Datenverlust"},"content":{"rendered":"\n<p>Wie ihr sicher gemerkt habt, besch\u00e4ftige ich mich im Rahmen eines Wochenend-Projekts mit &#8222;<a href=\"https:\/\/www.my-it-brain.de\/wordpress\/kanboard-im-container\/\" data-type=\"post\" data-id=\"2685\">Kanboard im Container\u2026<\/a>&#8220; im Speziellen und Linux-Containern im Allgemeinen. Die Einrichtung von &#8222;<a href=\"https:\/\/www.my-it-brain.de\/wordpress\/backup-und-restore-im-kanboard-container-land\/\" data-type=\"post\" data-id=\"2705\">Backup und Restore im Kanboard-Container-Land<\/a>&#8220; liegt bereits hinter mir. Und das ist gut so, habe ich doch nun den ersten Datenverlust erlitten und musste meine Daten wiederherstellen.<\/p>\n\n\n\n<p>Die etwas ungl\u00fcckliche Verkettung von Umst\u00e4nden, welche zum Datenverlust f\u00fchrten, m\u00f6chte ich in diesem Artikel festhalten, so dass euch diese Erfahrung erspart bleiben kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Vorgeschichte<\/h2>\n\n\n\n<p>Da Container zustandslose Gebilde sind, nutze ich <em>podman volumes<\/em>, um die anfallenden Daten persistent zu speichern.<\/p>\n\n\n\n<p>Als Einsteiger in die Thematik habe ich mich an der offiziellen <a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/8\/html\/building_running_and_managing_containers\/\">Container-Dokumentation von Red Hat<\/a> entlang gehangelt und bin den Anweisungen in Kapitel <s>3.4.&nbsp;Sharing files between two containers<\/s> (die Dokumentation wurde \u00fcberarbeitet; das Kapitel existiert so nicht mehr) gefolgt. Dort wird beschrieben, wie man den Volume-Pfad einer Variablen zuweist, welche sp\u00e4ter verwendet wird, um das Volume \u00fcber den Pfad in den Container einzuh\u00e4ngen.<\/p>\n\n\n\n<p>Da ich es nicht besser wusste, bin ich der Anleitung Schritt-f\u00fcr-Schritt gefolgt. Dies f\u00fchrte zu einer funktionierenden Konfiguration, in der meine Daten persistent gespeichert wurden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kommando &#8218;podman volume prune&#8216; und die Daten waren weg<\/h2>\n\n\n\n<p>Am Ende meiner Spielerei wollte ich das Spielfeld bereinigen. Dabei bin ich auf das Kommando <code>podman volume prune<\/code> gesto\u00dfen, welches laut podman-volume-prune(1) alle Volumens entfernt, die sich <strong>nicht<\/strong> in Verwendung befinden. Dies klang nach genau dem Befehl, nach dem ich gesucht habe.<\/p>\n\n\n\n<p><strong>TL;DR:<\/strong> Nach der Ausf\u00fchrung des Kommandos waren meine Volumes weg. Auch jene, die aktiv in laufenden Container-Instanzen eingeh\u00e4ngt waren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Analyse<\/h2>\n\n\n\n<p>Nach ein paar Tests und einer Internetrecherche stand die Ursache f\u00fcr das Verhalten fest. Diese ist im <a href=\"https:\/\/github.com\/containers\/podman\/issues\/7862\">GitHub Issue #7862<\/a> dokumentiert und besagt, dass <code>podman volume prune<\/code> in Verwendung befindliche Volumes l\u00f6scht, wenn diese \u00fcber ihren Pfad und nicht \u00fcber ihren Namen eingeh\u00e4ngt wurden. Da ich wie oben beschrieben der Dokumentation von Red Hat strikt gefolgt bin, welche aber genau den Pfad und eben nicht den Namen verwendet, waren Ursache und Erkl\u00e4rung f\u00fcr den Datenverlust gefunden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Folge<\/h2>\n\n\n\n<p>In Folge meiner Erfahrungen habe ich zwei Anfragen zur Produktverbesserung (englisch: Request For Enhancement oder kurz RFE) gestellt:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=1914096\">Bug&nbsp;1914096<\/a> &#8211; Needs improvement: Building, running, and managing containers: 3.4. Sharing files between two containers<\/li><li><a href=\"https:\/\/github.com\/containers\/podman\/issues\/8913\">RFE: Let `podman volume prune` show the volumes that are going to be removed<\/a><\/li><\/ol>\n\n\n\n<p>Die erste Anfrage ist an Red Hat adressiert, mit der Bitte, in der Dokumentation den Volume-Namen an Stelle des in einer Variablen gespeicherten Volume-Pfades zu benutzen. Damit sollte verhindert werden, dass andere, die der Dokumentation folgen, die gleichen Erfahrungen wie ich machen m\u00fcssen.<\/p>\n\n\n\n<p>Als Ziel wird die Ver\u00f6ffentlichung von RHEL 8.4 anvisiert. Dieses Release sollte im Mai bzw. Juni 2021 erscheinen. Ich bin gespannt. Ich w\u00fcrde mich \u00fcber eine fr\u00fchere Aktualisierung der Dokumentation freuen. <em>Update 2021-01-25:<\/em> Bereits am 20. Januar wurde eine neue Version der Dokumentation ver\u00f6ffentlicht. In dieser war nur noch ein kleiner Tippfehler enthalten. Der Bug wurde mit dem heutigen Datum (25.01.2021) geschlossen. So ist sichergestellt, dass hier niemand mehr in die Falle tappt. Vielen Dank ans RHEL-Docs-Team im Allgemeinen und Gabriela im Speziellen.<\/p>\n\n\n\n<p>Die zweite Anfrage richtet sich an das Upstream-Projekt. Sie beinhaltet den Vorschlag, <code>podman volume prune<\/code> (um eine Option) zu erweitern, so dass die Liste der zu l\u00f6schenden Volumes angezeigt wird, bevor man die Entfernung best\u00e4tigt. Stand 17.01.2021 existiert bereits ein Pull-Request, welcher dieses Thema adressiert.<\/p>\n\n\n\n<p>Meinen Artikel &#8222;<a href=\"https:\/\/www.my-it-brain.de\/wordpress\/kanboard-im-container\/\" data-type=\"post\" data-id=\"2685\">Kanboard im Container\u2026<\/a>&#8220; habe ich entsprechend angepasst, so dass auch dort die Volumen-Namen zum Einh\u00e4ngen verwendet werden und nicht die Volume-Pfade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Alte Erkenntnis best\u00e4tigt<\/h2>\n\n\n\n<p>Dieses Beispiel zeigt wieder einmal sehr deutlich, wie wichtig eine funktionierende Datensicherung ist. Denn sie ist die zwingende Voraussetzung, um im Fehlerfall Daten auch wiederherstellen zu k\u00f6nnen. Daher kann ich nur jedem raten, ein entsprechendes Datensicherungs- und Wiederherstellungs-Konzept zu implementieren, bevor man Daten in eine Anwendung tut, die einem am Herzen liegen oder von denen die Zukunft des Unternehmens abh\u00e4ngt.<\/p>\n\n\n\n<p>Zum St\u00f6bern f\u00fchre ich im Folgenden einige Artikel aus diesem Blog auf, welche sich mit dem Thema Backup befassen:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/backup-und-restore-im-kanboard-container-land\/\">Backup und Restore im Kanboard-Container-Land<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/mit-einem-reverse-ssh-tunnel-zum-offsite-backup\/\">Mit einem Reverse-SSH-Tunnel zum Offsite-Backup<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/backup-backup-backup-von-den-vorteilen-einer-datensicherung\/\">Backup, Backup, Backup \u2013 Von den Vorteilen einer Datensicherung<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/dateibackup-mit-der-systemrescue-cd\/\">Dateibackup mit der Systemrescue-CD<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Update 2021-11-09<\/h2>\n\n\n\n<p>Eine L\u00f6sung f\u00fcr den Upstream-Issue &#8222;<a href=\"https:\/\/github.com\/containers\/podman\/issues\/8913\">RFE: Let `podman volume prune` show the volumes that are going to be removed<\/a>&#8220; wurde bereits am 27.01.2021 gemerged. Unter dem gleichen Namen hatte ich am 15.02.2021 einen RFE im Red Hat Bugzilla unter der Nummer <a href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=1928935\">1928936<\/a> ge\u00f6ffnet. Dieser wechselte heute in den Status &#8222;Release Pending&#8220; und k\u00fcndigt an, dass der Fix in der Paketversion podman-3.3.0-0.4.el8 f\u00fcr RHEL 8 enthalten sein wird.<\/p>\n\n\n\n<p>Ich erwarte das Paket im kommenden Release von RHEL 8.5.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie ihr sicher gemerkt habt, besch\u00e4ftige ich mich im Rahmen eines Wochenend-Projekts mit &#8222;Kanboard im Container\u2026&#8220; im Speziellen und Linux-Containern im Allgemeinen. Die Einrichtung von &#8222;Backup und Restore im Kanboard-Container-Land&#8220; liegt bereits hinter mir. Und das ist gut so, habe ich doch nun den ersten Datenverlust erlitten und musste meine Daten wiederherstellen. Die etwas ungl\u00fcckliche<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/mit-dokumentation-zum-datenverlust\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[57],"tags":[613,430,305,606,614,612,611],"class_list":["post-2728","post","type-post","status-publish","format-standard","hentry","category-wochenend-projekte","tag-datenverlust","tag-osbn","tag-planet","tag-podman","tag-podman-volume-prune","tag-prune","tag-volume"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=2728"}],"version-history":[{"count":6,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2728\/revisions"}],"predecessor-version":[{"id":2999,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2728\/revisions\/2999"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=2728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=2728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=2728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}