Benutzerdefinierter Prozess zur Erstellung von Betriebssystem-Images auf RHEL für SAP Lösungen auf IBM® Power® Virtual Server
Die folgenden Informationen beschreiben, wie Sie ein benutzerdefiniertes Betriebssystem-Image auf Red Hat Enterprise Linux (RHEL) für SAP Software auf IBM® Power® Virtual Server erstellen.
Anforderungen für die Erstellung benutzerdefinierter Betriebssystem-Images
Erfüllen Sie die folgenden Anforderungen, bevor Sie mit der Imageerstellung beginnen:
-
Erstellen Sie ein IBM Cloud Konto und holen Sie sich die notwendigen Zugangsdaten, um einen Image Build Server auf Power Virtual Server bereitzustellen. Einzelheiten zur Identitäts- und Zugriffsverwaltung (IAM) sind in Managing identity and access management(IAM)für IBM® Power® Virtual Server beschrieben.
-
Stellen Sie sicher, dass Sie Zugang zu IBM Cloud Object Storage haben, damit Sie ein Basisbild hochladen können. Informationen zu den ersten Schritten finden Sie unter Erste Schritte mit IBM Cloud Object Storage.
-
Laden Sie das Red Hat Enterprise Linux 9 KVM Guest Image
rhel-9.4-ppc64le-kvm.qcow2
von Red Hat Enterprise Linux für Power little endian herunter.Die folgende Anleitung zur Erstellung eines benutzerdefinierten Betriebssystem-Images basiert auf dem RHEL 9.4 Betriebssystem-Image.
-
Erstellen Sie einen Image-Erstellungsserver, auf dem Sie eine Image-Erstellungsumgebung konfigurieren und ein Betriebssystem-Image erstellen. Es besteht aus einer Power Virtual Server-Instanz, auf der RHEL 9.2 ( RHEL9-SP2-SAP-NETWEAVER ) oder eine höhere RHEL-Version läuft, mit einem zusätzlichen Speichervolumen von 200 GByte. Es gibt zwei Methoden, um den Image Build Server einzurichten:
-
Für eine manuelle Vorgehensweise lesen Sie bitte die detaillierten Informationen in Erste Schritte mit Power Virtual Server und Erstellen eines IBM Power Virtual Servers.
-
Eine automatisierte Vorgehensweise finden Sie in der Anleitung Power Virtual Server with VPC Landing Zonedeployment.
-
Einrichten einer Build-Image-Umgebung
Die folgenden Schritte beschreiben, wie Sie eine Build-Server-Umgebung für die Image-Erstellung einrichten.
-
Melden Sie sich bei Ihrem Build-Server an und überprüfen Sie seinen Registrierungsstatus, indem Sie den folgenden Befehl ausführen.
subscription-manager status
-
Aktualisieren Sie die RHEL OS-Pakete.
-
Überprüfen und Anpassen der Proxy-Einstellungen für eine Build-Umgebung. Konfigurieren Sie die temporären HTTPS Proxy-Einstellungen, indem Sie Ihre Proxy-IP-Adresse oder URL verwenden. Wenn Sie die automatisierte Power Virtual Server mit VPC landing zone aus dem Katalog IBM Cloud bereitgestellt haben, verwenden Sie diese Proxy-Adresse
http://10.30.40.7:3128/
für Ihre Konfiguration.export https_proxy="http://10.30.40.7:3128/" || die "Set HTTPS proxy failed (rc $?)"
-
Erstellen Sie ein Verzeichnis "/data" und exportieren Sie eine Umgebungsvariable, die auf dieses Verzeichnis verweist.
mkdir -p /data
export MOUNT_PATH=/data
-
Fügen Sie ein zusätzliches Speichervolumen mit einer Kapazität von 200 GB hinzu und erstellen Sie das Dateisystem
/data
.-
Führen Sie den Befehl multipath aus, um die verfügbaren Speichervolumes und ihre World Wide Names (WWNs) zu ermitteln. Stellen Sie sicher, dass die Befehlsausgabe nur ein 200-GB-Speicher-Volume anzeigt. Andernfalls wird die Erstellung des Dateisystems nicht richtig funktionieren.
multipath -ll
-
Exportieren Sie die folgenden Variablen für physische und logische Volumes, eine Volume-Gruppe und ein Einhängeverzeichnis.
export PV_SIZE=200G
export LV_NAME=image_lv
export VG_NAME=image_vg
-
Erstellen Sie die physischen und logischen Datenträger.
devices=$(multipath -ll | grep -B 1 $PV_SIZE | grep dm- | awk '{print "/dev/"$2}' | tr '\n' ' ')
stripes=$(multipath -ll | grep -B 1 $PV_SIZE | grep dm- | awk '{print "/dev/"$2}' | wc | awk '{print $1}')
pvcreate $devices
vgcreate ${VG_NAME} ${devices}
lvcreate -i${stripes} -I64 -l100%VG -n ${LV_NAME} ${VG_NAME}
mkfs.xfs /dev/mapper/${VG_NAME}-${LV_NAME}
-
Prüfen Sie, ob das erstellte logische Volume aktiv ist.
lvscan
-
Hängen Sie das Dateisystem an.
mount -t xfs -o defaults,nofail --source /dev/mapper/${VG_NAME}-${LV_NAME} --target ${MOUNT_PATH}
-
Fügen Sie das Dateisystem zur Datei
/etc/fstab
hinzu.echo "/dev/mapper/${VG_NAME}-${LV_NAME} ${MOUNT_PATH} xfs defaults,nofail 0 0" >> /etc/fstab
-
Vergewissern Sie sich, dass das Dateisystem in der Liste aller eingehängten Dateisysteme enthalten ist.
df -h
-
-
Erstellen Sie das Verzeichnis
/data/image
, in dem das Basisbild gespeichert wird. -
Kopieren Sie das Bild
rhel-9.4-ppc64le-kvm.qcow2
auf/data/image
. -
Erstellen Sie das Verzeichnis
/data/tmp
, in dem ein temporäres Abbild während des Erstellungsprozesses gespeichert wird. -
Führen Sie die folgenden Aufgaben aus, um den Build-Server zu konfigurieren. Verwenden Sie den
dnf
RHEL-Paketmanager.-
Installieren Sie die Systempakete
xfsprogs
undlvm2
. -
Installieren Sie die Entwicklungspakete
make
,git
,libgcrypt-devel
undgo-toolset
. -
Installieren Sie die Pakete
qemu-img
undcloud-utils-growpart
. -
Konfigurieren Sie einen Proxy, indem Sie Ihren Proxy-Host in der Datei
~root/.bashrc
hinzufügen.export https_proxy='<your_https_proxy>'
-
-
Konfigurieren Sie das NBD-Modul so, dass es beim Booten geladen wird, indem Sie die folgenden Zeilen in die Datei
/etc/modules-load.d/ndb.conf
einfügen.nbd options nbd max_part=8
-
Laden Sie die
pvsadm
Tool aus der neuesten Version vonpvsadm-linux-ppc64le
GitHub Repository. Speichern Sie es in der Datei mit dem Namen/usr/local/bin/pvsadm
und ändern Sie den Modus auf0755
. Weitere Einzelheiten zu diesem Tool finden Sie unterpvsadm
.
Erstellen eines benutzerdefinierten Betriebssystem-Images
Der Erstellungsprozess eines benutzerdefinierten Betriebssystem-Images für IBM Cloud PowerVS besteht aus den folgenden Aufgaben.
-
Überprüfen Sie, ob die Red Hat Satellite Anmeldedaten gültig sind.
-
Erstellen Sie eine leere Datei mit dem Namen
image-prep.template
und verwenden Sie diese als Bildvorlage. -
Die folgenden Aufgaben enthalten die Shell-Befehle, die für die Erstellung eines angepassten Images benötigt werden. Fügen Sie diese Befehle der Vorlage
image-prep.template
hinzu. Die Befehle aktualisieren das Basis-Betriebssystem-Image während der Image-Erstellung mit dem Toolpvsadm
, um das endgültige SAP-ready OS-Image zu erstellen. Die Befehlsfolge ist wichtig und sollte nicht geändert werden.-
Kopieren Sie die folgenden Zeilen, einschließlich der Fehlerbehandlung, die als Kopfzeile der Vorlage verwendet werden sollen.
#!/usr/bin/env bash set -o errexit set -o nounset set -o pipefail die() { echo -e "\n${1}" set +o errexit set +o nounset exit 1 }
-
Fügen Sie einen temporären Namenserver hinzu.
echo "nameserver 9.9.9.9" >> /etc/resolv.conf \ || die "Add nameserver failed (rc $?)"
-
Erstellen Sie ein Arbeitsverzeichnis
/tmp/work
und exportieren Sie es als Umgebungsvariable.mkdir -p /tmp/work || die "Create work directory failed (rc $?)"
export WORK_DIR=/tmp/work
-
Erstellen Sie die Auslagerungsdatei 25GB, fügen Sie Berechtigungen hinzu und überprüfen Sie, ob sie korrekt erstellt wurde.
fallocate -l 25G /swapfile || die "allocate swapfile failed (rc $?)"
chmod 600 /swapfile || die "chmod swapfile failed (rc $?)"
mkswap /swapfile || die "mkswap swapfile failed (rc $?)"
swapon /swapfile || die "swapon swapfile failed (rc $?)"
swapon --show
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab || die "update fstab with swapfile failed (rc $?)"
echo "swapon -s"
-
Abonnieren Sie Red Hat Satellite und aktivieren Sie die SAP Repositories. Verwenden Sie Ihre eigenen Werte für den Abonnement-Benutzernamen, das Passwort und die Release-Version.
subscription-manager register \ --force --auto-attach \ --username=<SUBSCRIPTION_USER> \ --password=<SUBSCRIPTION_PASSWORD> \ --release=<OS_VERSION> \ || die "Register subscription failed (rc $?)"
subscription-manager repos \ --disable="*" \ --enable="rhel-9-for-$(uname -m)-baseos-e4s-rpms" \ --enable="rhel-9-for-$(uname -m)-appstream-e4s-rpms" \ --enable="rhel-9-for-$(uname -m)-sap-solutions-e4s-rpms" \ --enable="rhel-9-for-$(uname -m)-sap-netweaver-e4s-rpms" \ --enable="rhel-9-for-$(uname -m)-highavailability-e4s-rpms"\ --enable="codeready-builder-for-rhel-9-$(uname -m)-rpms" \ || die "Repository configuration failed (rc $?)"
-
Installieren Sie einen Paketgruppenserver.
dnf -y group install server \ || die "Installing server group packages failed (rc $?)"
-
Installieren Sie die Systempakete.
dnf -y install \ cloud-init \ device-mapper-multipath \ libxcrypt-compat \ glibc-langpack-en \ || die "Install system packages failed (rc $?)"
-
Aktualisieren Sie
grub2
.dnf -y reinstall grub2-common \ || die "Reinstall system package failed (rc $?)"
dnf -y update grub2 \ || die "Update grub2 package failed (rc $?)"
-
Installieren Sie Ansible und die Systemrollen Red Hat für SAP.
dnf -y install ansible-core rhel-system-roles rhel-system-roles-sap \ || die "Install Ansible and RH System Roles failed (rc $?)"
-
Aktivieren Sie das EPEL-Repository.
dnf -y install "https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm" \ || die "Installation EPEL configuration failed (rc $?)"
-
Konfigurieren Sie das IBM Power tools Repository.
dnf -y install "https://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm" \ || die "Installation IBM Power Tools configuration failed (rc $?)"
echo 'y' | (/opt/ibm/lop/configure \ || die "Power Tools configuration failed (rc $?)")
-
Installieren Sie die IBM Power Tools und deaktivieren Sie das Repository.
dnf config-manager --set-disabled Advance_Toolchain \ || die "Disable Advance Toolchain repository failed (rc $?)"
dnf -y install ibm-power-managed-rhel9 \ || die "Install IBM Power Tools failed (rc $?)"
dnf config-manager --set-disabled IBM_Power_Tools \ || die "Disable IBM Power Tools repository failed (rc $?)"
-
Aktualisierung des Betriebssystems.
dnf -y update || die "OS update failed (rc $?)"
-
Entfernen Sie das EPEL-Repository.
dnf -y remove epel-release \ || die "Uninstall EPEL configuration failed (rc $?)"
-
Abmeldung vom Server Red Hat Satellite.
subscription-manager unregister \ || die "Unregister subscription failed (rc $?)"
subscription-manager clean \ || die "Clean subscription failed (rc $?)"
-
Ändern Sie die Verschlüsselungsrichtlinie (deaktivieren Sie SHA1/CBC ).
echo -e "cipher@ssh = -*-CBC\n" \ > /etc/crypto-policies/policies/modules/NO-CBC.pmod \ || die "Create of CBC disabling file failed (rc $?)"
update-crypto-policies --set DEFAULT:NO-SHA1:NO-CBC \ || die "Update of cryptografic policy failed (rc $?)"
-
Erstellen Sie eine grundlegende Multipath-Konfiguration.
echo -e "defaults {\n \ user_friendly_names no\n \ find_multipaths smart\n}\n" \ > /etc/multipath.conf \ || die "Create multipath configuration failed (rc $?)"
-
Definieren Sie ein Ansible Inventar.
echo -e "localhost ansible_connection=local\n" > /root/inventory \ || die "Create Ansible inventory file failed (rc $?)"
-
Erstellen Sie Ansible yml-Dateien für SAP HANA und NetWeaver.
cat <<EOF > /root/sap-hana.yml \ || die "Create SAP HANA Ansible file failed (rc $?)" - hosts: localhost vars: sap_hana_preconfigure_min_rhel_release_check: false sap_hana_preconfigure_install_ibm_power_tools: false sap_hana_preconfigure_add_ibm_power_repo: false connection: local roles: - redhat.sap_install.sap_general_preconfigure - redhat.sap_install.sap_hana_preconfigure EOF
cat <<EOF > /root/sap-netweaver.yml \ || die "Create SAP NetWeaver Ansible file failed (rc $?)" - hosts: localhost connection: local roles: - redhat.sap_install.sap_general_preconfigure - redhat.sap_install.sap_netweaver_preconfigure EOF
cat <<EOF > /root/sap-preconfigure.yml \ || die "Create SAP preconfiguration Ansible file failed (rc $?)" - hosts: localhost connection: local roles: - redhat.sap_install.sap_general_preconfigure EOF
-
Ändern Sie den Standard-Kernelparameter in der Datei
/etc/sysctl.conf
.cat <<EOF >> /etc/sysctl.conf \ || die "Change of kernel parameter failed (rc $?)" net.core.rmem_max = 56623104 net.core.wmem_max = 56623104 net.ipv4.tcp_rmem = 65536 262088 56623104 net.ipv4.tcp_wmem = 65536 262088 56623104 net.ipv4.tcp_mem = 56623104 56623104 56623104 EOF
-
Aktivieren Sie Receive Flow Steering (RFS) auf ibmveth-Geräten, passen Sie die Datei
/etc/udev/rules.d/70-ibmveth-rfs.rules
an.cat <<EOF >> /etc/udev/rules.d/70-ibmveth-rfs.rules \ || die "Create udev rule for RFS failed (rc $?)" # Enable Receive Flow Steering (RFS) on ibmveth devices SUBSYSTEM=="net",ACTION=="add",DRIVERS=="ibmveth",RUN{program}+="/bin/bash -c 'echo 32768 > /sys/\$DEVPATH/queues/rx-0/rps_flow_cnt';" EOF
Aktivieren Sie das Receive Flow Steering (RFS) in der Datei
/etc/sysctl.d/95-enable-rfs.conf
.cat <<EOF >> /etc/sysctl.d/95-enable-rfs.conf \ || die "Create kernel parameter file for RFS failed (rc $?)" # Enable Receive Flow Steering (RFS) net.core.rps_sock_flow_entries=32768 EOF
-
Konfigurieren Sie den SSH-Daemon.
sed -i \ -e 's/^\(#\)\?PermitRootLogin .*/PermitRootLogin yes/g' \ -e 's/^\(#\)\?PasswordAuthentication .*/PasswordAuthentication no/g' \ -e 's/^\(#\)\?MaxStartups .*/MaxStartups 10:30:60/g' \ /etc/ssh/sshd_config \ || die "Failed SSH daemon configuration (rc $?)"
-
GRUB anpassen.
-
Überprüfen Sie, ob die Partition PReP existiert und aktualisieren Sie sie.
prep_partition=$(fdisk -l | grep -i ppc | grep -i loop | awk '{print $1}') # Check if a PReP partition was found if [ -z "$prep_partition" ]; then echo "No PReP partition found with /dev/loop." exit 1 else echo "PReP partition found: $prep_partition" fi
-
Installieren Sie
grub2
auf der Partition PReP.grub2-install "$prep_partition" \ || die "Install GRUB update failed (rc $?)"
-
Führen Sie den Befehl bootlist aus.
bootlist -m normal -o || die "Setting boot list failed (rc $?)"
-
Ändern Sie die Standard-Timeout-Option von GRUB.
sed -i \ -e 's/GRUB_TIMEOUT=.*/GRUB_TIMEOUT=20/' \ /etc/default/grub || die "Fail to change default GRUB options (rc $?)"
-
Aktualisieren Sie die GRUB-Konfiguration.
grubby --update-kernel=ALL \ --remove-args="net.ifnames=0" \ --args="console=tty0 console=hvc0,115200n8 crashkernel=2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G rd.shell rd.debug rd.driver.pre=dm_multipath log_buf_len=1M elevator=none" \ || die "GRUB cmdline configuration update failed (rc $?)"
-
Aktivieren Sie Multipath für alle Kernel.
echo -e 'force_drivers+=" dm-multipath "\n' >/etc/dracut.conf.d/10-mp.conf\ || die "Create of multipath include file for dracut failed (rc $?)"
dracut --regenerate-all --force \ || die "Regenerate of initramfs images failed (rc $?)" for kernel in $(rpm -q kernel | sort -V | sed 's/kernel-//'); do dracut --kver ${kernel} --force --add multipath --include /etc/multipath\ /etc/multipath --include /etc/multipath.conf /etc/multipath.conf \ || die "Generate initramfs of ${kernel} failed (rc $?)" done
-
Erzeugen Sie die GRUB-Konfiguration.
grub2-mkconfig -o /boot/grub2/grub.cfg \ || die "Generate GRUB configuration failed (rc $?)"
-
-
Entfernen Sie den temporären Namenserver.
sed -i '/nameserver 9.9.9.9/d' /etc/resolv.conf \ || die "Remove nameserver failed (rc $?)"
-
Aktivieren Sie SELinux-Relabeling beim nächsten Start.
touch /.autorelabel || die "Create relabel file failed (rc $?)"
-
Löschen Sie das Passwort des Root-Benutzers.
usermod -p '!' root || die "Delete root password failed (rc $?)"
-
Bereinigen Sie das Dateisystem.
rm -rf /etc/sysconfig/network-scripts/ifcfg-eth*
rm -rf /tmp/work
rm -rf /root/.ssh
rm -rf /etc/pki/entitlement/
rm -rf /setup.sh
-
Löschen der Befehlshistorie.
history -c
-
-
Bevor Sie das Tool
pvsadm
ausführen, stellen Sie sicher, dass die lokale Auslagerung auf einem Build-Server deaktiviert ist. Andernfalls tritt der Fehlermkswap: error: /swapfile is mounted; will not make swapspace
bei der Ausführung vonpvsadm
auf. Um die Auslagerung zu deaktivieren, führen Sie den folgenden Befehl aus.swapoff -a
-
Verwenden Sie das Image-Erstellungstool
pvsadm
mit dem Befehlqcow2ova
, um das Image qcow2 in das OVA-Format zu konvertieren. Setzen Sie Ihre eigenen Werte für die Befehlsflags entsprechend ihren Eingabeformaten. Siehe die Beschreibung der Flaggen unten.--image-name <string> Name of the resultant OVA image --image-url <string> URL or absolute local file path to the qcow2 image --image-dist <string> Image Distribution(supported: rhel, centos, coreos) --target-disk-size <int> Size (in GB) of the target disk volume where OVA will be copied (default 120) --rhn-user <string> RedHat Subscription username. Required when Image distribution is rhel --rhn-password <string> RedHat Subscription password. Required when Image distribution is rhel --os-password <string> Root user password, will auto-generate the 12 bits password(applicable only for redhat and cento distro) --temp-dir <string> Scratch space to use for OVA generation --prep-template <string> Image preparation script template
Verwenden Sie z. B.
rhel-9.4-ppc64le-image
als Namen für ein neues Betriebssystem-Image,rhel-9.4-ppc64le-kvm.qcow2
ist das Basis-OS-Image, das sich auf/data/image
befindet. Der absolute lokale Pfad für das qcow2-Image ist/data/image/rhel-9.4-ppc64le-kvm.qcow2
, und die Image-Distribution istrhel
. Passen Sie die Größe des Abbilds und des Zieldatenträgers an Ihre Anforderungen an. 120 GB ist der Standardwert für den Zieldatenträger. Eine Skriptvorlage für die Bildvorbereitung istimage-prep.template
, und auch der Name des Skripts ist anpassbar. Um die Ausführung despvsadm
Image Build Tools zu vereinfachen, können Sie auch Umgebungsvariablen einrichten.export IMAGE_NAME=rhel-9.4-ppc64le-image export QCOW2_IMAGE_PATH=/data/image/rhel-9.4-ppc64le-kvm.qcow2 export IMAGE_SIZE=100 export TARGET_DISK_SIZE=100 export SUBSCRIPTION_USER=<RedHat subscription username> export SUBSCRIPTION_PASSWORD=<RedHat Subscription password> export IMAGE_BUILD_DIRECTORY=/data/tmp export IMAGE_PREP_SCRIPT=image-prep.template
pvsadm image qcow2ova --image-name ${IMAGE_NAME} \ --image-url ${QCOW2_IMAGE_PATH} \ --image-dist rhel \ --image-size ${IMAGE_SIZE} --target-disk-size ${TARGET_DISK_SIZE} \ --rhn-user ${SUBSCRIPTION_USER} \ --rhn-password ${SUBSCRIPTION_PASSWORD} \ --temp-dir ${IMAGE_BUILD_DIRECTORY} \ --prep-template ${IMAGE_PREP_SCRIPT}
Das Tool
pvsadm
verfügt über ein Hilfemenü mit ausführlichen Beschreibungen der Verwendung, der Befehle und der Flaggen. Führen Sie den folgenden Befehl aus, um das Hilfemenü aufzurufen.pvsadm --help
-
Laden Sie das selbst erstellte Betriebssystem-Image auf Cloud Object Storage (COS) hoch.
Importieren des OS-Images in den Arbeitsbereich Power Virtual Server
Wie Sie Ihr benutzerdefiniertes Boot-Image importieren, erfahren Sie in der Anleitung zum Importieren eines Boot-Images.
Erstellen einer Power Virtual Server-Instanz aus dem neu importierten Betriebssystem-Image
Um eine neue Power Virtual Server Instanz bereitzustellen, führen Sie die Schritte aus, die unter Verwendung eines benutzerdefinierten Boot-Images zur Bereitstellung einer neuen Instanz beschrieben sind.