Teilen über


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 (VHD) installiert haben. Zum Erstellen von VHD-Dateien stehen mehrere verschiedene Tools bereit. Ein Beispiel ist eine Virtualisierungslösung wie Hyper-V. Anweisungen hierzu finden Sie unter Installieren der Hyper-V-Rolle und Konfigurieren eines virtuellen Computers (VM).

Installationshinweise für Oracle Linux

  • Weitere Tipps zur Vorbereitung von Linux für Azure finden Sie unter Allgemeine Installationshinweise für Linux.
  • 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, weil er nicht die erforderlichen Treiber enthält.
  • 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.
  • Für die Bereitstellung von UDF-Dateisystemen (User-Defined Functions, benutzerdefinierte Funktionen) ist Kernelunterstützung 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 (Logical Volume Manager, logische Volumeverwaltung) – 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 ebenfalls 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 vorgeschalteten Red Hat 2.6.32-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). Ändern Sie in dieser Datei unter [ol6_addons] bzw. [ol7_addons] die Zeile enabled=0 in enabled=1.

Oracle Linux 6.x

Wichtig

Denken Sie daran, dass Oracle Linux 6.x bereits das Dienstende erreicht hat. Für Oracle Linux Version 6.10 ist Erweiterter Lebenszyklus-Support verfügbar, der im Juli 2024 endet.

Sie müssen bestimmte Konfigurationsschritte im Betriebssystem ausführen, damit die VM in Azure ausgeführt werden kann.

  1. Wählen Sie die VM im mittleren Fensterbereich des Hyper-V-Managers.

  2. Wählen Sie Verbinden aus, um das Fenster für die VM zu öffnen.

  3. Deinstallieren Sie NetworkManager:

    sudo rpm -e --nodeps NetworkManager
    

    Hinweis

    Wenn das Paket noch nicht installiert ist, schlägt dieser Befehl mit einer Fehlermeldung fehl. Diese Nachricht ist 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-Schnittstellen zu vermeiden. Diese Regeln können beim Klonen einer VM unter 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 zur Startzeit gestartet wird:

    sudo chkconfig network on
    
  8. Installieren Sie python-pyasn1:

    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 für diesen Schritt /boot/grub/menu.lst in einem Text-Editor, und 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 für den Azure-Support beim Debuggen von Fehlern hilfreich sein.

    Neben den oben beschriebenen Schritten 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.

    Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Dieser Parameter reduziert den verfügbaren Arbeitsspeicher des virtuellen Computers um mindestens 128 MB. Dies kann bei kleineren virtuellen Computern Probleme verursachen.

  10. Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist normalerweise 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 die Installation des WALinuxAgent-Pakets werden die Pakete NetworkManager und NetworkManager-gnome entfernt, sofern sie noch nicht 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. Passen Sie nach dem Installieren des Azure Linux-Agents (siehe vorheriger Schritt) die folgenden Parameter in /etc/waagent.conf entsprechend an:

    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. Stellen Sie den virtuellen Computer bereit, und bereiten Sie ihn für die Bereitstellung in Azure vor:

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus. Ihre Linux-VHD kann nun in Azure hochgeladen werden.


Oracle Linux 7.0 und höher

Führen Sie die Schritte in den nächsten Abschnitten aus, wenn Sie Oracle Linux  7.0 oder höher verwenden.

Änderungen in Oracle Linux 7

Die Vorbereitung einer Oracle Linux 7-VM für Azure ist ähnlich wie bei Oracle Linux 6, doch einige Unterschiede sind erwähnenswert:

  • Azure unterstützt Oracle Linux entweder mit dem Unbreakable Enterprise Kernel Release (UEK) oder dem Red Hat Compatible Kernel. Es wird empfohlen, Oracle Linux mit UEK zu verwenden.
  • 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 Abschnitt „Konfigurationsschritte“)
  • 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. Wählen Sie Verbinden aus, 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-Schnittstellen zu vermeiden. Diese Regeln können beim Klonen einer VM unter 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 zur Startzeit gestartet wird:

    sudo chkconfig network on
    
  7. Installieren Sie das Paket python-pyasn1:

    sudo yum install python3-pyasn1
    
  8. Löschen Sie die aktuellen yum-Metadaten, und installieren Sie Updates:

    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 für diesen Schritt /etc/default/grub in einem Text-Editor, und bearbeiten Sie den Parameter GRUB_CMDLINE_LINUX. Zum Beispiel:

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

    Durch diese Änderung wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dies kann den Azure-Support beim Debuggen von Fehlern unterstützen. Außerdem werden die Benennungskonventionen für Netzwerkadapter in Oracle Linux 7 mit dem UEK deaktiviert. Es wird auch 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.

    Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Dieser Parameter reduziert den verfügbaren Arbeitsspeicher des virtuellen Computers um mindestens 128 MB. Dies kann bei kleineren virtuellen Computern Probleme verursachen.

  10. Nachdem Sie die Bearbeitung von /etc/default/grub abgeschlossen haben, erstellen Sie die GRUB-Konfiguration neu:

    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 normalerweise die Standardeinstellung.

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

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent
    
  13. Installieren Sie cloud-init für die Verarbeitung 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:

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

      Zuvor wurde der Azure Linux-Agent automatisch verwendet, um Auslagerungsbereiche mithilfe des lokalen Ressourcendatenträgers zu konfigurieren, der an die VM angefügt ist, nachdem die VM in Azure bereitgestellt wurde. Dieser Schritt wird nun jedoch von cloud-init behandelt. Sie dürfen den Linux-Agent nicht zum Formatieren des Ressourcendatenträgers verwenden, um die Auslagerungsdatei zu erstellen. Ä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
      
    2. Wenn Sie den Tausch bereitstellen, formatieren und erstellen möchten, können Sie eine der folgenden Aktionen ausführen:

      • Übergeben Sie diesen Code jedes Mal als cloud-init-Konfiguration, wenn Sie eine VM erstellen.
      • Verwenden Sie eine in das Image eingebundene cloud-init-Direktive, die diesen Schritt jedes Mal ausführt, wenn die VM erstellt wird.
      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. Stellen Sie den virtuellen Computer bereit, und bereiten Sie ihn für die Bereitstellung in Azure vor:

    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. Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus. Ihre Linux-VHD kann nun in Azure hochgeladen werden.

Sie können jetzt Ihre Oracle Linux-VHD verwenden, um neue VMs in Azure zu 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.