Vorbereiten eines virtuellen Oracle Linux-Computers für Azure

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

In diesem Artikel wird davon ausgegangen, dass Sie bereits ein Oracle Linux-Betriebssystem 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 für Oracle Linux

  • Beachten Sie auch den Artikelabschnitt Allgemeine Linux-Systemanforderungen mit weiteren Tipps zur Vorbereitung von Linux für Azure.
  • Hyper-V und Azure unterstützen Oracle Linux entweder mit dem Unbreakable Enterprise Kernel (UEK) oder dem Red Hat Compatible Kernel.
  • Der UEK2 von Oracle wird in Hyper-V und Azure nicht unterstützt, da er nicht die erforderlichen Treiber enthält.
  • Das VHDX-Format wird in Azure noch 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.
  • Kernel-Unterstützung für bereitgestellte UDF-Dateisysteme ist erforderlich. Beim ersten Start in Azure wird die Bereitstellungskonfiguration über UDF-formatierte Medien, die an den Gast angefügt sind, an die Linux-VM übergeben. Der Azure-Linux-Agent muss das UDF-Dateisystem bereitstellen können, um dessen Konfiguration zu lesen und die VM bereitzustellen.
  • Beim Installieren des Linux-Systems wird empfohlen, anstelle von LVM (bei vielen Installationen oftmals voreingestellt) die Standardpartitionen zu verwenden. Diese Standardpartitionen vermeiden, dass ein LVM-Namenskonflikt mit geklonten VMs auftritt, insbesondere dann, wenn ein BS-Datenträger zu Fehlerbehebungszwecken mit einer anderen VM verbunden wird. LVM oder RAID können wahlweise auf Datenträgern verwendet werden.
  • 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 Distributionen, die den Red Hat 2.6.32-Upstream-Kernel verwenden, und wurde in Oracle Linux 6.6 und höher behoben.
  • 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.
  • Stellen Sie sicher, dass das Addons -Repository aktiviert ist. Bearbeiten Sie die Datei /etc/yum.repos.d/public-yum-ol6.repo (Oracle Linux 6) oder /etc/yum.repos.d/public-yum-ol7.repo (Oracle Linux 7), und ändern Sie in dieser Datei unter [ol6_addons] oder [ol7_addons] die Zeile enabled=0 in enabled=1.

Oracle Linux 6.x

Wichtig

Beachten Sie, dass Oracle Linux 6.x bereits EOL ist. Oracle Linux-Version 6.10 weist verfügbaren ELS-Support auf, der im Juli 2024 endet.

Sie müssen die spezifischen Konfigurationsschritte im Betriebssystem für den virtuellen Computer abschließen, welcher unter Azure ausgeführt werden soll.

  1. Wählen Sie den virtuellen Computer im mittleren Fensterbereich des Hyper-V-Managers.

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

  3. Deinstallieren Sie den NetworkManager, indem Sie den folgenden Befehl ausführen:

    sudo rpm -e --nodeps NetworkManager
    

    Hinweis

    Wenn das Paket noch nicht installiert ist, schlägt dieser Befehl mit einer Fehlermeldung fehl. Diese Meldungen werden erwartet.

  4. Erstellen Sie im Verzeichnis /etc/sysconfig/ eine Datei mit dem Namen network und folgendem Text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Erstellen Sie im Verzeichnis /etc/sysconfig/network-scripts/ eine Datei mit dem Namenifcfg-eth0 und folgendem Text:

    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. Installieren Sie python-pyasn1, indem Sie den folgenden Befehl ausführen:

    sudo yum install python-pyasn1
    
  9. Ändern Sie die Bootzeile des Kernels in Ihrer Grub-Konfiguration, um weitere Kernel-Parameter für Azure einzubinden. Öffnen Sie dafür „/boot/grub/menu.lst“ in einem Text-Editor. Stellen Sie sicher, dass der Kernel die folgenden Parameter enthält:

    console=ttyS0 earlyprintk=ttyS0
    

    Durch diese Einstellung wird sichergestellt, dass alle Konsolennachrichten an den ersten seriellen Port gesendet werden. Dies kann den Azure-Support beim Debuggen 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 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 VM-Größen problematisch sein kann.

  10. 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.

  11. Installieren Sie den Azure Linux-Agent, indem Sie den folgenden Befehl ausführen: Die neueste Version ist 2.0.15.

    sudo yum install WALinuxAgent
    

    Durch eine Installation des WALinuxAgent-Pakets werden die NetworkManager- und NetworkManager-gnome-Pakete entfernt, sofern sie nicht bereits (wie in Schritt 2 beschrieben) entfernt wurden.

  12. 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. Modifizieren Sie nach dem Installieren des Azure Linux Agent (siehe vorheriger Schritt) die folgenden Parameter in /etc/waagent.conf entsprechend:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: set this to whatever you need it to be.
    
  13. 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
    sudo export HISTSIZE=0
    sudo logout
    
  14. Klicken Sie im Hyper-V-Manager auf Aktion -> Herunterfahren. Ihre Linux-VHD kann nun in Azure hochgeladen werden.


Oracle Linux 7.0 und höher

Änderungen in Oracle Linux 7

Die Vorbereitung eines virtuellen Oracle Linux 7-Computers für Azure entspricht in etwa der Vorbereitung für Oracle Linux 6. Es gibt jedoch einige wichtige Unterschiede, die beachtet werden sollten:

  • Azure unterstützt Oracle Linux entweder mit dem Unbreakable Enterprise Kernel Release (UEK) oder dem Red Hat Compatible Kernel. Oracle Linux mit UEK wird empfohlen.
  • 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.

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 Sie im Verzeichnis /etc/sysconfig/ eine Datei mit dem Namen network und folgendem Text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Erstellen Sie im Verzeichnis /etc/sysconfig/network-scripts/ eine Datei mit dem Namenifcfg-eth0 und folgendem Text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=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. Stellen Sie sicher, dass der Netzwerkdienst zum Bootzeitpunkt gestartet wird, indem Sie den folgenden Befehl ausführen:

    sudo chkconfig network on
    
  7. Installieren Sie das Paket python-pyasn1, indem Sie den folgenden Befehl ausführen:

    sudo yum install python3-pyasn1
    
  8. Führen Sie den folgenden Befehl aus, um die aktuellen yum-Metadaten zu löschen und um Updates zu installieren.

    sudo yum clean all
    sudo yum -y update
    
  9. Ändern Sie die Bootzeile des Kernels in Ihrer Grub-Konfiguration, um weitere 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="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 Benennungskonventionen für NICs in Oracle Linux 7 mit dem Unbreakable Enterprise Kernel deaktiviert. Neben den oben erwähnten Punkten wird es 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 VM-Größen problematisch sein kann.

  10. 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
    
  11. 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.

  12. Installieren Sie den Azure Linux-Agent und die Abhängigkeiten:

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

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. Konfigurieren von waagent für cloud-init

    sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
    sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=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
    
    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/resource/swapfile ]]; then
    echo Removing swapfile - Oracle Linux 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
    
  15. 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 wird. Dies wird jetzt jedoch von cloud-init verarbeitet. Der Linux-Agent darf nicht zum Formatieren des Ressourcendatenträgers und Erstellen der Auslagerungsdatei verwendet werden. Ä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:
    echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    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/resource"]
      - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
    EOF
    
  16. Führen Sie die folgenden Befehle aus, um den virtuellen Computer zurückzusetzen und ihn für die Bereitstellung in Azure vorzubereiten:

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

    Hinweis

    Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung.

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

Nächste Schritte

Nun können Sie mit Ihrer Oracle Linux-VHD-Datei neue virtuelle 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.