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 Zeileenabled=0
inenabled=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.
Wählen Sie die VM im mittleren Fensterbereich des Hyper-V-Managers.
Wählen Sie Verbinden aus, um das Fenster für die VM zu öffnen.
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.
Erstellen Sie im Verzeichnis
/etc/sysconfig/
eine Datei mit dem Namen network und folgendem Text:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Ä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
Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:
sudo chkconfig network on
Installieren Sie
python-pyasn1
:sudo yum install python-pyasn1
Ä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.Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist normalerweise die Standardeinstellung.
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 PaketeNetworkManager
undNetworkManager-gnome
entfernt, sofern sie noch nicht wie in Schritt 2 beschrieben entfernt wurden.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.
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
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
Wählen Sie im Hyper-V-Manager den virtuellen Computer aus.
Wählen Sie Verbinden aus, um ein Konsolenfenster für den virtuellen Computer zu öffnen.
Erstellen Sie im Verzeichnis
/etc/sysconfig/
eine Datei mit dem Namen network und folgendem Text:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Ä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
Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:
sudo chkconfig network on
Installieren Sie das Paket
python-pyasn1
:sudo yum install python3-pyasn1
Löschen Sie die aktuellen yum-Metadaten, und installieren Sie Updates:
sudo yum clean all sudo yum -y update
Ä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 ParameterGRUB_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.Nachdem Sie die Bearbeitung von
/etc/default/grub
abgeschlossen haben, erstellen Sie die GRUB-Konfiguration neu:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist normalerweise die Standardeinstellung.
Installieren Sie den Azure Linux-Agent und die Abhängigkeiten.
sudo yum install WALinuxAgent sudo systemctl enable waagent
Installieren Sie
cloud-init
für die Verarbeitung der Bereitstellung:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
Konfigurieren von
waagent
fürcloud-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
Auslagerungskonfiguration:
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
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
- Übergeben Sie diesen Code jedes Mal als
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.
Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus. Ihre Linux-VHD kann nun in Azure hochgeladen werden.
Zugehöriger Inhalt
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.