Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
sysbetr:kvm [2019/12/07 14:53] – [Handwerkszeug] cb | sysbetr:kvm [2020/05/15 14:04] (aktuell) – cb | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | =====KVM===== | + | Dies Systembetreuungs-Seiten |
- | Warum man Computer virtualisiert ist [[virtualisierung|bekannt]]. | + | |
- | Nun zu ein paar Details der Festplattenspeicherbelegung aus der Praxis.\\ | + | |
- | Dabei ist " | + | |
- | ====Problem: | + | |
- | Die Festplatte eines Gastes ist i.d.R. eine Datei. Es wäre große Verschwendung, | + | |
- | ====Idee: Thin-Provisioning==== | + | |
- | Das RAW-Format benötigt((hier kann natürlich die Festplattenverwaltung des Hosts selbst wieder optimieren...)) für eine 100GB-Datei auch 100GByte auf der Host-Festplatte. Es empfiehlt sich aber das QCOW2-Format zu verwenden, da dort erst einmal nur der belegte Platz des Gastes benötigt wird - z.B. 20 GByte. Der Gast " | + | |
- | | + | |
- | | + | |
- | ====Realisierung 1: Festplatte füllen, dann leeren==== | + | Diese Seite finden Sie dort als **[[https:// |
- | Eine oft beschriebene Vorgehensweise basiert auf dem Wissen, dass im Gast gelöschte Dateien zwar nicht mehr im Verzeichnis auftauchen und ihre Datenblöcke irgendwann überschrieben werden, aber vorläufig noch auf der Festplatte vorhanden sind. Überschreibt man den gesamten | + | |
- | | + | |
- | | + | |
- | * Windows: mit [[https://docs.microsoft.com/en-us/sysinternals/downloads/ | + | |
- | | + | |
- | | + | |
- | * Gast wieder starten | + | |
- | Nachteil: In unserem Beispiel werden sinnlos 80GB Nullen geschrieben, | + | |
- | Nachteil: Der komplette " | + | |
- | Nachteil: Für einige Minuten ist der Gast (ggf. ein wichtiger Server) nicht benutzbar. Dienste sollten heruntergefahren sein um Abstürze zu vermeiden.\\ | + | |
- | Vorteil: keine Unterstützung des Gast-Betriebssystems nötig (man könnte die Nullen auch remote auf die virtuelle Platte schreiben oder die virtuelle Maschine vorübergehend mit einem anderen Betriebssystem booten...) | + | |
- | ====Realisierung 2: discard/ | + | |
- | Hintergrund: | + | |
- | Diese Fähigkeit des Gast-Betriebssystem nutzt man nun wie folgt: | + | Dort finden Sie Informationen zur [[https://systembetreuung.bienmueller.de/dokuwiki/doku.php/kvm| Virtualisierung |
- | ⇒ Gast löscht eine Datei | + | |
- | ⇒⇒ per Trim wird der freiwerdende Speicher (z.B. einmal täglich) an die virtuelle Festplatte gemeldet | + | |
- | ⇒⇒⇒ KVM gibt den entsprechenden Speicher in der Festplattendatei auf dem Host frei | + | |
- | ⇒⇒⇒⇒ Die Festplattendatei hat eine Lücke mehr, und belegt somit auf der Host-Festplatte weniger Platz. | + | |
- | Damit dies funktioniert muss der **Gast** trimmen können und **KVM** die Freigabe auch verarbeiten: | + | |
- | === Gast anpassen === | + | |
- | Die virtuelle Festplatte für den Gast muss eine SCSI-Festplatte sein (ggf. nachträglich geändert - Backup gemacht?). \\ | + | |
- | Dafür benötigt man unter Windows die [[https://fedorapeople.org/groups/virt/ | + | |
- | * Für eine Linux-Gast kann man meist auch nachträglich von IDE oder virtio auf SCSI wechseln. | + | |
- | * Installation eines Win10-Gastes((erfolgreich getestet | + | |
- | * Vor der Windowsinstallation die Einstellungen der virtuellen Maschine anpassen: Festplatte als SCSI, dazu den SCSI-Controller virtio-scsi hinzufügen | + | |
- | * Zweites CD-Laufwerk anlegen | + | |
- | * Bei der Installation wird keine Festplatte gefunden. Jetzt auf //Treiber laden// klicken und von der zweiten CD laden lassen. | + | |
- | * Installation normal durchlaufen lassen. | + | |
- | * Nachträgliches Ändern der Boot-Platte eines Win10-Gastes((z.B. auf Ubuntu-Xenial KVM mit mehreren Win10 1909 gelungen)): | + | |
- | * CD-Laufwerk mit der Treiber-CD-Datei verbinden (wie oben). | + | |
- | * neue winzige virtuelle Mini-Platte als SCSI hinzufügen, | + | |
- | * Treiber im Gerätemanager installieren (" | + | |
- | * Boot-Platte auf SCSI umstellen, Bootreihenfolge prüfen, booten - wenn es funktioniert: | + | |
- | * Einige Windowsinstallation wollten erst nach folgender Folklore booten: | + | |
- | * Boot-Platte wieder auf IDE, booten (i.d.R. erfolgreich), | + | |
- | * Boot-Platte auf SCSI setzen, dann Mini-Platte entfernen, dann Mini-Platte wieder hinzufügen (ändert Reihenfolge) | + | |
- | * erfolgreich booten, herunterfahren, | + | |
- | ===KVM ergänzen=== | + | |
- | In der KVM-Konfigurationsdatei muss ein weiterer Eintrag gemacht werden (während der Gast heruntergefahren ist): | + | |
- | * mit //vish edit Gastname// die Konfigurationsdatei öffnen, ggf. mit Taste i in den Einfügemodus wechseln | + | |
- | * folgende Zeile suchen | + | |
- | < | + | |
- | * und mit // | + | |
- | < | + | |
- | * Info: ca. zwei Zeilen darunter steht, dass es ein SCSI-Device ist. | + | |
- | * mit ESC w q speichern und verlassen. | + | |
- | ===Gast vollenden=== | + | |
- | Nun den Gast wieder starten. | + | |
- | * Gast: Testen ob Trim aufrufbar ist | + | |
- | * Linux: fstrim -av | + | |
- | * Win10: Laufwerk optimieren (im Explorer durchklicken: | + | |
- | * Host: Prüfen, ob Trim bei der Datei auf dem Host etwas verändert (ls -hls, siehe [[# | + | |
- | * Bei Erfolg: | + | |
- | * Im Linux-Gast dafür sorgen, dass Trim automatisch regelmäßig durchgeführt wird (via crontab((Datei in cron.weekly mit //fstrim -a//)) oder systemd((aktivieren von // | + | |
- | * Ein Win10-Gast optimiert automatisch wöchentlich (anscheinend auch nach einer größeren Lösch-Aktion) | + | |
- | * Fehlersuche: | + | |
- | * Plan A: Ändere einzelne Einstellungen (Maschinentyp) und hoffe. | + | |
- | * Plan B: Kopiere die Festplatte, lege eine neue Gastmaschine an und verbinde sie mit der kopierten Datei und lass die neue Maschine laufen. | + | |
- | ====Nachbetrachtung==== | ||
- | Man muss natürlich damit rechnen, dass obiges Vorgehen immer auch einen Leistungsverlust bei den Festplattenzugriffen bedeutet. Sparse-Files haben nun einmal den Ruf, dass sie im längeren Gebrauch zu einer Fragmentierung der Host-Festplatte führen. Das stört aber nur Benutzer einer echten Festplatte. Mit SSDs ist das kein praktisches Problem. Außerdem kann man jederzeit die unten beschriebene Konvertierung in eine neue Datei durchführen, | ||
- | =====Handwerkszeug===== | ||
- | ====Test: Dateigrößen==== | ||
- | Merke: Das qcow2-Format von KVM erzeugt " | ||
- | Wie unterscheidet man nun den angeblichen und den realen Platzbedarf? | ||
- | |||
- | ls -hls | ||
- | | ||
- | Der Befehl liefert sowohl die offizielle Größe, als auch den tatsächlich belegten Platz. Auch //du *.qcow2// meldet die tatsächliche Belegung. | ||
- | Die offizielle Größe ist wichtig, falls man ein Backup ohne weitere Vorkehrungen über' | ||
- | |||
- | ====Tipp: Verkleinern der QCOW2-Datei==== | ||
- | Enthält eine QCOW2-Datei Leerstellen (echte Nullen oder Lücken via sparse-file), | ||
- | mv gast.qcow2 gast.org | ||
- | qemu-img convert -O qcow2 gast.org gast.qcow2 | ||
- | Dies kann man natürlich auch zum Zweck eines Backups machen: | ||
- | qemu-img convert -O qcow2 gast.qcow2 / | ||
- | Wer wirklich auf den **Platzbedarf** achtet, kann den zusätzlichen Parameter -c zum Komprimieren mitgeben. Dies dauert auch mit mehreren Prozessorkernen deutlich länger. Belegte Sektoren werden jetzt komprimiert, | ||
- | * bei einem frischen Debian Buster XFCE von 4,2GB auf 1,5GB Platzbedarf. | ||
- | * bei einem frischen Win10 1909 von 15 GByte auf 7 GByte | ||
- | |||
- | Bei zukünftigen Schreibzugriffen muss man jedoch mit Tempoeinbußen rechnen. | ||
- | Geht es jedoch mehr um **Performance**, | ||
- | |||
- | Deutlich ausführlicher [[https:// | ||
- | |||
- | Hier eine ausführlichere englische [[http:// |