Manuelle Datenwiederherstellung

Ziel

  • Herunterladen eines Instanz-Snapshots
  • Dateisystem im Snapshot reparieren und mounten

Vorraussetzungen

Optional: Temporäre Arbeitsumgebung

Hier klicken um Details einzublenden

Temporäre Arbeitsumgebung

Für dieses Tutorial benötigen wir eine Linux-Umgebung mit OpenStack Client. Sollte diese noch nicht vorhanden sein, kann sie mit folgenden Kommandos erstellt werden:

wget https://raw.githubusercontent.com/syseleven/heat-examples/master/kickstart/kickstart.yaml
...
openstack stack create -t kickstart.yaml --parameter key_name=<ssh key name> <stack name> --wait
...

Nun müssen wir uns zur erstellten Instanz verbinden.

ssh syseleven@<server-ip>

Alle folgenden Kommandos werden hier ausgeführt.

Wir benötigen auch die OpenStack Zugangsdaten (openrc-Datei).
Diese kann hier heruntergeladen werden.

source openrc

Erstellen eines Snapshots der defekten Instanz

Um die Daten herunterladen zu können muss ein Snapshot erstellt werden.

Achtung: Der betroffene Server wird für wenige Minuten angehalten.

openstack server image create <server uuid> --name <snapshot name> --wait

Nun kann der Snapshot heruntergeladen werden. Dies kann eine Weile dauern.

openstack image save --file snapshot.qcow2 <snapshot name>

Auf das Dateisystem kann nun mit nbd zugegriffen werden:

sudo apt-get install -y qemu-utils
sudo modprobe nbd
sudo qemu-nbd --connect /dev/nbd0 snapshot.qcow2

Nun können die verfügbaren Partitionen angezeigt werden.

$ sudo fdisk -l /dev/nbd0
Disk /dev/nbd0: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x974bb19a

Device      Boot Start       End   Sectors Size Id Type
/dev/nbd0p1 *     2048 104857566 104855519  50G 83 Linux

Mit fsck können etwaige Fehler erkannt und repariert werden.

# Mit der Option -y wird ohne Rückfrage repariert.
$ sudo fsck -f /dev/nbd0p1
[...]

Jetzt kann das Dateisystem eingehängt werden.

sudo mount /dev/nbd0p1 /mnt/

Zusammenfassung

Die Daten sind nun zugreifbar unter /mnt/.
Bei ext-Dateisystemen sollte ein Blick in /mnt/lost+found geworfen werden.