Freigeben über


Vorbereiten eines CentOS-basierten virtuellen Computers für Azure

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem End-of-Life-Status (EOL) nähert. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS-Leitfaden für das Lebensende.

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

Erfahren Sie, wie Sie eine virtuelle Azure-Festplatte (Virtual Hard Disk, VHD) erstellen und hochladen, die ein CentOS-basiertes Linux-Betriebssystem enthält.

Voraussetzungen

In diesem Artikel wird davon ausgegangen, dass Sie bereits ein CentOS-Linux-Betriebssystem (oder eine ähnliche Ableitung) auf einer virtuellen Festplatte installiert haben. Sie können VHD-Dateien mit unterschiedlichen Tools erstellen, beispielsweise mit einer Virtualisierungslösung wie Hyper-V. Anweisungen hierzu finden Sie unter Installieren der Hyper-V-Rolle und Konfigurieren eines virtuellen Computers.

Installationshinweise zu CentOS

  • Weitere Tipps zur Vorbereitung von Linux für Azure finden Sie unter Allgemeine Installationshinweise für Linux.
  • Das VHDX-Format wird in Azure nicht unterstützt, dafür jedoch virtuelle Festplatten mit fester Größe. Sie können den Datenträger mit dem Hyper-V-Manager oder dem convert-vhd-Cmdlet in das VHD-Format konvertieren. Wenn Sie VirtualBox verwenden, bedeutet dies, dass Sie Feste Größe auswählen und nicht die Standardeinstellung, die dynamisch beim Erstellen des Datenträgers zugewiesen wird.
  • Das vfat-Kernelmodul muss im Kernel aktiviert sein.
  • Beim Installieren des Linux-Systems wird empfohlen, anstelle von LVM (bei vielen Installationen oftmals voreingestellt) die Standardpartitionen zu verwenden. Dadurch lässt sich vermeiden, dass ein LVM-Namenskonflikt mit geklonten VMs auftritt, insbesondere dann, wenn ein BS-Datenträger zu Fehlerbehebungszwecken mit einer anderen identischen VM verbunden wird. LVM oder RAID können auf Datenträgern verwendet werden.
  • Zum Einbinden von UDF-Dateisystemen ist Kernelunterstützung erforderlich. Beim ersten Start in Azure wird die Bereitstellungskonfiguration mithilfe von UDF-formatierten 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 den virtuellen Computer bereitzustellen.
  • Linux-Kernelversionen unter 2.6.37 unterstützen keinen NUMA in Hyper-V mit größeren VM-Größen. Dieses Problem betrifft in erster Linie ältere Verteilungen, die den vorgeschalteten Centos 2.6.32-Kernel verwenden, und wurde in Centos 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.
  • Alle VHDs in Azure benötigen eine virtuelle Größe, die auf 1 MB ausgerichtet ist. 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. Weitere Informationen finden Sie in den Linux-Installationshinweisen.

Hinweis

cloud-init >= 21.2 setzt die UDF-Anforderung außer Kraft. Ohne aktiviertes UDF-Modul wird das CD-ROM-Laufwerk während der Bereitstellung jedoch nicht eingebunden, sodass von dort keine benutzerdefinierten Daten angewandt werden können. Eine Problemumgehung hierfür besteht darin, benutzerdefinierte Daten mithilfe von Benutzerdaten anzuwenden. Im Gegensatz zu benutzerdefinierten Daten werden Benutzerdaten jedoch nicht verschlüsselt. https://cloudinit.readthedocs.io/en/latest/topics/format.html

CentOS 6.x

Wichtig

