Vorbereiten von Linux für Imaging in Azure

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, deren Dienstende (End-of-Life, EOL) ansteht. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS-Leitfaden für das Lebensende.

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

Die Vereinbarung zum Servicelevel (SLA) der Azure-Plattform gilt nur für virtuelle Computer (VMs), die das Linux-Betriebssystem ausführen, wenn Sie eine der unterstützten Verteilungen verwenden. Für unterstützte Verteilungen stellt Azure Marketplace vorkonfigurierte Linux-Images bereit. Weitere Informationen finden Sie unter:

Alle anderen Verteilungen, die auf Azure ausgeführt werden, einschließlich communitygestützter und nicht unterstützter Verteilungen, haben einige Voraussetzungen.

Der restliche Artikel enthält eine allgemeine Anleitung zum Ausführen Ihrer Linux-Distribution in Azure. In diesem Artikel können nicht alle Aspekte abgedeckt werden, da jede Distribution anders ist. Auch wenn alle in diesem Artikel beschriebenen Kriterien erfüllt sind, müssen Sie Ihr Linux-System unter Umständen noch erheblich anpassen, damit es ordnungsgemäß ausgeführt wird.

Allgemeine Installationshinweise für Linux

  • Azure unterstützt das virtuelle Hyper-V-Festplattenformat (VHDX) nicht. Azure unterstützt nur feste virtuelle Festplatten. Sie können den Datenträger mit dem Hyper-V-Manager oder dem Cmdlet Convert-VHD in das VHD-Format konvertieren. Wenn Sie VirtualBox verwenden, wählen Sie beim Erstellen des Datenträgers die Option Feste Größe aus, nicht die Standardeinstellung mit dynamischer Zuweisung.

  • Azure unterstützt virtuelle Computer der Gen1 (BIOS-Start) und Gen2 (UEFI-Start).

  • Das Kernelmodul für die virtuelle Dateizuordnungstabelle (VFAT) muss im Kernel aktiviert sein.

  • Die maximal zulässige Größe für die virtuelle Festplatte beträgt 1.023 GB.

  • Beim Installieren des Linux-Betriebssystems wird empfohlen, anstelle von Logical Volume Manager (LVM) Standardpartitionen zu verwenden. LVM ist der Standard für viele Installationen.

    Mit Standardpartitionen lässt sich vermeiden, dass ein LVM-Namenskonflikt mit geklonten virtuellen Computern auftritt, besonders dann, wenn ein Betriebssystemdatenträger zu Fehlerbehebungszwecken an einen anderen identischen virtuellen Computer angefügt werden soll. Sie können LVM oder RAID auf Datenträgern verwenden.

  • Zum Einbinden von UDF-Dateisystemen ist Kernelunterstützung erforderlich. Beim ersten Start in Azure wird die Bereitstellungskonfiguration über UDF-formatierte Medien, die an den Gast angefügt sind, an den virtuellen Linux-Computer übergeben. Der Azure Linux-Agent muss das UDF-Dateisystem einbinden, um die Konfiguration zu lesen und die VM bereitzustellen.

  • Linux-Kernelversionen vor Version 2.6.37 unterstützen keinen NUMA (Non-Uniform Memory Access, nicht einheitlicher Speicherzugriff) auf Hyper-V mit größeren VM-Größen. Dieses Problem betrifft in erster Linie ältere Verteilungen, die den Red Hat 2.6.32-Upstream-Kernel verwenden. Es wurde in Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504) behoben.

    Systeme, auf denen benutzerdefinierte Kernel ausgeführt werden, die älter als 2.6.37 sind, bzw. RHEL-basierte Kernel, die älter als 2.6.32-504 sind, müssen in grub.conf in der Kernelbefehlszeile den Startparameter numa=off festlegen. Weitere Informationen finden Sie unter Red Hat KB 436883.

  • Konfigurieren Sie keine Auslagerungspartition auf dem Betriebssystemdatenträger. Sie können den Linux-Agent zur Erstellung einer Auslagerungsdatei auf dem temporären Ressourcendatenträger konfigurieren, wie später in diesem Artikel beschrieben.

  • Alle VHDs in Azure benötigen eine virtuelle Größe, die auf 1 MB ausgerichtet ist (1024 x 1024 Bytes). Stellen Sie beim Konvertieren von einem RAW-Datenträger in VHD sicher, dass die Größe des RAW-Datenträgers vor der Konvertierung ein Vielfaches von 1 MB beträgt, wie später in diesem Artikel beschrieben.

  • Verwenden Sie die aktuellste Distributionsversion und Software sowie die neuesten Pakete.

  • Entfernen Sie Benutzer und Systemkonten, öffentliche Schlüssel, vertrauliche Daten, nicht erforderliche Software und Anwendungen.

