Vorbereiten eines auf Red Hat basierenden virtuellen Computers für Azure
Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen ✔️ Einheitliche Skalierungsgruppen
In diesem Artikel erfahren Sie, wie Sie einen auf Red Hat Enterprise Linux (RHEL) basierenden virtuellen Computer (VM) für die Verwendung in Azure vorbereiten. In diesem Artikel werden die RHEL-Versionen 6.x, 7.x und 8.x behandelt. Die Hypervisoren für die Vorbereitung, die in diesem Artikel behandelt werden, sind Hyper-V, kernelbasierte VM (KVM) und VMware.
Weitere Informationen zu den Berechtigungsvoraussetzungen für die Teilnahme am Cloud Access-Programm von Red Hat finden Sie auf der Red Hat Cloud Access-Website und unter Ausführen von RHEL in Azure. Weitere Informationen zu den Möglichkeiten zum Automatisieren der Erstellung von RHEL-Images finden Sie unter Azure Image Builder.
Hinweis
Achten Sie auf Versionen, die das Ende der Lebensdauer (End of Life, EOL) erreicht haben und von Red Hat nicht mehr unterstützt werden. Hochgeladene Images, die das EOL-Datum erreicht oder überschritten haben, werden mit einem angemessenen geschäftlichen Aufwand unterstützt. Weitere Informationen finden Sie unter Red Hat Product Life Cycles.
Hyper-V-Manager
In diesem Abschnitt erfahren Sie, wie Sie eine RHEL 6-, RHEL 7- oder RHEL 8-VM mithilfe von Hyper-V-Manager vorbereiten.
Voraussetzungen
In diesem Abschnitt wird davon ausgegangen, dass Sie bereits eine ISO-Datei von der Red Hat-Website beschafft und das RHEL-Image auf einer virtuellen Festplatte (VHD) installiert haben. Weitere Informationen zum Installieren eines Betriebssystemimages mit dem Hyper-V-Manager finden Sie unter Installieren der Hyper-V-Rolle und Konfigurieren einer VM.
Installationshinweise zu RHEL
- Das VHDX-Format wird von Azure nicht unterstützt. Azure unterstützt nur feste virtuelle Festplatten. Sie können Hyper-V Manager verwenden, um den Datenträger in das VHD-Format zu konvertieren, oder Sie können das Cmdlet
convert-vhd
verwenden. Wählen Sie bei Verwendung von VirtualBox die Option Feste Größe und nicht die standardmäßig dynamisch zugeordnete Option, wenn Sie den Datenträger erstellen. - Azure unterstützt virtuelle Computer der Gen1 (BIOS-Start) und Gen2 (UEFI-Start).
- Die maximal zulässige Größe für die virtuelle Festplatte beträgt 1.023 GB.
- Das vfat-Kernelmodul muss im Kernel aktiviert sein.
- Logical Volume Manager (LVM) wird unterstützt und kann auf dem Betriebssystemdatenträger oder den Datenträgern mit Daten auf virtuellen Azure-Computern verwendet werden. Im Allgemeinen wird empfohlen, dass Sie anstelle von LVM Standardpartitionen auf dem Betriebssystemdatenträger verwenden. So werden LVM-Namenskonflikte mit geklonten virtuellen Computern vermieden. Dies gilt insbesondere dann, wenn Sie einen Betriebssystemdatenträger zur Problembehandlung an einen anderen identischen virtuellen Computer anfügen müssen. Weitere Informationen finden Sie in der LVM- und RAID-Dokumentation.
- Kernelunterstützung für die Bereitstellung von UDF-Dateisystemen (Universal Disk Format) ist erforderlich. Beim ersten Starten in Azure übergibt das Medium im UDF-Format, das an den Gast angefügt ist, die Bereitstellungskonfiguration an den virtuellen Linux-Computer. Der Azure-Linux-Agent muss das UDF-Dateisystem bereitstellen können, um dessen Konfiguration zu lesen und die VM bereitzustellen. Ohne diesen Schritt schlägt die Bereitstellung fehl.
- Konfigurieren Sie auf dem Betriebssystemdatenträger keine Swap-Partition. Weitere Informationen finden Sie in den folgenden Schritten.
- 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 folgenden Schritten. Siehe auch Linux-Installationshinweise.
Hinweis
Cloud-init >= 21.2 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, benutzerdefinierte Daten mithilfe von Benutzerdaten anzuwenden. Im Gegensatz zu benutzerdefinierten Daten werden Benutzerdaten jedoch nicht verschlüsselt. Weitere Informationen finden Sie unter Benutzerdatenformate.
RHEL 6 mit dem Hyper-V-Manager
Wichtig
Am 30. November 2020 erreichte RHEL 6 das Ende der Wartungsphase. Danach folgt eine Phase des erweiterten Lebenszyklus. Da RHEL 6 aus den Phasen „Vollständig/Wartung“ wechselt, empfehlen wir dringend, dass Sie ein Upgrade auf RHEL 7, 8 oder 9 durchführen. Wenn Sie auf RHEL 6 bleiben müssen, empfehlen wir, das RHEL Extended Life Cycle Support-Add-On hinzuzufügen.
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.
In RHEL 6 kann
NetworkManager
den Azure Linux-Agent beeinträchtigen. Deinstallieren Sie dieses Paket:sudo rpm -e --nodeps NetworkManager
Erstellen oder bearbeiten Sie die Datei
/etc/sysconfig/network
, und fügen Sie ihr den folgenden Text hinzu:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Verschieben (oder entfernen) Sie die udev-Regeln, um eine Generierung statischer Regeln für die Ethernet-Schnittstelle zu vermeiden. Diese Regeln können beim Klonen eines virtuellen Computers unter Azure oder Hyper-V zu Problemen führen:
Warnung
Viele V5-Versionen und neuere VM-Größen erfordern einen beschleunigten Netzwerkbetrieb. Wenn dieser nicht aktiviert ist, weist NetworkManager allen virtuellen Funktionsschnittstellen dieselbe IP-Adresse zu. Um doppelte IP-Adressen zu verhindern, müssen Sie diese udev-Regel bei der Migration zu einer neueren Größe einschließen.
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
Hinweis
Wenn Sie „Accelerated Networking“ verwenden, muss die erstellte synthetische Schnittstelle so konfiguriert werden, dass sie mithilfe einer Udev-Regel nicht verwaltet wird. Diese Aktion verhindert, dass
NetworkManager
die gleiche IP-Adresse wie die primäre Schnittstelle zuweist.Anwendung:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:
sudo chkconfig network on
Registrieren Sie Ihr Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Das WALinuxAgent-Paket
WALinuxAgent-<version>
wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
Ändern Sie die Bootzeile des Kernels in Ihrer Grub-Konfiguration, um weitere Kernel-Parameter für Azure einzubinden. Öffnen Sie
/boot/grub/menu.lst
in einem Text-Editor, um diese Änderung vorzunehmen. Stellen Sie sicher, dass der Standardkernkern die folgenden Parameter enthält:console=ttyS0 earlyprintk=ttyS0
Durch diese Aktion wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dies kann Azure bei der Behebung von Fehlern unterstützen.
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 auf dem virtuellen Computer um 128 MB oder mehr. Diese Konfiguration kann für kleinere VM-Größen ein Problem darstellen.Stellen Sie sicher, dass der SSH-Server (Secure Shell) installiert und für das Starten während des Startvorgangs konfiguriert ist. Dies ist normalerweise die Standardeinstellung. Ergänzen Sie
/etc/ssh/sshd_config
um die folgende Zeile:ClientAliveInterval 180
Installieren Sie den Azure Linux-Agent:
sudo yum install WALinuxAgent sudo chkconfig waagent on
Durch die Installation des WALinuxAgent-Pakets werden die
NetworkManager
- undNetworkManager-gnome
-Pakete entfernt, wenn sie in Schritt 3 noch nicht entfernt wurden.Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.
Der Azure Linux-Agent kann den Auslagerungsbereich automatisch mit dem lokalen Ressourcendatenträger konfigurieren, der nach der Bereitstellung des virtuellen Computers in Azure mit dem virtuellen Computer verknüpft wird. 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 im vorherigen Schritt die folgenden Parameter in
/etc/waagent.conf
entsprechend 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.
Heben Sie die Registrierung des Abonnements auf (falls erforderlich):
sudo subscription-manager unregister
Stellen Sie den virtuellen Computer bereit, und bereiten Sie ihn für die Bereitstellung in Azure vor:
Hinweis
Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung.
sudo waagent -force -deprovision sudo export HISTSIZE=0
Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus. Ihre Linux-VHD kann nun in Azure hochgeladen werden.
RHEL 7 mit dem Hyper-V-Manager
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 oder bearbeiten Sie die Datei
/etc/sysconfig/network
, und fügen Sie ihr den folgenden Text hinzu:NETWORKING=yes HOSTNAME=localhost.localdomain
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 PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Hinweis
Wenn Sie „Accelerated Networking“ verwenden, muss die erstellte synthetische Schnittstelle so konfiguriert werden, dass sie mithilfe einer Udev-Regel nicht verwaltet wird. Diese Aktion verhindert, dass
NetworkManager
die gleiche IP-Adresse wie die primäre Schnittstelle zuweist.Anwendung:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:
sudo systemctl enable network
Registrieren Sie Ihr Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Ändern Sie die Bootzeile des Kernels in Ihrer Grub-Konfiguration, um weitere Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Änderung
/etc/default/grub
in einem Text-Editor, und bearbeiten Sie denGRUB_CMDLINE_LINUX
-Parameter. Zum Beispiel:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" ENABLE_BLSCFG=true
Hinweis
Wenn ENABLE_BLSCFG=false in
/etc/default/grub
anstelle vonENABLE_BLSCFG=true
vorhanden ist, funktionieren Tools wie grubedit oder gubby, die auf der Boot Loader Specification (BLS) zum Verwalten von Starteinträgen und Konfigurationen basieren, in RHEL 8 und 9 möglicherweise nicht ordnungsgemäß. WennENABLE_BLSCFG
nicht vorhanden ist, wird das Standardverhaltenfalse
.Durch diese Modifikation wird außerdem sichergestellt, dass alle Konsolennachrichten an den ersten seriellen Anschluss gesendet werden, und die Interaktion mit der seriellen Konsole ermöglicht, was den Azure Support bei Debugproblemen unterstützen kann. Diese Konfiguration deaktiviert auch die neuen RHEL 7-Benennungskonventionen für Netzwerkschnittstellenkarten (NICs).
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, 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/redhat/grub.cfg
.Stellen Sie sicher, dass der SSH-Server installiert und so konfiguriert ist, dass er beim Booten hochfährt. Ergänzen Sie
/etc/ssh/sshd_config
um die folgende Zeile:ClientAliveInterval 180
Das WALinuxAgent-Paket
WALinuxAgent-<version>
wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Installieren Sie den Azure Linux-Agent
cloud-init
und andere erforderliche Dienstprogramme:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Konfigurieren Sie
cloud-init
für die Verarbeitung der Bereitstellung:Konfigurieren von
waagent
fürcloud-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
Hinweis
Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, legen Sie
Provisioning.Agent=disabled
für die/etc/waagent.conf
-Konfiguration fest.Konfigurieren der Einbindungen:
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
Konfigurieren Sie die Azure-Datenquelle:
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
Falls konfiguriert, entfernen Sie die vorhandene Auslagerungsdatei:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by default swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Konfigurieren Sie
cloud-init
-Protokollierung:sudo echo "Add console log file" sudo 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 verwendet, um Auslagerungsbereiche automatisch mithilfe des lokalen Ressourcendatenträgers zu konfigurieren, der an den virtuellen Computer angefügt ist, nachdem der virtuelle Computer auf Azure bereitgestellt wurde. Diese Aktion wird jetzt 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:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Wenn Sie den Tausch bereitstellen, formatieren und erstellen möchten, können Sie eine der folgenden Aktionen ausführen:
Übergeben Sie diesen Code als
cloud-init
-Konfiguration jedes Mal, wenn Sie einen virtuellen Computer mit benutzerdefinierten Daten erstellen. Diese Methode wird empfohlen.Verwenden Sie eine in das Image eingebundene
cloud-init
-Direktive, die diesen Schritt jedes Mal ausführt, wenn der virtuelle Computer erstellt wird.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/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Wenn Sie die Registrierung des Abonnements aufheben möchten, führen Sie den folgenden Befehl aus:
sudo subscription-manager unregister
Stellen Sie den virtuellen Computer bereit, und bereiten Sie ihn für die Bereitstellung in Azure vor:
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
Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus. Ihre Linux-VHD kann nun in Azure hochgeladen werden.
RHEL 8+ mit dem Hyper-V-Manager
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.
Stellen Sie sicher, dass der Netzwerk Manager-Dienst zur Startzeit gestartet wird:
sudo systemctl enable NetworkManager.service
Konfigurieren Sie die Netzwerkschnittstelle so, dass sie beim Start automatisch gestartet wird, und verwenden Sie das Dynamic Host Configuration Protocol:
sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
Hinweis
Wenn Sie „Accelerated Networking“ verwenden, muss die erstellte synthetische Schnittstelle so konfiguriert werden, dass sie mithilfe einer Udev-Regel nicht verwaltet wird. Diese Aktion verhindert, dass
NetworkManager
die gleiche IP-Adresse wie die primäre Schnittstelle zuweist.Anwendung:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Registrieren Sie Ihr Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Modifizieren Sie die Boot-Zeile des Kernels in Ihrer GRUB-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden und die serielle Konsole zu aktivieren.
Entfernen der aktuellen GRUB-Parameter:
sudo grub2-editenv - unset kernelopts
Bearbeiten Sie
/etc/default/grub
in einem Text-Editor, und fügen Sie die folgenden Parameter hinzu:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Durch diese Modifikation wird außerdem sichergestellt, dass alle Konsolennachrichten an den ersten seriellen Anschluss gesendet werden, und die Interaktion mit der seriellen Konsole ermöglicht, was den Azure Support bei Debugproblemen unterstützen kann. Außerdem werden bei dieser Konfiguration die neuen Benennungskonventionen für NICs deaktiviert.
Es wird empfohlen, auch 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, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Führen Sie für eine UEFI-fähige VM den folgenden Befehl aus:
sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Stellen Sie sicher, dass der SSH-Server installiert und so konfiguriert ist, dass er beim Booten hochfährt. Ergänzen Sie
/etc/ssh/sshd_config
um die folgende Zeile:ClientAliveInterval 180
Installieren Sie den Azure Linux-Agent
cloud-init
und andere erforderliche Dienstprogramme:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Konfigurieren Sie
cloud-init
für die Verarbeitung der Bereitstellung:Konfigurieren von
waagent
fürcloud-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
Hinweis
Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, legen Sie
Provisioning.Agent=disabled
für die/etc/waagent.conf
-Konfiguration fest.Konfigurieren der Einbindungen:
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
Konfigurieren Sie die Azure-Datenquelle:
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
Falls konfiguriert, entfernen Sie die vorhandene Auslagerungsdatei:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by defaul swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Konfigurieren Sie
cloud-init
-Protokollierung:sudo echo "Add console log file" sudo 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 verwendet, um Auslagerungsbereiche automatisch mithilfe des lokalen Ressourcendatenträgers zu konfigurieren, der an den virtuellen Computer angefügt ist, nachdem der virtuelle Computer auf Azure bereitgestellt wurde. Diese Aktion wird jetzt 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:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Übergeben Sie diesen Code als
cloud-init
-Konfiguration jedes Mal, wenn Sie einen virtuellen Computer mit benutzerdefinierten Daten erstellen. Diese Methode wird empfohlen.Verwenden Sie eine in das Image eingebundene
cloud-init
-Direktive, die diesen Schritt jedes Mal ausführt, wenn der virtuelle Computer erstellt wird.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/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF
Wenn Sie die Registrierung des Abonnements aufheben möchten, führen Sie den folgenden Befehl aus:
sudo subscription-manager unregister
Führen Sie die folgenden Befehle aus, um die Bereitstellung des virtuellen Computers aufzuheben und ihn für die Bereitstellung in Azure vorzubereiten:
sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo sudo rm -f /var/log/waagent.log sudo export HISTSIZE=0
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.Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus. Ihre Linux-VHD kann nun in Azure hochgeladen werden.
KVM
In diesem Abschnitt erfahren Sie, wie Sie mit KVM eine RHEL 6- oder RHEL 7-Distribution für den Upload in Azure vorbereiten.
RHEL 6 mit KVM
Wichtig
Am 30. November 2020 erreichte RHEL 6 das Ende der Wartungsphase. Danach folgt eine Phase des erweiterten Lebenszyklus. Da RHEL 6 aus den Phasen „Vollständig/Wartung“ wechselt, empfehlen wir dringend, dass Sie ein Upgrade auf RHEL 7, 8 oder 9 durchführen. Wenn Sie auf RHEL 6 bleiben müssen, empfehlen wir, das RHEL Extended Life Cycle Support-Add-On hinzuzufügen.
Laden Sie das KVM-Image von RHEL 6 von der Red Hat-Website herunter.
Legen Sie ein Stammkennwort fest.
Generieren Sie ein verschlüsseltes Kennwort, und kopieren Sie die Ausgabe des Befehls:
sudo openssl passwd -1 changeme
Legen Sie ein Stammkennwort mit Guestfish fest:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Ändern Sie das zweite Feld des Stammbenutzers von
!!
in das verschlüsselte Kennwort.Erstellen Sie über das qcow2-Image einen virtuellen Computer in KVM. Legen Sie den Datenträgertyp auf qcow2 und als Gerätemodell der virtuellen Netzwerkschnittstelle virtio fest. Starten Sie anschließend den virtuellen Computer und melden Sie sich als Stammbenutzer an.
Erstellen oder bearbeiten Sie die Datei
/etc/sysconfig/network
, und fügen Sie ihr den folgenden Text hinzu:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Verschieben (oder entfernen) Sie die udev-Regeln, um eine Generierung statischer Regeln für die Ethernet-Schnittstelle zu vermeiden. Diese Regeln können beim Klonen eines virtuellen Computers 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
Hinweis
Wenn Sie „Accelerated Networking“ verwenden, muss die erstellte synthetische Schnittstelle so konfiguriert werden, dass sie mithilfe einer Udev-Regel nicht verwaltet wird. Diese Aktion verhindert, dass
NetworkManager
die gleiche IP-Adresse wie die primäre Schnittstelle zuweist.Anwendung:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:
sudo chkconfig network on
Registrieren Sie Ihr Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Ändern Sie die Bootzeile des Kernels in Ihrer Grub-Konfiguration, um weitere Kernel-Parameter für Azure einzubinden. Öffnen Sie
/boot/grub/menu.lst
in einem Text-Editor, um diese Konfiguration zu verwenden. Stellen Sie sicher, dass der Standardkernkern die folgenden Parameter enthält:console=ttyS0 earlyprintk=ttyS0
Durch diesen Schritt wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dies kann Azure bei der Behebung von Fehlern unterstützen.
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.Fügen Sie „initramfs“ Hyper-V-Module hinzu:
Bearbeiten Sie
/etc/dracut.conf
, und fügen Sie den folgenden Inhalt hinzu:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Erstellen Sie „initramfs“ neu:
sudo dracut -f -v
Deinstallieren Sie
cloud-init
:sudo yum remove cloud-init
Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Starten hochfährt:
sudo chkconfig sshd on
Ergänzen Sie
/etc/ssh/sshd_config
um die folgende Zeilen:PasswordAuthentication yes ClientAliveInterval 180
Das WALinuxAgent-Paket
WALinuxAgent-<version>
wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
Installieren Sie den Azure Linux-Agent:
sudo yum install WALinuxAgent sudo chkconfig waagent on
Der Azure Linux-Agent kann den Auslagerungsbereich automatisch mit dem lokalen Ressourcendatenträger konfigurieren, der nach der Bereitstellung des virtuellen Computers in Azure mit dem virtuellen Computer verknüpft wird. 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 im vorherigen Schritt die folgenden Parameter in
/etc/waagent.conf
entsprechend 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.
Heben Sie die Registrierung des Abonnements auf (falls erforderlich):
sudo subscription-manager unregister
Führen Sie die folgenden Befehle aus, um die Bereitstellung des virtuellen Computers aufzuheben und ihn für die Bereitstellung in Azure vorzubereiten.
Hinweis
Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Fahren Sie den virtuellen Computer in KVM herunter.
Konvertieren Sie das qcow2-Image in das VHD-Format.
Hinweis
Es gibt einen bekannten Fehler in den qemu-img-Versionen >=2.2.1, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 2.6 behoben. Sie sollten entweder qemu-img 2.2.0 oder eine niedrigere Version verwenden oder auf mindestens 2.6 aktualisieren. Weitere Informationen finden Sie auf dieser Website.
Konvertieren Sie das Bild zuerst in das raw-Format:
sudo qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
Stellen Sie sicher, dass das RAW-Image auf 1 MB ausgerichtet ist. Runden Sie andernfalls die Größe auf 1 MB auf:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Konvertieren Sie den RAW-Datenträger in das VHD-Format mit festgelegter Größe:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Bei QEMU-Version 2.6 oder höher müssen Sie die Option
force_size
einschließen.sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 mit KVM
Laden Sie das KVM-Image von RHEL 7 von der Red Hat-Website herunter. Bei diesem Verfahren wird RHEL 7 als Beispiel verwendet.
Legen Sie ein Stammkennwort fest.
Generieren Sie ein verschlüsseltes Kennwort, und kopieren Sie die Ausgabe des Befehls:
sudo openssl passwd -1 changeme
Legen Sie ein Stammkennwort mit Guestfish fest:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Ändern Sie das zweite Feld des Stammbenutzers von
!!
in das verschlüsselte Kennwort.Erstellen Sie über das qcow2-Image einen virtuellen Computer in KVM. Legen Sie den Datenträgertyp auf qcow2 und als Gerätemodell der virtuellen Netzwerkschnittstelle virtio fest. Starten Sie anschließend den virtuellen Computer und melden Sie sich als Stammbenutzer an.
Erstellen oder bearbeiten Sie die Datei
/etc/sysconfig/network
, und fügen Sie ihr den folgenden Text hinzu:NETWORKING=yes HOSTNAME=localhost.localdomain
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 PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Hinweis
Wenn Sie „Accelerated Networking“ verwenden, muss die erstellte synthetische Schnittstelle so konfiguriert werden, dass sie mithilfe einer Udev-Regel nicht verwaltet wird. Diese Aktion verhindert, dass
NetworkManager
die gleiche IP-Adresse wie die primäre Schnittstelle zuweist.Anwendung:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:
sudo systemctl enable network
Registrieren Sie Ihr Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Ändern Sie die Bootzeile des Kernels in Ihrer Grub-Konfiguration, um weitere Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Konfiguration
/etc/default/grub
in einem Text-Editor, und bearbeiten Sie denGRUB_CMDLINE_LINUX
-Parameter. Beispiel:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Mit diesem Befehl 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 mit dem Befehl die neuen RHEL 7-Benennungskonventionen für Netzwerkkarten 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, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Fügen Sie „initramfs“ Hyper-V-Module hinzu:
Bearbeiten Sie
/etc/dracut.conf
, und fügen Sie Inhalt hinzu:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Erstellen Sie „initramfs“ neu:
sudo dracut -f -v
Deinstallieren Sie
cloud-init
:sudo yum remove cloud-init
Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Starten hochfährt:
sudo systemctl enable sshd
Ergänzen Sie
/etc/ssh/sshd_config
um die folgende Zeilen:PasswordAuthentication yes ClientAliveInterval 180
Das WALinuxAgent-Paket
WALinuxAgent-<version>
wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Installieren Sie den Azure Linux-Agent:
sudo yum install WALinuxAgent
Aktivieren Sie den
waagent
-Dienst:sudo systemctl enable waagent.service
Installieren von
cloud-init
.Führen Sie die Schritte unter „Vorbereiten einer RHEL 7-VM vom Hyper-V-Manager“, Schritt 12, „Installieren
cloud-init
zur Behandlung der Bereitstellung“ aus.Auslagerungskonfiguration:
- Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.
- Führen Sie Schritt 13, „Auslagerungskonfiguration“ im Abschnitt zum Vorbereiten einer RHEL 7-VM mit dem Hyper-V-Manager aus.
Heben Sie die Registrierung des Abonnements auf (falls erforderlich):
sudo subscription-manager unregister
Heben Sie die Bereitstellung durch Ausführen der Schritte unter „Vorbereiten einer RHEL 7-VM vom Hyper-V-Manager“, Schritt 15, „Aufheben der Bereitstellung“ aus.
Fahren Sie den virtuellen Computer in KVM herunter.
Konvertieren Sie das qcow2-Image in das VHD-Format.
Hinweis
Es gibt einen bekannten Fehler in den qemu-img-Versionen >=1.1.1, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 1.6 behoben. Sie sollten entweder qemu-img 1.1.0 oder eine niedrigere Version verwenden oder auf mindestens 1.6 aktualisieren. Weitere Informationen finden Sie auf dieser Website.
Konvertieren Sie das Bild zuerst in das raw-Format:
sudo qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
Stellen Sie sicher, dass das RAW-Image auf 1 MB ausgerichtet ist. Runden Sie andernfalls die Größe auf 1 MB auf:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Konvertieren Sie den RAW-Datenträger in das VHD-Format mit festgelegter Größe:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Bei QEMU-Version 1.6 oder höher müssen Sie die Option
force_size
einschließen:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
VMware
In diesem Abschnitt erfahren Sie, wie Sie eine RHEL 6- oder RHEL 7-Distribution über VMware vorbereiten.
Voraussetzungen
In diesem Abschnitt wird davon ausgegangen, dass Sie bereits einen virtuellen RHEL-Computer in VMware installiert haben. Weitere Informationen zum Installieren eines Betriebssystems in VMware finden Sie im VMware-Installationshandbuch für Gastbetriebssysteme.
- Beim Installieren des Linux-Betriebssystems wird empfohlen, anstelle von LVM – bei vielen Installationen oftmals voreingestellt – die Standardpartitionen zu verwenden. Durch Partitionen lässt sich vermeiden, dass ein LVM-Namenskonflikt mit geklonten virtuellen Computern auftritt, insbesondere dann, wenn ein Betriebssystemdatenträger zur Fehlerbehebung an einen anderen virtuellen Computer angefügt wird. LVM oder RAID können bei Bedarf auf Datenträgern verwendet werden.
- Konfigurieren Sie auf dem Betriebssystemdatenträger keine Swap-Partition. Sie können den Linux-Agent zur Erstellung einer Auslagerungsdatei auf dem temporären Ressourcendatenträger konfigurieren. Weitere Informationen finden Sie in den folgenden Schritten.
- Wenn Sie den virtuellen Datenträger erstellen, wählen Sie virtuellen Datenträger als einzelne Datei speichern aus.
RHEL 6 mit VMware
Wichtig
Am 30. November 2020 erreichte RHEL 6 das Ende der Wartungsphase. Danach folgt eine Phase des erweiterten Lebenszyklus. Da RHEL 6 aus den Phasen „Vollständig/Wartung“ wechselt, empfehlen wir dringend, dass Sie ein Upgrade auf RHEL 7 oder 8 oder 9 durchführen. Wenn Sie auf RHEL 6 bleiben müssen, empfehlen wir, das RHEL Extended Life Cycle Support-Add-On hinzuzufügen.
In RHEL 6 kann
NetworkManager
den Azure Linux-Agent beeinträchtigen. Deinstallieren Sie dieses Paket:sudo rpm -e --nodeps NetworkManager
Erstellen Sie im Verzeichnis
/etc/sysconfig/
eine Datei mit dem Namen network und folgendem Text:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Verschieben (oder entfernen) Sie die udev-Regeln, um eine Generierung statischer Regeln für die Ethernet-Schnittstelle zu vermeiden. Diese Regeln können beim Klonen eines virtuellen Computers 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
Hinweis
Wenn Sie „Accelerated Networking“ verwenden, muss die erstellte synthetische Schnittstelle so konfiguriert werden, dass sie mithilfe einer Udev-Regel nicht verwaltet wird. Diese Aktion verhindert, dass
NetworkManager
die gleiche IP-Adresse wie die primäre Schnittstelle zuweist.Anwendung:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:
sudo chkconfig network on
Registrieren Sie Ihr Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Das WALinuxAgent-Paket
WALinuxAgent-<version>
wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
Ä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"
Durch diesen Schritt wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dies kann Azure bei der Behebung von Fehlern unterstützen. 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.Fügen Sie „initramfs“ Hyper-V-Module hinzu:
Bearbeiten Sie
/etc/dracut.conf
, und fügen Sie den folgenden Inhalt hinzu:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Erstellen Sie „initramfs“ neu:
sudo dracut -f -v
Stellen Sie sicher, dass der SSH-Server installiert und so konfiguriert ist, dass er beim Booten hochfährt. Ergänzen Sie
/etc/ssh/sshd_config
um die folgende Zeile:ClientAliveInterval 180
Installieren Sie den Azure Linux-Agent:
sudo yum install WALinuxAgent sudo chkconfig waagent on
Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.
Der Azure Linux-Agent kann den Auslagerungsbereich automatisch mit dem lokalen Ressourcendatenträger konfigurieren, der nach der Bereitstellung des virtuellen Computers in Azure mit dem virtuellen Computer verknüpft wird. 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 im vorherigen Schritt die folgenden Parameter in
/etc/waagent.conf
entsprechend 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.
Heben Sie die Registrierung des Abonnements auf (falls erforderlich):
sudo subscription-manager unregister
Führen Sie die folgenden Befehle aus, um die Bereitstellung des virtuellen Computers aufzuheben und ihn für die Bereitstellung in Azure vorzubereiten:
Hinweis
Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Fahren Sie den virtuellen Computer herunter, und konvertieren Sie die VMDK-Datei in eine VHD-Datei.
Hinweis
Es gibt einen bekannten Fehler in den qemu-img-Versionen >=2.2.1, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 2.6 behoben. Sie sollten entweder qemu-img 2.2.0 oder eine niedrigere Version verwenden oder auf mindestens 2.6 aktualisieren. Weitere Informationen finden Sie auf dieser Website.
Konvertieren Sie das Bild zuerst in das raw-Format:
sudo qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
Stellen Sie sicher, dass das RAW-Image auf 1 MB ausgerichtet ist. Runden Sie andernfalls die Größe auf 1 MB auf:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Konvertieren Sie den RAW-Datenträger in das VHD-Format mit festgelegter Größe:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Bei QEMU-Version 2.6 oder höher müssen Sie die Option
force_size
einschließen.sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 mit VMware
Erstellen oder bearbeiten Sie die Datei
/etc/sysconfig/network
, und fügen Sie ihr den folgenden Text hinzu:NETWORKING=yes HOSTNAME=localhost.localdomain
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 PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Hinweis
Wenn Sie „Accelerated Networking“ verwenden, muss die erstellte synthetische Schnittstelle so konfiguriert werden, dass sie mithilfe einer Udev-Regel nicht verwaltet wird. Diese Aktion verhindert, dass
NetworkManager
die gleiche IP-Adresse wie die primäre Schnittstelle zuweist.Anwendung:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Stellen Sie sicher, dass der Netzwerkdienst zur Startzeit gestartet wird:
sudo systemctl enable network
Registrieren Sie Ihr Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Ändern Sie die Bootzeile des Kernels in Ihrer Grub-Konfiguration, um weitere Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Änderung
/etc/default/grub
in einem Text-Editor, und bearbeiten Sie denGRUB_CMDLINE_LINUX
-Parameter. Beispiel:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Durch diese Konfiguration 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 RHEL 7-Benennungskonventionen für Netzwerkkarten deaktiviert. Neben den oben erwähnten Punkten ist es ratsam, 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, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Fügen Sie „initramfs“ Hyper-V-Module hinzu:
Bearbeiten Sie
/etc/dracut.conf
und fügen Sie Inhalt hinzu:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Erstellen Sie „initramfs“ neu:
sudo dracut -f -v
Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist normalerweise die Standardeinstellung. Ergänzen Sie
/etc/ssh/sshd_config
um die folgende Zeile:ClientAliveInterval 180
Das WALinuxAgent-Paket
WALinuxAgent-<version>
wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Installieren Sie den Azure Linux-Agent:
sudo yum install WALinuxAgent sudo systemctl enable waagent.service
Installieren Sie
cloud-init
:Führen Sie die Schritte unter „Vorbereiten einer RHEL 7-VM vom Hyper-V-Manager“, Schritt 12, „Installieren
cloud-init
zur Behandlung der Bereitstellung“ aus.Auslagerungskonfiguration:
- Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.
- Führen Sie Schritt 13, „Auslagerungskonfiguration“ im Abschnitt zum Vorbereiten einer RHEL 7-VM mit dem Hyper-V-Manager aus.
Wenn Sie die Registrierung des Abonnements aufheben möchten, führen Sie den folgenden Befehl aus:
sudo subscription-manager unregister
Heben Sie die Bereitstellung durch Ausführen der Schritte unter „Vorbereiten einer RHEL 7-VM vom Hyper-V-Manager“, Schritt 15, „Aufheben der Bereitstellung“ aus.
Fahren Sie den virtuellen Computer herunter, und konvertieren Sie die VMDK-Datei in das VHD-Format.
Hinweis
Es gibt einen bekannten Fehler in den qemu-img-Versionen >=2.2.1, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 2.6 behoben. Sie sollten entweder qemu-img 2.2.0 oder eine niedrigere Version verwenden oder auf mindestens 2.6 aktualisieren. Weitere Informationen finden Sie auf dieser Website.
Konvertieren Sie das Bild zuerst in das raw-Format:
sudo qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
Stellen Sie sicher, dass das RAW-Image auf 1 MB ausgerichtet ist. Runden Sie andernfalls die Größe auf 1 MB auf:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Konvertieren Sie den RAW-Datenträger in das VHD-Format mit festgelegter Größe:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Bei QEMU-Version 2.6 oder höher müssen Sie die Option
force_size
einschließen.sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
Kickstart-Datei
In diesem Abschnitt erfahren Sie, wie Sie mit einer Kickstart-Datei eine RHEL 7-Distribution aus einem ISO-Image vorbereiten.
RHEL 7 mit einer Kickstart-Datei
Erstellen Sie eine Kickstartdatei mit dem folgenden Inhalt, und speichern Sie die Datei. Weitere Informationen zur Kickstartinstallation finden Sie im Kickstartinstallationsleitfaden.
# Kickstart for provisioning a RHEL 7 Azure VM # System authorization information auth --enableshadow --passalgo=sha512 # Use graphical install text # Don't run the Setup Agent on first boot firstboot --disable # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp # Root password rootpw --plaintext "to_be_disabled" # System services services --enabled="sshd,waagent,NetworkManager" # System timezone timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org # Partition clearing information clearpart --all --initlabel # Clear the MBR zerombr # Disk partitioning information part /boot --fstype="xfs" --size=500 part / --fstyp="xfs" --size=1 --grow --asprimary # System bootloader configuration bootloader --location=mbr # Firewall configuration firewall --disabled # Enable SELinux selinux --enforcing # Don't configure X skipx # Power down the machine after install poweroff %packages @base @console-internet chrony sudo parted -dracut-config-rescue %end %post --log=/var/log/anaconda/post-install.log #!/bin/bash # Register Red Hat Subscription subscription-manager register --username=XXX --password=XXX --auto-attach --force # Install latest repo update yum update -y # Enable extras repo subscription-manager repos --enable=rhel-7-server-extras-rpms # Install WALinuxAgent yum install -y WALinuxAgent # Unregister Red Hat subscription subscription-manager unregister # Enable waaagent at boot-up systemctl enable waagent # Install cloud-init yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons # Configure waagent for cloud-init sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf echo "Adding mounts and disk_setup to init stage" sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg # Disable the root account usermod root -p '!!' # Configure swap using cloud-init 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"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF # Set the cmdline sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0"/g' /etc/default/grub # Enable SSH keepalive sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config # Build the grub cfg grub2-mkconfig -o /boot/grub2/grub.cfg # Configure network cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes EOF sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF # Deprovision and prepare for Azure if you are creating a generalized image sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user rm -f ~/.bash_history export HISTSIZE=0 %end
Legen Sie die Kickstart-Datei an einem Speicherort ab, an dem das Installationssystem darauf zugreifen kann.
Erstellen Sie in Hyper-V Manager einen neuen virtuellen Computer. Wählen Sie auf der Seite Virtuelle Festplatte verbinden die Option Virtuelle Festplatte später zuordnen, und schließen Sie den Assistenten für Neuer virtueller Computer ab.
Öffnen Sie die VM-Einstellungen:
Fügen Sie eine neue virtuelle Festplatte an die den virtuellen Computer an. Wählen Sie VHD-Format und Feste Größe aus.
Ordnen Sie die ISO-Installationsdatei dem DVD-Laufwerk zu.
Legen Sie fest, dass BIOS von der CD starten soll.
Starten Sie den virtuellen Computer. Wenn das Installationshandbuch angezeigt wird, wählen Sie die TAB-Taste aus, um die Startoptionen zu konfigurieren.
Geben Sie
inst.ks=<the location of the kickstart file>
am Ende der Startoptionen ein und wählen Sie die EINGABETASTE-Taste aus.Warten Sie, bis die Installation abgeschlossen ist. Nach Abschluss des Vorgangs wird der virtuelle Computer automatisch heruntergefahren. Ihre Linux-VHD kann nun in Azure hochgeladen werden.
Bekannte Probleme
Das folgende Problem ist bekannt.
Der Hyper-V-Treiber konnte dem anfänglichen RAM-Datenträger nicht hinzugefügt werden, wenn ein anderer Hypervisor als ein Hyper-V-Hypervisor verwendet wurde.
In einigen Fällen enthalten Linux-Installationsprogramme unter Umständen keine Treiber für Hyper-V auf dem anfänglichen RAM-Datenträger („initrd“ oder „initramfs“), sofern von Linux nicht die Ausführung in einer Hyper-V-Umgebung erkannt wird.
Wenn ein anderes Virtualisierungssystem (z. B. Virtualbox oder Xen) 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 zumindest auf Systemen, die auf der Red Hat-Upstream-Verteilung basieren, ein bekanntes Problem.
Um dieses Problem zu beheben, müssen Sie „initramfs“ Hyper-V-Module hinzufügen und das Archiv neu erstellen:
Bearbeiten Sie /etc/dracut.conf
, und fügen Sie den folgenden Inhalt hinzu:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Erstellen Sie „initramfs“ neu:
sudo dracut -f -v
Weitere Informationen finden Sie unter Erneutes Erstellen von „initramfs“.
Zugehöriger Inhalt
- Sie können jetzt Ihre virtuelle RHEL-Festplatte verwenden, um neue virtuelle Computer 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.
- Weitere Informationen zu den Hypervisoren, die zum Ausführen von RHEL zertifiziert sind, finden Sie auf der Red Hat-Website.
- Weitere Informationen zur Verwendung von produktionsfähigen RHEL-BYOS-Images finden Sie auf der Dokumentationsseite zu Bring-Your-Own-Subscription.