Beachten Sie, dass CentOS 6 das Ende seiner Lebensdauer (End Of Life, EOL) erreicht hat und nicht mehr von der CentOS-Community unterstützt wird. Dies bedeutet, dass für diese Version keine weiteren Updates oder Sicherheitspatches veröffentlicht werden, sodass sie anfällig für potenzielle Sicherheitsrisiken wird. Es wird dringend empfohlen, ein Upgrade auf eine neuere Version von CentOS durchzuführen, um die Sicherheit und Stabilität Ihres Systems zu gewährleisten. Wenden Sie sich an Ihre IT-Abteilung oder Ihren Systemadministrator, um weitere Unterstützung zu erhalten.

  1. Wählen Sie im Hyper-V-Manager den virtuellen Computer aus.

  2. Klicken Sie auf Verbinden , um ein Konsolenfenster für den virtuellen Computer zu öffnen.

  3. In CentOS 6 kann NetworkManager zu Einschränkungen beim Azure Linux-Agent führen. Deinstallieren Sie dieses Paket, indem Sie den folgenden Befehl ausführen:

    sudo rpm -e --nodeps NetworkManager
    
  4. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network, und fügen Sie ihr den folgenden Text hinzu:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Ändern Sie die udev-Regeln, um eine Generierung statischer Regeln für die Ethernet-Schnittstelle(n) zu vermeiden. Diese Regeln können beim Klonen eines virtuellen Computers unter Microsoft Azure oder Hyper-V zu Problemen führen:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    
  7. Stellen Sie sicher, dass der Netzwerkdienst zum Bootzeitpunkt gestartet wird, indem Sie den folgenden Befehl ausführen:

    sudo chkconfig network on
    
  8. Wenn Sie die in Azure-Rechenzentren gehosteten OpenLogic-Datenspiegel verwenden möchten, ersetzen Sie die Datei /etc/yum.repos.d/CentOS-Base.repo durch die folgenden Repositorys. Dadurch wird auch das Repository [openlogic] hinzugefügt, das zusätzliche Pakete wie den Azure Linux-Agent enthält:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    

    Hinweis

    Im Rest dieses Leitfadens wird davon ausgegangen, dass Sie mindestens das Repository [openlogic] verwenden, das im Folgenden zum Installieren des Azure Linux-Agents verwendet wird.

  9. Fügen Sie die folgende Zeile zu "/etc/yum.conf" hinzu:

    http_caching=packages
    
  10. Führen Sie den folgenden Befehl aus, um die aktuellen yum-Metadaten zu löschen und das System durch Installation der neuesten Pakete zu aktualisieren:

    sudo yum clean all
    

    Sofern Sie kein Image für eine ältere CentOS-Version erstellen, wird empfohlen, alle Pakete auf die neueste Version zu aktualisieren:

    sudo yum -y update
    

    Nach dem Ausführen dieses Befehls ist unter Umständen ein Neustart erforderlich.

  11. (Optional) Installieren Sie die Treiber für die Linux-Integrationsdienste (LIS).

    Wichtig

    Dieser Schritt ist für CentOS 6.3 und früher erforderlich, für spätere Versionen ist er optional.

    sudo rpm -e hypervkvpd  ## (may return error if not installed, that's OK)
    sudo yum install microsoft-hyper-v
    

    Alternativ können Sie auch die Anweisungen für die manuelle Installation auf der Downloadseite von LIS ausführen, um das RPM auf Ihrem virtuellen Computer zu installieren.

  12. Installieren Sie den Azure Linux-Agent und die Abhängigkeiten. waagent-Dienst starten und aktivieren:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo service waagent start
    sudo chkconfig waagent on
    

    Das WALinuxAgent-Paket entfernt die NetworkManager- und NetworkManager-gnome-Pakete, sofern sie nicht bereits wie in Schritt 3 beschrieben entfernt wurden.

  13. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer Grub-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie dazu /boot/grub/menu.lst in einem Text-Editor, und stellen Sie sicher, dass der Standardkernel die folgenden Parameter enthält:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Dadurch wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dieser kann Azure bei der Behebung von Fehlern unterstützen.

    Neben den oben erwähnten Punkten wird empfohlen, die folgenden Parameter zu entfernen:

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch quiet boot sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Die Option crashkernel kann bei Bedarf konfiguriert bleiben. Beachten Sie jedoch, dass dieser Parameter die Menge an verfügbarem Arbeitsspeicher in der VM um 128 MB oder mehr reduziert, was bei kleineren VMs problematisch sein kann.

    Wichtig

    CentOS 6.5 und früher muss auch den Kernelparameter numa=off festlegen. Siehe dazu Red Hat KB 436883.

  14. Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist für gewöhnlich die Standardeinstellung.

  15. Erstellen Sie keinen Auslagerungsbereich auf dem Betriebssystemdatenträger.

    Der Azure Linux Agent kann SWAP-Raum automatisch mit dem lokalen Ressourcendatenträger konfigurieren, der nach der Bereitstellung in Azure mit dem virtuellen Computer verknüpft ist. Der lokale Ressourcendatenträger ist ein temporärer Datenträger und kann geleert werden, wenn die Bereitstellung des virtuellen Computers aufgehoben wird. Passen Sie nach dem Installieren des Azure Linux-Agents (siehe vorheriger Schritt) die folgenden Parameter in /etc/waagent.conf an:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
    
  16. Führen Sie die folgenden Befehle aus, um den virtuellen Computer zurückzusetzen und ihn für die Bereitstellung in Azure vorzubereiten:

    sudo waagent -force -deprovision+user
    sudo export HISTSIZE=0
    