Hinweis

Cloud-init-Version 21.2 oder höher entfernt die UDF-Anforderung. Aber ohne das aktivierte udf-Modul wird die CD-ROM während der Bereitstellung nicht eingebunden, was verhindert, dass die benutzerdefinierten Daten angewendet werden. Eine Problemumgehung besteht darin, Benutzerdaten anzuwenden. Im Gegensatz zu benutzerdefinierten Daten werden Benutzerdaten jedoch nicht verschlüsselt. Weitere Informationen finden Sie unter Benutzerdatenformate in der cloud-init-Dokumentation.

Installieren von Kernelmodulen ohne Hyper-V

Azure wird auf dem Hyper-V-Hypervisor ausgeführt, weshalb Linux anfordert, dass bestimmte Kernelmodule in Azure ausgeführt werden. Wenn Sie über einen außerhalb von Hyper-V erstellten virtuellen Computer verfügen, enthalten Linux-Installationsprogramme möglicherweise keine Treiber für Hyper-V auf dem anfänglichen RAM-Datenträger („initrd“ oder „initramfs“), sofern auf dem virtuellen Computer nicht die Ausführung in einer Hyper-V-Umgebung erkannt wird.

Wenn ein anderes Virtualisierungssystem (z. B. Virtualbox oder KVM) zur Vorbereitung des Linux-Images verwendet wird, müssen Sie möglicherweise „initrd“ neu erstellen, um sicherzustellen, dass mindestens die Kernelmodule hv_vmbus und hv_storvsc auf dem anfänglichen RAM-Datenträger verfügbar sind. Dies ist ein bekanntes Problem auf Systemen, die auf der Red Hat-Upstreamdistribution basieren, und tritt möglicherweise auch auf anderen Systemen auf.

Der Mechanismus für die Neuerstellung des Images "initrd" oder "initramfs" kann je nach der Verteilung variieren. In der Dokumentation zur Distribution oder über den Support erhalten Sie Informationen zur geeigneten Vorgehensweise. Hier sehen Sie ein Beispiel für die Neuerstellung von „initrd“ mit dem Hilfsprogramm mkinitrd:

  1. Sichern Sie das bestehende Image „initrd“:

    cd /boot
    sudo cp initrd-`uname -r`.img  initrd-`uname -r`.img.bak
    
  2. Erstellen Sie initrd mithilfe der hv_vmbus- und hv_storvsc-Kernelmodule neu:

    sudo mkinitrd --preload=hv_storvsc --preload=hv_vmbus -v -f initrd-`uname -r`.img `uname -r`
    

Ändern der Größe von VHDs

VHD-Images in Azure benötigen eine virtuelle Größe, die auf 1 MB ausgerichtet ist. In der Regel sind mit Hyper-V erstellte virtuelle Festplatten bereits ordnungsgemäß ausgerichtet. Falls die virtuelle Festplatte nicht ordnungsgemäß ausgerichtet ist, wird möglicherweise eine Fehlermeldung wie im folgenden Beispiel angezeigt, wenn Sie versuchen, ein Image von der virtuellen Festplatte zu erstellen:

The VHD http://<mystorageaccount>.blob.core.windows.net/vhds/MyLinuxVM.vhd has an unsupported virtual size of 21475270656 bytes. The size must be a whole number (in MBs).

Ändern Sie in diesem Fall die Größe des virtuellen Computers über die Hyper-V-Manager-Konsole oder mit dem PowerShell-Cmdlet Resize-VHD. Wenn Sie nicht in einer Windows-Umgebung arbeiten, sollten Sie qemu-img verwenden, um (falls erforderlich) die Konvertierung durchzuführen und die Größe der virtuellen Festplatte zu ändern.

Hinweis

