Root-Server Tutorial

ROOT-SERVER TUTORIAL

Einen QCOW2 Snapshot bearbeiten und schrumpfen (mit Qemu auf Windows oder anderen Betriebssystemen)

Lerne, wie man den Inhalt eines qcow2 Snapshots von einem virtuellen Server bearbeitet und danach die Datei so verkleinert, dass sie nur noch so groß wie die enthaltenen Daten ist.

Einführung

Dieses Tutorial beschreibt, wie man den Inhalt eines qcow2 Snapshots eines virtuellen Servers bearbeitet und die Snapshot Datei anschließend auf die Größe der enthaltenen Daten schrumpft.

Das kann z.B. nützlich sein, wenn ein Snapshot große Datenmengen enthält, die anderweitig gesichert sind. Diese Daten aus dem Snapshot zu entfernen und die Snapshot Datei zu verkleinern, reduziert die Zeit, um das Image wieder auf einen virtuellen Server hochzuladen.

Das Ziel dieses Tutorials ist, einen Weg aufzuzeigen, der auf einem Windows System möglich ist. Die Methode ist aber auch auf anderen Betriebssystemen andwendbar.

Voraussetzungen

Diese Methode setzt genug Festplattenspeicher voraus, um die unbearbeitete Snapshotdatei und gleichzeitig den verkleinerten Snapshot zu speichern.

Die Snapshotdatei sollte im qcow2 Format vorliegen und bereits heruntergeladen sein. Der Anwender sollte mit der Kommandozeile hinreichend vertraut sein, um sich durch ein Dateisystem zu bewegen und selektiv unerwünschte Dateien zu löschen.

Schritt 1 - Qemu herunterladen und installieren

Lade die Installationsdatei für QEMU herunter und installiere Qemu.

Schritt 2 - Live-ISO von Alpine Linux herunterladen

Alpine Linux ist eine kleine Linux distribution. Für die weiteren Schritte dieses Tutorials, lade die "Virtual" x86_64 ISO Datei.

Schritt 3 - Starte eine virtuelle Maschine

Benutze QEMU, um einen virtuellen Computer mit Alpine Linux als Betriebssystem and der qcow2 Snapshot Datei als virtuelle Festplatte zu starten:

qemu-system-x86_64.exe -m 2048 -smp 4 -boot d -cdrom alpine-virt-3.17.3-x86_64.iso -drive if=virtio,driver=qcow2,discard=on,file=diskimage.qcow2

Es kann nötig sein, für das qemu Programm, die Alpine ISO Datei und das Festplattenimage den jeweiligen Pfad voranzustellen. Außerdem kann der Name der heruntergeladenen Alpine ISO Datei anders sein.

Die -m 2048 Option gibt dem virtuellen Computer 2GB RAM. Mit -smp 4 werden vier CPU-Kerne bereitgestellt. Der -boot d Parameter stellt als Bootdevice das CD-ROM ISO ein, das mit dem -cdrom Parameter festgelegt wird.

Mit dem -drive Parameter erzeugt QEMU eine virtuelle Festplatte an einer virtio Schnittstelle, die vom qcow2 Treiber bedient wird. Die Angabe discard=on sorgt dafür, das Discard Anweisungen an den Treiber durchgereicht werden.

Wegen der besseren Kompatibilität aktiviert der genannte Befehl keine Hardwarebeschleunigung für die Virtualisierung. Die Ausführung kann deshalb langsamer als erwartet sein. Du kannst -accel whpx oder -accel haxm auf Windows und -accel kvm auf Linux versuchen, aber wenn das nicht funktioniert, benutze einfach die langsamere Softwareemulation.

Schritt 4 - Den Inhalt des Snapshots in Alpine Linux bearbeiten

  1. Anmeldung als root ohne Passwort

  2. Die voreingestellte US Tastaturbelegung ändern:

    setup-keymap

    Gib setup ein, drücke Tab, damit Autocomplete den Bindestrich ergänzt, dann gib den Rest ein.

    Für die deutsche Tastaturbelegung, gib zwei mal nacheinander 'de' ein.

  3. Anzeigen der Partitionen mit:

    fdisk -l

  4. Hänge die Partition ein, die du bearbeiten möchtest, z.B. /dev/vda1:

    mount /dev/vda1 /mnt

  5. Lösche die Dateien, die aus dem Snapshot entfernt werden sollen

    cd /mnt

    ...Benutze cd, find, rm, etc., um die nicht benötigten Dateien zu finden und zu löschen...

    cd /

  6. Markiere den leeren Platz im Dateisystem als unbenutzt

    fstrim -v /mnt

  7. Hänge die Partition wieder aus

    umount /mnt

  8. Schalte den virtuellen Computer aus. In Alpine Linux geht das so:

    poweroff

Schritt 5 - Unbelegten Speicher aus dem Festplattenimage entfernen

Der Platz, den die gelöschten Dateien belegten, ist jetzt als unbenutzt markiert. Dafür haben "discard=on" und "fstrim" gesorgt. Beim Umkopieren der Datei mit qemu-img wird der so markierte freie Speicher nicht mitkopiert.

qemu-img.exe convert -f qcow2 -O qcow2 diskimage.qcow2 diskimage-trimmed.qcow2

Es kann wieder nötig sein, Pfade voranzustellen.

Das qcow2 Dateiformat unterstützt Kompression, die die Dateigröße weiter reduzieren kann. Kompression kann optional mit -c eingeschaltet werden, aber dadurch dauert dieser Vorgang erheblich länger.

qemu-img.exe convert -f qcow2 -O qcow2 -c diskimage.qcow2 diskimage-trimmed.qcow2

Schluss

Nach diesem Tutorial liegt der Snapshot in zwei Kopien vor: Die Originaldatei mit den Änderungen, die du in der VM gemacht hast, und die geschrumpfte Kopie. Die Originaldatei kann gelöscht werden. Die Kopie ist unabhängig davon.

Licence

MIT

Copyright (c) 2021 netcup

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicence, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Contributor's Certificate of Origin

By making a contribution to this project, I certify that:

  1. The contribution was created in whole or in part by me and I have the right to submit it under the licence indicated in the file; or

  2. The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate licence and I have the right under that licence to submit that work with modifications, whether created in whole or in part by me, under the same licence (unless I am permitted to submit under a different licence), as indicated in the file; or

  3. The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

  4. I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the licence(s) involved.

Veröffentlicht am 3.4.2023 von NaN

Tutorial einreichen

Erhalte einen 60€ netcup Gutschein für jedes veröffentlichte Tutorial.