Hinweis

Wenn Sie einen bestimmten virtuellen Computer migrieren, anstatt ein generalisiertes Image zu erstellen, überspringen Sie den Schritt zum Aufheben der Bereitstellung.

  1. Klicken Sie im Hyper-V-Manager auf Aktion -> Herunterfahren. Ihre virtuelle Linux-Festplatte kann nun in Azure hochgeladen werden.

CentOS 7.0+

Änderungen in CentOS 7 (und ähnlichen Ableitungen)

Die Vorbereitung einer CentOS 7-VM für Azure entspricht in etwa der Vorbereitung für CentOS 6. Es gibt jedoch einige signifikante Unterschiede, die beachtet werden sollten:

  • Das NetworkManager-Paket führt nicht mehr zu Konflikten mit dem Azure Linux Agent. Dieses Paket wird standardmäßig installiert, und Sie sollten es nicht entfernen.

  • GRUB2 wird nun als standardmäßiger Bootloader verwendet. Daher hat sich die Prozedur für das Bearbeiten der Kernelparameter geändert (siehe unten).

  • XFS ist nun das Standarddateisystem. Das EXT4-Dateisystem kann bei Bedarf weiterhin verwendet werden.

  • Da CentOS 8 Stream und neuere Versionen network.service nicht mehr standardmäßig enthalten, muss eine manuelle Installation erfolgen:

    sudo yum install network-scripts
    sudo systemctl enable network.service
    

Konfigurationsschritte

  1. Wählen Sie im Hyper-V-Manager den virtuellen Computer aus.

  2. Klicken Sie auf Verbinden , um ein Konsolenfenster für den virtuellen Computer zu öffnen.

  3. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network, und fügen Sie ihr den folgenden Text hinzu:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Ändern Sie die udev-Regeln, um eine Generierung statischer Regeln für die Ethernet-Schnittstelle(n) zu vermeiden. Diese Regeln können beim Klonen eines virtuellen Computers unter Microsoft Azure oder Hyper-V zu Problemen führen:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Wenn Sie die in Azure-Rechenzentren gehosteten OpenLogic-Datenspiegel verwenden möchten, ersetzen Sie die Datei /etc/yum.repos.d/CentOS-Base.repo durch die folgenden Repositorys. Dadurch wird auch das Repository [openlogic] hinzugefügt, das Pakete für den Azure Linux-Agent enthält:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    

    Hinweis

    Im Rest dieses Leitfadens wird davon ausgegangen, dass Sie mindestens das Repository [openlogic] verwenden, das im Folgenden zum Installieren des Azure Linux-Agents verwendet wird.

  7. Führen Sie den folgenden Befehl aus, um die aktuellen yum-Metadaten zu löschen und um Updates zu installieren.

    sudo yum clean all
    

    Sofern Sie kein Image für eine ältere CentOS-Version erstellen, wird empfohlen, alle Pakete auf die neueste Version zu aktualisieren:

    sudo yum -y update
    

    Nach dem Ausführen dieses Befehls ist unter Umständen ein Neustart erforderlich.

  8. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer Grub-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie dazu /etc/default/grub in einem Text-Editor, und bearbeiten Sie den Parameter GRUB_CMDLINE_LINUX. Beispiel:

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

    Dadurch wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dieser kann Azure bei der Behebung von Fehlern unterstützen. Außerdem werden die neuen CentOS 7-Benennungskonventionen für Netzwerkkarten deaktiviert. Neben den oben erwähnten Punkten wird empfohlen, die folgenden Parameter zu entfernen:

    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. Die Option crashkernel kann bei Bedarf konfiguriert bleiben. Beachten Sie jedoch, dass dieser Parameter die Menge an verfügbarem Arbeitsspeicher in der VM um 128 MB oder mehr reduziert, was bei kleineren VMs problematisch sein kann.

  9. Sobald Sie die oben beschriebene 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
    