Es gibt einen bekannten Fehler in den qemu-img für QEMU ab Version 2.2.1 und einigen späteren Versionen, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 2.6 behoben. Wir empfehlen, die Version 2.2.0 oder früher oder die Version 2.6 oder höher zu verwenden.

  1. Das direkte Ändern der Größe der virtuellen Festplatte mithilfe von Tools wie qemu-img oder vbox-manage kann dazu führen, dass die virtuelle Festplatte nicht startfähig ist. Es wird empfohlen, die virtuelle Festplatte zuerst mit dem folgenden Code in ein unformatiertes Datenträgerimage zu konvertieren.

    Wenn das VM-Image als Rohdatenträgerimage erstellt wurde, können Sie diesen Schritt überspringen. Das Erstellen des VM-Images als rohes Datenträgerimage ist die Standardeinstellung in einigen Hypervisoren, z. B. MIME.

    sudo qemu-img convert -f vpc -O raw MyLinuxVM.vhd MyLinuxVM.raw
    
  2. Berechnen Sie die erforderliche Größe des Datenträgerimages, sodass die virtuelle Größe auf 1 MB ausgerichtet ist. Das folgende Bash-Shell-Skript verwendet qemu-img info, um die virtuelle Größe des Datenträgerimages zu ermitteln, und berechnet dann die Größe bis zum nächsten MB-Wert:

    rawdisk="MyLinuxVM.raw"
    vhddisk="MyLinuxVM.vhd"
    
    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "$rawdisk" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    
    rounded_size=$(((($size+$MB-1)/$MB)*$MB))
    
    echo "Rounded Size = $rounded_size"
    
  3. Ändern Sie die Größe des rohen Datenträgers mithilfe von $rounded_size:

    sudo qemu-img resize MyLinuxVM.raw $rounded_size
    
  4. Konvertieren Sie den unformatierten Datenträger zurück in eine virtuelle Festplatte mit fester Größe.

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc MyLinuxVM.raw MyLinuxVM.vhd
    

    Oder entfernen Sie mit QEMU-Versionen vor Version 2.6 die force_size-Option:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc MyLinuxVM.raw MyLinuxVM.vhd
    

Linux-Kernelanforderungen

Die Treiber für die Linux-Integrationsdienste (Linux Integration Services, LIS) für Hyper-V und Azure tragen direkt zum Linux-Upstream-Kernel bei. Viele Distributionen, die eine neue Linux-Kernelversion (z.B. 3.x) enthalten, verfügen bereits über diese Treiber oder bieten andernfalls zurückportierte Versionen dieser Treiber mit ihren Kernels.

LIS-Treiber werden ständig im Upstream-Kernel mit neuen Fixes und Features aktualisiert. Wenn möglich, empfehlen wir, eine unterstützte Distribution auszuführen, die diese Fixes und Updates enthält.

Wenn Sie eine Variante der RHEL-Versionen 6.0 bis 6.3 ausführen, müssen Sie die neuesten LIS-Treiber für Hyper-V installieren. Ab RHEL 6.4+ (und Ableitungen) sind die LIS-Treiber bereits im Kernel enthalten, sodass Sie keine zusätzlichen Installationspakete benötigen.

Wenn ein benutzerdefinierter Kernel erforderlich ist, empfiehlt es sich, eine neue Kernelversion (z.B. 3.8+) zu verwenden. Bei Distributionen oder Anbietern, die ihren Kernel selbst verwalten, müssen Sie die LIS-Treiber regelmäßig vom Upstreamkernel zu Ihrem benutzerdefinierten Kernel zurückportieren.

Selbst wenn Sie bereits eine relativ aktuelle Kernelversion ausführen, wird dringend empfohlen, die Upstreamfehlerbehebungen in den LIS-Treibern nachzuverfolgen und diese bei Bedarf zurückzuportieren. Die Speicherorte der LIS-Treiberquelldateien sind in der Datei MAINTAINERS in der Linux-Kernelquellstruktur angegeben:

    F:    arch/x86/include/asm/mshyperv.h
    F:    arch/x86/include/uapi/asm/hyperv.h
    F:    arch/x86/kernel/cpu/mshyperv.c
    F:    drivers/hid/hid-hyperv.c
    F:    drivers/hv/
    F:    drivers/input/serio/hyperv-keyboard.c
    F:    drivers/net/hyperv/
    F:    drivers/scsi/storvsc_drv.c
    F:    drivers/video/fbdev/hyperv_fb.c
    F:    include/linux/hyperv.h
    F:    tools/hv/

Der aktive Kernel des virtuellen Computers muss die folgenden Patches enthalten. Diese Liste kann nicht alle Distributionen vollständig abdecken.

Azure Linux-Agents

Der Azure-Linux-Agent (waagent) stellt einen virtuellen Linux-Computer in Azure bereit. Im GitHub-Repository für Linux-Agents können Sie die neueste Version abrufen, Probleme melden oder Pull Requests senden.

