{"id":3468,"date":"2023-05-08T07:00:00","date_gmt":"2023-05-08T05:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=3468"},"modified":"2023-05-01T21:35:56","modified_gmt":"2023-05-01T19:35:56","slug":"gold-images-fuer-kvm-qemu-erstellen","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/gold-images-fuer-kvm-qemu-erstellen\/","title":{"rendered":"Gold-Images f\u00fcr KVM\/QEMU erstellen"},"content":{"rendered":"\n<p>Nachdem ich bereits beschrieben habe, wie ich <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/labor-umgebung-mit-ansible-in-kvm-erstellen\/\" data-type=\"post\" data-id=\"3070\">Labor-Umgebungen mit Ansible in KVM erstelle<\/a>, beschreibe ich in diesem Artikel, wie ich die dort verwendeten Gold-Images  erstelle.<\/p>\n\n\n\n<p>Ich erkl\u00e4re kurz, was ein Gold-Image ist und wof\u00fcr man es verwendet. Anschlie\u00dfend zeige ich, wie man mit dem Programm <code>qemu-img<\/code> eine Image-Datei auf der Kommandozeile erzeugt und diese  im Installationsprozess f\u00fcr die Partitionierung und Erzeugung des LVM nutzt. Im Anschluss daran dokumentiere ich, welche Laufwerke und Dateisysteme ich f\u00fcr welchen Zweck erstelle und warum ich mich so entschieden habe. Der Text endet mit einer Sammlung von Quellen und weiterf\u00fchrenden Links zum Thema.<\/p>\n\n\n\n<p>Der Text soll mir helfen, in Zukunft nachvollziehen zu k\u00f6nnen, warum ich mich so entschieden habe. F\u00fcr euch mag er als Information dienen, wie ich im Unterschied zu euch an das Thema herangehe. Wer noch nie etwas von Gold-Images geh\u00f6rt hat, findet in diesem Text eine Erkl\u00e4rung und passende Quellen dazu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist ein Gold-Image?<\/h2>\n\n\n\n<p>Ein Gold-Image, auch <em>Golden Image<\/em> oder Baseline-Image genannt, bezeichnet eine Vorlage (engl. template) in virtuellen Umgebungen, woraus sich virtuelle Maschinen (VMs) klonen lassen (siehe <a href=\"#quellen-links\">[1-5]<\/a>).<\/p>\n\n\n\n<p>In ein Gold-Image werden all die Softwarekomponenten, Anwendungen und Konfigurationsoptionen aufgenommen, welche Bestandteil aller davon abgeleiteten VMs sein sollen. Klonen erm\u00f6glicht die schnelle Bereitstellung neuer Systeme. Dies ist besonders dann n\u00fctzlich, wenn sich die VMs sehr \u00e4hnlich sind und man nur eine geringe Anzahl von Gold-Images pflegen muss.<\/p>\n\n\n\n<p>Ich nutze Gold-Images, um f\u00fcr die von mir verwendeten Linux-Distributionen jeweils eine Installation manuell durchzuf\u00fchren, welche die minimal erforderlichen Pakete enth\u00e4lt, um die abgeleiteten Klone mit Ansible fertig konfigurieren zu k\u00f6nnen. Wie ich dabei vorgehe, beschreibe ich in den folgenden Abschnitten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erstellung der Image-Datei<\/h2>\n\n\n\n<p>Im ersten Schritt erstelle ich Image-Dateien im <a href=\"https:\/\/en.wikipedia.org\/wiki\/Qcow\">qcow2-Format<\/a>. Bei diesem Format handelt es sich um das heute gebr\u00e4uchliche Format in KVM-\/QEMU-Umgebungen. Zur Erstellung verwende ich das <a href=\"https:\/\/qemu.readthedocs.io\/en\/latest\/tools\/qemu-img.html\">QEMU disk image utility qemu-img<\/a>.<\/p>\n\n\n\n<p>Die allgemeine Form des Befehls lautet (Details siehe Manpage qemu-img(1)):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qemu-img create -f FORMAT DATEINAME GR\u00d6\u00dfE<\/code><\/pre>\n\n\n\n<p>Der folgende Befehl erstellt eine Image-Datei im qcow2-Format, mit 20 Gigabyte Gr\u00f6\u00dfe und dem Dateinamen <em>debian11-template.qcow2<\/em> im Pfad <em>\/var\/lib\/libvirt\/images\/<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/debian11-template.qcow2 20G\nFormatting '\/var\/lib\/libvirt\/images\/debian11-template.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 lazy_refcounts=off refcount_bits=16<\/code><\/pre>\n\n\n\n<p>Dabei werden die 20 GB nicht sofort alloziert. Zu Beginn belegt die Datei lediglich einige Kilobyte und kann je nach Nutzung auf die maximale Gr\u00f6\u00dfe von 20 GB anwachsen. Diese Bereitstellungsform ist auch als <a href=\"https:\/\/en.wikipedia.org\/wiki\/Thin_provisioning\">Thin provisioning<\/a> bekannt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -sh \/var\/lib\/libvirt\/images\/debian11-template.qcow2\n193K \/var\/lib\/libvirt\/images\/debian11-template.qcow2<\/code><\/pre>\n\n\n\n<p>Es l\u00e4sst sich auf diese Weise mehr Speicherplatz provisionieren, als tats\u00e4chlich im System zur Verf\u00fcgung steht. Dabei gilt jedoch zu beachten, dass sich die Physik nicht betr\u00fcgen l\u00e4sst. Man ist gut beraten, den realen Speicherverbrauch zu \u00fcberwachen, um volllaufende Dateisysteme zu vermeiden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation und Partitionierung<\/h2>\n\n\n\n<p>Bei der Installation des Gold-Images f\u00fcr Labor-Umgebungen mache ich es mir relativ einfach. Ich erstelle z.B. im <a href=\"https:\/\/virt-manager.org\/\">virt-manager<\/a> oder <a href=\"https:\/\/cockpit-project.org\/\">cockpit<\/a> eine VM, die ich von einem Installations-ISO-Image der jeweiligen Distribution installiere.<\/p>\n\n\n\n<p>Bei Debian installiere ich f\u00fcr gew\u00f6hnlich ein System ohne grafische Oberfl\u00e4che, welches zus\u00e4tzlich zur Basis-Installation lediglich die Paketgruppen SSH-Server und System-Werkzeuge umfasst. Bei Fedora oder RHEL f\u00fchre ich die Minimal-Installation durch.<\/p>\n\n\n\n<p>Ob bzw. welches Passwort f\u00fcr den Benutzer root vergeben wird, ist an dieser Stelle nicht wichtig, da dies beim Klonen in eine neue VM durch die Ansible-Rolle <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/labor-umgebung-mit-ansible-in-kvm-erstellen\/\" data-type=\"post\" data-id=\"3070\">kvm_provision_lab<\/a> ge\u00e4ndert wird.<\/p>\n\n\n\n<p>Der Installer erkennt eine Festplatte, die in diesem Text exemplarisch als <em>\/dev\/vda<\/em> bezeichnet wird. Diese wird nun wie folgt konfiguriert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Vorwort zur Partitionierung<\/h3>\n\n\n\n<p>Das optimale Partitionslayout h\u00e4ngt vom konkreten Anwendungsfall ab und kann sich je nach Umgebung stark unterscheiden. Das von mir verwendete Layout passt aktuell am besten zu meinen Anforderungen. Es mag in Zukunft v\u00f6llig anders aussehen.<\/p>\n\n\n\n<p>Ich beschreibe, welche Partitionen ich erstelle und erl\u00e4utere, warum ich mich zum Zeitpunkt der Erstellung dieses Textes daf\u00fcr entschieden habe. Bitte \u00fcbernehmt dieses Layout nicht stumpf, sondern \u00fcberlegt, ob es zu euren Anforderungen passt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prim\u00e4re Partition \/dev\/vda1 f\u00fcr \/boot<\/h3>\n\n\n\n<p>In dieser Partition werden die Kernel und das <a href=\"https:\/\/de.wikipedia.org\/wiki\/Initramfs\">initramfs<\/a> abgelegt. Nach meiner Erfahrung reicht eine Gr\u00f6\u00dfe von 1 GiB aus, um auch einige \u00e4ltere Kernel vorzuhalten. Formatiert habe ich diese Partition mit dem Dateisystem <a href=\"https:\/\/de.wikipedia.org\/wiki\/Ext4\">ext4<\/a>.<\/p>\n\n\n\n<p>Ich bevorzuge ext4 gegen\u00fcber <a href=\"https:\/\/de.wikipedia.org\/wiki\/XFS_(Dateisystem)\">XFS<\/a>, da es sich im Gegensatz zu letzterem auch verkleinern l\u00e4sst. Zugegeben, dass dies notwendig ist, ist mir in 20 Jahren nur einmal untergekommen. Doch in diesem einen Moment war ich froh, dass es m\u00f6glich war.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">LVM, PV, VG, LV, Dateisysteme und Einh\u00e4ngepunkte<\/h3>\n\n\n\n<p>Der <em>Logical Volume Manager<\/em> (LVM) (siehe <a href=\"#quellen-links\">[11-13]<\/a>) bietet die M\u00f6glichkeit, Partitionen (genaugenommen <em>Logical Volumes<\/em>) f\u00fcr weitere Einh\u00e4ngepunkte zu erstellen, welche sich sp\u00e4ter noch flexibel in der Gr\u00f6\u00dfe anpassen lassen (Vergr\u00f6\u00dfern und Verkleinern). Und dies, ohne die verwendeten Dateisysteme aush\u00e4ngen zu m\u00fcssen.<\/p>\n\n\n\n<p>Wer mit den f\u00fcr LVM relevanten Begriffen <em>Physical Volume, Volume Group<\/em> und <em>Logical Volume<\/em> nicht vertraut ist, findet weiterf\u00fchrende Hinweise in <a href=\"#quellen-links\">[12] f\u00fcr Debian<\/a> bzw. <a href=\"#quellen-links\">[13] f\u00fcr RHEL<\/a>. Ich werde die Erstellung hier nicht im Detail beschreiben. <\/p>\n\n\n\n<p>Ich erstelle eine zweite prim\u00e4re Partition \/dev\/vda2 mit Typ LVM, welcher ich die verbleibende Speicherkapazit\u00e4t von 19 GiB zuweise. Mein fertiges Partitionslayout sieht wie folgt aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lsblk -o +FSTYPE\nNAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT FSTYPE\nsr0                    11:0    1 1024M  0 rom             \nvda                   254:0    0   20G  0 disk            \n\u251c\u2500vda1                254:1    0  953M  0 part \/boot      ext4\n\u2514\u2500vda2                254:2    0 19.1G  0 part            LVM2_member\n  \u251c\u2500vg_system-root    253:0    0  9.3G  0 lvm  \/          ext4\n  \u251c\u2500vg_system-var_log 253:1    0  4.7G  0 lvm  \/var\/log   ext4\n  \u2514\u2500vg_system-home    253:2    0  1.9G  0 lvm  \/home      ext4<\/code><\/pre>\n\n\n\n<p>Vorstehendem Code-Block ist zu entnehmen, dass ich drei <em>Logical Volumes<\/em> f\u00fcr die Einh\u00e4ngepunkte \/, \/var\/log und \/home verwende. Ich verwende auch hier durchg\u00e4ngig das ext4-Dateisystem.<\/p>\n\n\n\n<p>Log-Dateien und unkontrolliert wachsende Daten in HOME-Verzeichnissen f\u00fchren schnell dazu, dass das Root-Dateisystem (\/) volll\u00e4uft. Dies l\u00e4sst sich mit der Verwendung separater Einh\u00e4ngepunkte sicher verhindern.<\/p>\n\n\n\n<p>Eurem aufmerksamen Auge ist sicher aufgefallen, dass ich keine <a href=\"https:\/\/de.wikipedia.org\/wiki\/Swapping#Swap-Partition\">Swap-Partition<\/a> verwende. Da ich sie f\u00fcr die meist kurzlebigen Labor-VMs nicht ben\u00f6tige, lasse ich diese in der Regel weg. F\u00fcr Systeme, die ich f\u00fcr langfristigen Betrieb installiere, f\u00fcge ich diese nachtr\u00e4glich hinzu. Dank LVM ist dies kein Problem.<\/p>\n\n\n\n<p>Dar\u00fcber, ob man eine Swap-Partition braucht und wie gro\u00df diese sein sollte, werden teils esoterische Diskussionen gef\u00fchrt. Ich selbst orientiere mich an <em><a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/9\/html\/performing_a_standard_rhel_9_installation\/partitioning-reference_installing-rhel#recommended-partitioning-scheme_partitioning-reference\">Table&nbsp;B.1.&nbsp;Recommended system swap space<\/a><\/em> aus [<a href=\"#quellen-links\">14<\/a>].<\/p>\n\n\n\n<p>Damit habe ich ein Gold-Image erstellt, welches mir als Vorlage f\u00fcr weitere VMs dient und dabei nur wenig Platz auf der Festplatte des Hypervisor belegt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -sh \/var\/lib\/libvirt\/images\/debian11-template.qcow2\n2.3G \/var\/lib\/libvirt\/images\/debian11-template.qcow2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Sysprep<\/h2>\n\n\n\n<p><a href=\"https:\/\/de.wikipedia.org\/wiki\/Sysprep\">Sysprep<\/a> ist urspr\u00fcnglich ein Programm von Microsoft, mit welchem Gold-Images f\u00fcr die automatische Verteilung von Microsoft Windows vorbereitet werden. Heute taucht dieser Begriff in den Programmbezeichnungen weiterer Projekte auf und beschreibt gleichzeitig die T\u00e4tigkeit, ein Gold-Image f\u00fcr die weitere Verwendung vorzubereiten. Ich selbst verwende das Programm <em>virt-sysprep<\/em> von Richard W.M. Jones (Red Hat) und Wanglong Gao (Fujitsu Ltd.).<\/p>\n\n\n\n<p>Virt-sysprep entfernt Einstellungen, User, Host-spezifische Dateien und leert Protokolldateien in dem erzeugten Image. Damit soll sichergestellt werden, dass die von dem Gold-Image abgeleiteten VMs keine Eigenschaften besitzen, die spezifisch f\u00fcr das Original sind, wie z.B. der Hostname, MAC-Adressen oder die SSH-Host-Keys, um nur drei Beispiele zu nennen. Die Anwendung ist daher dringend empfohlen.<\/p>\n\n\n\n<p>Mit dem Befehl <code>virt-sysprep --list-operations<\/code> kann man sich die Aktionen anzeigen lassen, die virt-sysprep ausf\u00fchren kann. Die Standard-Aktionen sind in der Ausgabe mit einem &#8218;*&#8216; markiert. Unter RHEL 9 sieht die Ausgabe wie folgt aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ virt-sysprep --list-operations\nabrt-data * Remove the crash data generated by ABRT\nbackup-files * Remove editor backup files from the guest\nbash-history * Remove the bash history in the guest\nblkid-tab * Remove blkid tab in the guest\nca-certificates   Remove CA certificates in the guest\ncrash-data * Remove the crash data generated by kexec-tools\ncron-spool * Remove user at-jobs and cron-jobs\ncustomize * Customize the guest\ndhcp-client-state * Remove DHCP client leases\ndhcp-server-state * Remove DHCP server leases\ndovecot-data * Remove Dovecot (mail server) data\nfirewall-rules   Remove the firewall rules\nflag-reconfiguration   Flag the system for reconfiguration\nfs-uuids   Change filesystem UUIDs\nipa-client * Remove the IPA files\nkerberos-data   Remove Kerberos data in the guest\nkerberos-hostkeytab * Remove the Kerberos host keytab file in the guest\nlogfiles * Remove many log files from the guest\nlvm-system-devices * Remove LVM2 system.devices file\nlvm-uuids * Change LVM2 PV and VG UUIDs\nmachine-id * Remove the local machine ID\nmail-spool * Remove email from the local mail spool directory\nnet-hostname * Remove HOSTNAME and DHCP_HOSTNAME in network interface configuration\nnet-hwaddr * Remove HWADDR (hard-coded MAC address) configuration\nnet-nmconn * Remove system-local NetworkManager connection profiles (keyfiles)\npacct-log * Remove the process accounting log files\npackage-manager-cache * Remove package manager cache\npam-data * Remove the PAM data in the guest\npasswd-backups * Remove \/etc\/passwd- and similar backup files\npuppet-data-log * Remove the data and log files of puppet\nrh-subscription-manager * Remove the RH subscription manager files\nrhn-systemid * Remove the RHN system ID\nrpm-db * Remove host-specific RPM database files\nsamba-db-log * Remove the database and log files of Samba\nscript * Run arbitrary scripts against the guest\nsmolt-uuid * Remove the Smolt hardware UUID\nssh-hostkeys * Remove the SSH host keys in the guest\nssh-userdir * Remove \".ssh\" directories in the guest\nsssd-db-log * Remove the database and log files of sssd\ntmp-files * Remove temporary files\nudev-persistent-net * Remove udev persistent net rules\nuser-account   Remove the user accounts in the guest\nutmp * Remove the utmp file\nyum-uuid * Remove the yum UUID\ncustomize * Customize the guest\ndhcp-client-state * Remove DHCP client leases\ndhcp-server-state * Remove DHCP server leases\ndovecot-data * Remove Dovecot (mail server) data\nfirewall-rules   Remove the firewall rules\nflag-reconfiguration   Flag the system for reconfiguration\nfs-uuids   Change filesystem UUIDs\nipa-client * Remove the IPA files\nkerberos-data   Remove Kerberos data in the guest\nkerberos-hostkeytab * Remove the Kerberos host keytab file in the guest\nlogfiles * Remove many log files from the guest\nlvm-system-devices * Remove LVM2 system.devices file\nlvm-uuids * Change LVM2 PV and VG UUIDs\nmachine-id * Remove the local machine ID\nmail-spool * Remove email from the local mail spool directory\nnet-hostname * Remove HOSTNAME and DHCP_HOSTNAME in network interface configuration\nnet-hwaddr * Remove HWADDR (hard-coded MAC address) configuration\nnet-nmconn * Remove system-local NetworkManager connection profiles (keyfiles)\npacct-log * Remove the process accounting log files\npackage-manager-cache * Remove package manager cache\npam-data * Remove the PAM data in the guest\npasswd-backups * Remove \/etc\/passwd- and similar backup files\npuppet-data-log * Remove the data and log files of puppet\nrh-subscription-manager * Remove the RH subscription manager files\nrhn-systemid * Remove the RHN system ID\nrpm-db * Remove host-specific RPM database files\nsamba-db-log * Remove the database and log files of Samba\nscript * Run arbitrary scripts against the guest\nsmolt-uuid * Remove the Smolt hardware UUID\nssh-hostkeys * Remove the SSH host keys in the guest\nssh-userdir * Remove \".ssh\" directories in the guest\nsssd-db-log * Remove the database and log files of sssd\ntmp-files * Remove temporary files\nudev-persistent-net * Remove udev persistent net rules\nuser-account   Remove the user accounts in the guest\nutmp * Remove the utmp file\nyum-uuid * Remove the yum UUID<\/code><\/pre>\n\n\n\n<p>Selbstverst\u00e4ndlich gibt es mit virt-sysprep(1) auch eine Manpage, welche die Nutzung des Programms und s\u00e4mtliche Optionen erl\u00e4utert.<\/p>\n\n\n\n<p>Es ist sehr wichtig, dass die zu behandelnde Domain (VM) ausgeschaltet ist, bevor virt-sysprep gestartet wird, um eine Korruption der Image-Datei zu vermeiden.<\/p>\n\n\n\n<p>Der nun folgende Code-Block zeigt die Anwendung von virt-sysprep auf die qcow2-Datei meines debian11-templates. Die dabei verwendeten Option <code>--operations defaults,-ssh-userdir<\/code> sorgt daf\u00fcr, dass alle Standard-Operationen mit der Ausnahme durchgef\u00fchrt werden, dass die <code>.ssh<\/code>-Verzeichnisse der User erhalten bleiben. Die Option <code>--firstboot-command 'dpkg-reconfigure openssh-server'<\/code> stellt sicher, dass beim ersten Start des Klons neue SSH-Hostkeys generiert werden. Andernfalls kann der SSH-Dienst nicht starten und ich w\u00e4re nicht in der Lage mich via SSH anzumelden. Anschlie\u00dfend ist das Image bereit, um geklont bzw. kopiert zu werden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ virt-sysprep -a \/var\/lib\/libvirt\/images\/debian11-template.qcow2 --operations defaults,-ssh-userdir --firstboot-command 'dpkg-reconfigure openssh-server'\n&#91;   0.0] Examining the guest ...\n&#91;   2.0] Performing \"abrt-data\" ...\n&#91;   2.0] Performing \"backup-files\" ...\n&#91;   2.1] Performing \"bash-history\" ...\n&#91;   2.1] Performing \"blkid-tab\" ...\n&#91;   2.1] Performing \"crash-data\" ...\n&#91;   2.1] Performing \"cron-spool\" ...\n&#91;   2.1] Performing \"dhcp-client-state\" ...\n&#91;   2.1] Performing \"dhcp-server-state\" ...\n&#91;   2.1] Performing \"dovecot-data\" ...\n&#91;   2.1] Performing \"ipa-client\" ...\n&#91;   2.1] Performing \"kerberos-hostkeytab\" ...\n&#91;   2.2] Performing \"logfiles\" ...\n&#91;   2.2] Performing \"lvm-system-devices\" ...\n&#91;   2.2] Performing \"machine-id\" ...\n&#91;   2.2] Performing \"mail-spool\" ...\n&#91;   2.2] Performing \"net-hostname\" ...\n&#91;   2.2] Performing \"net-hwaddr\" ...\n&#91;   2.3] Performing \"net-nmconn\" ...\n&#91;   2.3] Performing \"pacct-log\" ...\n&#91;   2.3] Performing \"package-manager-cache\" ...\n&#91;   2.3] Performing \"pam-data\" ...\n&#91;   2.3] Performing \"passwd-backups\" ...\n&#91;   2.3] Performing \"puppet-data-log\" ...\n&#91;   2.3] Performing \"rh-subscription-manager\" ...\n&#91;   2.3] Performing \"rhn-systemid\" ...\n&#91;   2.4] Performing \"rpm-db\" ...\n&#91;   2.4] Performing \"samba-db-log\" ...\n&#91;   2.4] Performing \"script\" ...\n&#91;   2.4] Performing \"smolt-uuid\" ...\n&#91;   2.4] Performing \"ssh-hostkeys\" ...\n&#91;   2.4] Performing \"sssd-db-log\" ...\n&#91;   2.4] Performing \"tmp-files\" ...\n&#91;   2.4] Performing \"udev-persistent-net\" ...\n&#91;   2.4] Performing \"utmp\" ...\n&#91;   2.4] Performing \"yum-uuid\" ...\n&#91;   2.4] Performing \"customize\" ...\n&#91;   2.4] Setting a random seed\n&#91;   2.5] Setting the machine ID in \/etc\/machine-id\n&#91;   2.5] Installing firstboot command: dpkg-reconfigure openssh-server\n&#91;   2.5] SELinux relabelling\n&#91;   2.5] Performing \"lvm-uuids\" ...<\/code><\/pre>\n\n\n\n<p>Das Programm ist nicht auf qcow2-Images beschr\u00e4nkt. Einen weiteren Anwendungsfall habe ich bereits hier im Blog beschrieben: <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/vmware-esxi-vmdk-datei-einer-gast-vm-mit-virt-sysprep-bereinigen\/\" data-type=\"post\" data-id=\"3014\">VMware ESXi: VMDK-Datei einer Gast-VM mit virt-sysprep bereinigen<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verwendung der Gold-Images<\/h2>\n\n\n\n<p>Die Gold-Images werden verwendet, um durch Klonen neue VMs zu erstellen. Ich verwende dazu die Eingangs erw\u00e4hnte Ansible-Rolle <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/labor-umgebung-mit-ansible-in-kvm-erstellen\/\" data-type=\"post\" data-id=\"3070\">kvm_provision_lab<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was tun, wenn der Platz knapp wird?<\/h2>\n\n\n\n<p>Wird im Laufe des Lebenszyklus einer VM mehr Speicherplatz ben\u00f6tigt, so l\u00e4sst sich das Vorgehen wie folgt skizzieren:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Neue virtuelle Festplatte mit ausreichend Speicherkapazit\u00e4t der VM hinzuf\u00fcgen.<\/li>\n\n\n\n<li>Eine Partition auf der neuen virtuellen Festplatte erstellen (optional).<\/li>\n\n\n\n<li>Mit <code>pvcreate<\/code> ein neues <em>Physical Volume<\/em> erstellen.<\/li>\n\n\n\n<li>Das <em>Physical Volume<\/em> mit <code>vgextend<\/code> der <em>Volume Group<\/em> hinzuf\u00fcgen.<\/li>\n\n\n\n<li>Das <em>Logical Volume<\/em> mit <code>lvextend<\/code> vergr\u00f6\u00dfern.<\/li>\n<\/ol>\n\n\n\n<p>Die Schritte 3-5 werden ausf\u00fchrlich in der RHEL-9-Dokumentation in <a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/9\/html\/configuring_and_managing_logical_volumes\/modifying-the-size-of-a-logical-volume_configuring-and-managing-logical-volumes\">Chapter 5. Modifying the size of a logical volume<\/a> beschrieben. Dort wird auch beschrieben, wie ein <em>Logical Volume<\/em> verkleinert werden kann.<\/p>\n\n\n\n<p>Falls ihr euch hierzu ein Tutorial w\u00fcnscht, lasst es mich bitte in den Kommentaren wissen. Dann liefere ich ein entsprechendes Beispiel nach.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quellen-links\">Quellen und weiterf\u00fchrende Links<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Was ist ein Golden Image? URL: <a href=\"https:\/\/www.redhat.com\/de\/topics\/linux\/what-is-a-golden-image\">https:\/\/www.redhat.com\/de\/topics\/linux\/what-is-a-golden-image<\/a>.<\/li>\n\n\n\n<li>What is a golden image? On opensource.com by <a href=\"https:\/\/opensource.com\/users\/seth\">Seth Kenlon<\/a> (Team, Red Hat). URL: <a href=\"https:\/\/opensource.com\/article\/19\/7\/what-golden-image\">https:\/\/opensource.com\/article\/19\/7\/what-golden-image<\/a>.<\/li>\n\n\n\n<li>What is a golden image? Definition by <a href=\"https:\/\/www.techtarget.com\/contributor\/Nick-Martin\">Nick Martin<\/a> on TechTarget. URL: <a href=\"https:\/\/www.techtarget.com\/searchitoperations\/definition\/golden-image\">https:\/\/www.techtarget.com\/searchitoperations\/definition\/golden-image<\/a><\/li>\n\n\n\n<li>Definition Golden Image (auch Master Image oder Goldenes Abbild). ComputerWeekly.de. URL: <a href=\"https:\/\/www.computerweekly.com\/de\/definition\/Golden-Image-auch-Master-Image-oder-Goldenes-Abbild\">https:\/\/www.computerweekly.com\/de\/definition\/Golden-Image-auch-Master-Image-oder-Goldenes-Abbild<\/a><\/li>\n\n\n\n<li>Was ist ein Golden Image? 21.11.2018: Autor \/ Redakteur: <a href=\"https:\/\/www.datacenter-insider.de\/autor\/otto-geissler\/1455060\/\">Dipl. Betriebswirt Otto Gei\u00dfler<\/a> \/ Ulrike Ostler. URL: <a href=\"https:\/\/www.datacenter-insider.de\/was-ist-ein-golden-image-a-775197\/\">https:\/\/www.datacenter-insider.de\/was-ist-ein-golden-image-a-775197\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Qcow\">Wikipedia-Artikel zu qcow<\/a> {EN}<\/li>\n\n\n\n<li><a href=\"https:\/\/qemu.readthedocs.io\/en\/latest\/tools\/qemu-img.html\">QEMU disk image utility<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Thin_provisioning\">Wikepdia-Artikel Thin zu provisioning<\/a> {EN}<\/li>\n\n\n\n<li><a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/9\"><\/a><a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/9\/html\/performing_a_standard_rhel_9_installation\">Performing a standard RHEL 9 installation<\/a>; Appendix&nbsp;B.&nbsp;Partitioning reference; URL: <a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/9\/html\/performing_a_standard_rhel_9_installation\/partitioning-reference_installing-rhel#recommended-partitioning-scheme_partitioning-reference\">https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/9\/html\/performing_a_standard_rhel_9_installation\/partitioning-reference_installing-rhel#recommended-partitioning-scheme_partitioning-reference<\/a><\/li>\n\n\n\n<li>Debian: Empfohlene Partitionsschemata. URL: <a href=\"https:\/\/www.debian.org\/releases\/bullseye\/amd64\/apcs03.de.html\">https:\/\/www.debian.org\/releases\/bullseye\/amd64\/apcs03.de.html<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Logical_Volume_Manager\">Wikipedia-Artikel zu LVM<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/wiki.debian.org\/LVM\">LVM &#8211; Debian Wiki<\/a> {EN}<\/li>\n\n\n\n<li><a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/9\/html\/configuring_and_managing_logical_volumes\/index\">Configuring and managing logical volumes. Red&nbsp;Hat Enterprise&nbsp;Linux 9. A guide to the configuration and management of LVM logical volumes. <\/a>{EN}<\/li>\n\n\n\n<li><a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/9\/html\/performing_a_standard_rhel_9_installation\/partitioning-reference_installing-rhel#recommended-partitioning-scheme_partitioning-reference\">Appendix B. Partitioning reference. Performing a standard RHEL 9 installation.<\/a> {EN}<\/li>\n\n\n\n<li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/vmware-esxi-vmdk-datei-einer-gast-vm-mit-virt-sysprep-bereinigen\/\" data-type=\"post\" data-id=\"3014\">VMware ESXi: VMDK-Datei einer Gast-VM mit virt-sysprep bereinigen<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem ich bereits beschrieben habe, wie ich Labor-Umgebungen mit Ansible in KVM erstelle, beschreibe ich in diesem Artikel, wie ich die dort verwendeten Gold-Images erstelle. Ich erkl\u00e4re kurz, was ein Gold-Image ist und wof\u00fcr man es verwendet. Anschlie\u00dfend zeige ich, wie man mit dem Programm qemu-img eine Image-Datei auf der Kommandozeile erzeugt und diese im<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/gold-images-fuer-kvm-qemu-erstellen\/\">[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":[51],"tags":[773,774,772,715,430,775,305],"class_list":["post-3468","post","type-post","status-publish","format-standard","hentry","category-linux","tag-dateisysteme","tag-einhaengepunkte","tag-logical-volume-manager","tag-lvm","tag-osbn","tag-partitionen","tag-planet"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3468","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=3468"}],"version-history":[{"count":11,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3468\/revisions"}],"predecessor-version":[{"id":3488,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3468\/revisions\/3488"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}