Hinweis

Beim Hochladen einer UEFI-fähigen VM lautet der Befehl zum Upgraden von GRUB grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. Außerdem muss das vfat-Kernelmodul im Kernel aktiviert sein, da andernfalls ein Fehler bei der Bereitstellung auftritt.

Stellen Sie sicher, dass das udf-Modul aktiviert ist. Durch das Entfernen oder Deaktivieren wird ein Bereitstellungs- bzw. Startfehler verursacht. (_Cloud-init >= 21.2 setzt die UDF-Anforderung außer Kraft. Ausführlichere Informationen finden Sie am Anfang dieses Dokuments.)

  1. Wenn Sie das Image aus VMware, VirtualBox oder KVM erstellen: Stellen Sie sicher, dass die Hyper-V-Treiber in „initramfs“ enthalten sind:

    Bearbeiten Sie /etc/dracut.confund fügen Sie Inhalt hinzu:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Erstellen Sie initramfs neu:

    sudo dracut -f -v
    
  2. Installieren Sie den Azure Linux-Agent und die Abhängigkeiten für Azure-VM-Erweiterungen:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  3. Installieren von cloud-init zum Behandeln der Bereitstellung

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    1. Konfigurieren von waagent für cloud-init
    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/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
    
    sudo 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
    
    sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    if [[ -f /mnt/swapfile ]]; then
    echo Removing swapfile - RHEL uses a swapfile by default
    swapoff /mnt/swapfile
    rm /mnt/swapfile -f
    fi
    
    echo "Add console log file"
    cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # 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
    
  4. Auslagerungskonfiguration

    Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.

    Früher wurde der Azure Linux-Agent zum automatischen Konfigurieren des Auslagerungsbereichs mit dem lokalen Ressourcendatenträger verwendet, der nach der Bereitstellung der VM in Azure an die VM angefügt ist. Dies wird jetzt jedoch von cloud-init behandelt. Sie dürfen nicht den Linux-Agent zum Erstellen des Ressourcendatenträgers verwenden. Erstellen Sie die Auslagerungsdatei, und ändern Sie die folgenden Parameter in /etc/waagent.conf entsprechend:

    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
    

    Beim Einbinden, Formatieren und Erstellen einer Auslagerung können Sie eine der folgenden Aktionen ausführen:

    • Übergeben Sie dies bei jedem Erstellen einer VM als cloud-init-Konfiguration.

    • Verwenden Sie eine im Image integrierte cloud-init-Anweisung, die dies bei jeder Erstellung der VM durchführt:

      sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
      sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
      #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"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  5. Führen Sie die folgenden Befehle aus, um den virtuellen Computer zurückzusetzen und ihn für die Bereitstellung in Azure vorzubereiten:

    Hinweis

    Wenn Sie einen bestimmten virtuellen Computer migrieren, anstatt ein generalisiertes Image zu erstellen, überspringen Sie den Schritt zum Aufheben der Bereitstellung.

    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
    
  6. Klicken Sie im Hyper-V-Manager auf Aktion -> Herunterfahren. Ihre Linux-VHD kann nun in Azure hochgeladen werden.

Nächste Schritte

Sie können jetzt mit Ihrer CentOS-Linux-VHD-Datei neue virtuelle Azure-Computer in Azure erstellen. Wenn Sie zum ersten Mal die VHD-Datei in Azure hochladen, lesen Sie den Artikel Erstellen eines virtuellen Linux-Computers aus einem benutzerdefinierten Datenträger mithilfe der Azure CLI 2.0.