Nachfolgend finden Sie einige Überlegungen zur Verwendung des Azure Linux-Agenten:

  • Der Linux-Agent wird unter der Apache 2.0-Lizenz veröffentlicht. Viele Distributionen stellen bereits RPM- oder DEB-Pakete für den Agent bereit. Sie können diese Pakete ganz einfach installieren und aktualisieren.
  • Für den Azure Linux-Agent ist Python v2.6+ erforderlich.
  • Für den Agent ist zudem das Modul python-pyasn1 erforderlich. Die meisten Distributionen stellen dieses Modul als separates Paket für die Installation bereit.
  • In einigen Fällen ist der Azure-Linux-Agent möglicherweise nicht mit NetworkManager kompatibel. Viele der von Distributionen bereitgestellten Pakete (.rpm oder .deb) konfigurieren NetworkManager – dies führt zu einem Konflikt mit dem waagent-Paket. In diesen Fällen deinstalliert der Agent NetworkManager, wenn Sie das Linux-Agent-Paket installieren.
  • Der Azure-Linux-Agent muss mindestens die unterstützte Mindestversion aufweisen.

Hinweis

Stellen Sie sicher, dass die Module udf und vfat aktiviert sind. Das Deaktivieren des udf-Moduls führt zu einem Bereitstellungsfehler. Das Deaktivieren des vfat-Moduls führt sowohl zu einem Bereitstellungs- als auch zu einem Startfehler. Cloud-init-Version 21.2 oder höher kann VMs bereitstellen, ohne dass UDF erforderlich ist, wenn beide Bedingungen vorhanden sind:

  • Sie haben den virtuellen Computer mithilfe von öffentlichen SSH-Schlüsseln und nicht mit Kennwörtern erstellt.
  • Sie haben keine benutzerdefinierten Daten bereitgestellt.

Allgemeine Linux-Systemanforderungen

  1. Ändern Sie die Zeile für den Kernelstart in GRUB oder GRUB2 so, dass die folgenden Parameter eingeschlossen werden. Auf diese Weise werden alle Konsolennachrichten an den ersten seriellen Port gesendet. Diese Nachrichten helfen dem Azure-Supportteam beim Debuggen von Problemen.

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Wir empfehlen zudem, die folgenden Parameter zu entfernen, sofern sie vorhanden sind:

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen, aber dieser Parameter reduziert den verfügbaren Arbeitsspeicher auf dem virtuellen Computer um mindestens 128 MB. Das Verringern des verfügbaren Arbeitsspeichers kann für kleinere VM-Größen problematisch sein.

  2. Nachdem Sie die Bearbeitung von /etc/default/grub abgeschlossen haben, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. Fügen Sie das Hyper-V-Modul für initramfs mithilfe von dracut hinzu:

    cd /boot
    sudo cp initramfs-<kernel-version>.img <kernel-version>.img.bak
    sudo dracut -f -v initramfs-<kernel-version>.img <kernel-version> --add-drivers "hv_vmbus hv_netvsc hv_storvsc"
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Fügen Sie das Hyper-V-Modul für initrd mithilfe von mkinitramfs hinzu:

    cd /boot
    sudo cp initrd.img-<kernel-version>  initrd.img-<kernel-version>.bak
    sudo mkinitramfs -o initrd.img-<kernel-version> <kernel-version>  --with=hv_vmbus,hv_netvsc,hv_storvsc
    sudo update-grub
    
  4. Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist in der Regel die Standardkonfiguration.

  5. Installieren des Azure Linux Agent:

    Der Azure Linux-Agent ist für das Bereitstellen eines Linux-Images auf Azure erforderlich. Viele Distributionen stellen den Agent als RPM- oder DEB-Paket bereit. Das Paket wird in der Regel als WALinuxAgent oder walinuxagent bezeichnet. Sie können den Agent zudem manuell installieren, indem die folgenden Schritte im Azure Linux Agent Guide eingehalten werden.

    Hinweis

    Stellen Sie sicher, dass die Module udf und vfat aktiviert sind. Durch das Entfernen oder Deaktivieren wird ein Bereitstellungs- oder Startfehler verursacht. Cloud-init-Version 21.2 oder höher entfernt die UDF-Anforderung.

    Installieren Sie den Azure Linux Agent, cloud-init und andere notwendige Hilfsprogramme, indem Sie einen der folgenden Befehl ausführen.

    Verwenden Sie diesen Befehl für Red Hat oder CentOS:

    sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Verwenden Sie diesen Befehl für Ubuntu/Debian:

    sudo apt install walinuxagent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Verwenden Sie diesen Befehl für SUSE:

    sudo zypper install python-azure-agent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Aktivieren Sie dann den Agent und cloud-init für alle Distributionen:

    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  6. Erstellen Sie keinen Auslagerungsbereich auf dem Betriebssystemdatenträger.

    Sie können den Azure Linux-Agent oder cloud-init verwenden, um den Auslagerungsspeicher mithilfe des lokalen Ressourcendatenträgers zu konfigurieren. Dieser Ressourcendatenträger wird nach der Bereitstellung in Azure an den virtuellen Computer angefügt. Der lokale Ressourcendatenträger ist ein temporärer Datenträger und kann geleert werden, wenn die Bereitstellung des virtuellen Computers aufgehoben wird. In den folgenden Blöcken wird gezeigt, wie diese Auslagerung konfiguriert wird.

    Wenn Sie den Azure-Linux-Agent ausgewählt haben, ändern Sie die folgenden Parameter in /etc/waagent.conf:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: Set this to your desired size.
    

    Wenn Sie cloud-init ausgewählt haben, konfigurieren Sie cloud-init zum Behandeln der Bereitstellung:

    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    

    Zum Konfigurieren von cloud-init zum Formatieren und Erstellen des Auslagerungsbereichs haben Sie zwei Optionen:

    • Übergeben Sie eine cloud-init-Konfiguration, wenn Sie eine VM über customdata erstellen. Diese Methode wird empfohlen.
    • Verwenden Sie eine cloud-init-Direktive im Image, um jedes Mal einen Auslagerungsbereich zu konfigurieren, wenn die VM erstellt wird.

    Erstellen Sie eine CFG-Datei, um den Auslagerungsbereich mit cloud-init zu konfigurieren:

    echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' | sudo tee -a /etc/systemd/system.conf
    cat << EOF | sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg
    #cloud-config
    # Generated by Azure cloud image build
    disk_setup:
      ephemeral0:
        table_type: mbr
        layout: [66, [33, 82]]
        overwrite: True
    fs_setup:
      - device: ephemeral0.1
        filesystem: ext4
      - device: ephemeral0.2
        filesystem: swap
    mounts:
      - ["ephemeral0.1", "/mnt/resource"]
      - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
    EOF
    
  7. Konfigurieren von cloud-init zum Behandeln der Bereitstellung:

    1. Konfigurieren von waagent für cloud-init:

      sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf
      sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
      sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
      

      Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, legen sie Provisioning.Agent=disabled in der /etc/waagent.conf-Konfiguration fest.

    2. Konfigurieren der Einbindungen:

      echo "Adding mounts and disk_setup to init stage"
      sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
      sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
      sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
      sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
      
      
    3. Konfigurieren Sie die Azure-Datenquelle:

      echo "Allow only Azure datasource, disable fetching network setting via IMDS"
      cat << EOF | sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg
      datasource_list: [ Azure ]
      datasource:
         Azure:
           apply_network_config: False
      EOF
      
    4. Entfernen Sie die vorhandene Auslagerungsdatei, wenn Sie eine konfiguriert haben:

      if [[ -f /mnt/resource/swapfile ]]; then
      echo "Removing swapfile" #RHEL uses a swap file by default
      swapoff /mnt/resource/swapfile
      rm /mnt/resource/swapfile -f
      fi
      
    5. Konfigurieren der cloud-init-Protokollierung:

      echo "Add console log file"
      cat << EOF | sudo tee -a /etc/cloud/cloud.cfg.d/05_logging.cfg
      
      # This tells cloud-init to redirect its stdout and stderr to
      # 'tee -a /var/log/cloud-init-output.log' so the user can see output
      # there without needing to look on the console.
      output: {all: '| tee -a /var/log/cloud-init-output.log'}
      EOF
      
  8. Führen Sie die folgenden Befehle aus, um die Bereitstellung des virtuellen Computers aufzuheben.

    Achtung

    Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung. Durch Ausführen des Befehls waagent -force -deprovision+user wird der Quellcomputer unbrauchbar. Dieser Schritt soll nur ein generalisiertes Image erstellen.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    

    In VirtualBox wird möglicherweise eine Fehlermeldung angezeigt, nachdem Sie waagent -force -deprovision ausgeführt haben, die Folgendes besagt: [Errno 5] Input/output error. Diese Fehlermeldung ist nicht kritisch, und Sie können sie ignorieren.

  9. Fahren Sie den virtuellen Computer herunter, und laden Sie die virtuelle Festplatte in Azure hoch.

Nächste Schritte

Erstellen eines virtuellen Linux-Computers auf der Grundlage eines benutzerdefinierten Datenträgers mithilfe der Azure-Befehlszeilenschnittstelle