In diesem Artikel beleuchten wir die Schritte und Erfahrungen bei der experimentellen Installation von SAP HANA, express edition in WSL2 – dem Windows Subsystem for Linux Version 2. Bevor wir in die Details eintauchen, sei klargestellt: Obwohl ich für SAP arbeite, stellt der hier beschriebene Ansatz keine offiziell von SAP unterstützte Methode zur Installation oder zum Betrieb unserer Software dar. Dies ist das Ergebnis meiner persönlichen Experimente und Erkundungen. Die Nutzung erfolgt auf eigenes Risiko. Entwickler und IT-Experten, die eine flexible und leistungsstarke Umgebung für Datenbanklösungen wie Hana Express auf Windows suchen, könnten in WSL2 eine spannende Alternative finden, insbesondere wenn sie sich mit sap hana sql und dessen Möglichkeiten vertraut machen möchten.
Was ist WSL und warum WSL2?
Das Windows Subsystem for Linux ist eine Funktion des Microsoft Windows-Betriebssystems, die es ermöglicht, Linux in dieser Umgebung über einen leichtgewichtigen Virtualisierungsansatz auszuführen. Microsoft beschreibt es wie folgt: “Das Windows Subsystem for Linux ermöglicht es Entwicklern, eine GNU/Linux-Umgebung – einschließlich der meisten Befehlszeilentools, Dienstprogramme und Anwendungen – direkt unter Windows auszuführen, unverändert und ohne den Overhead einer herkömmlichen virtuellen Maschine oder Dual-Boot-Einrichtung.”
WSL Version 2 stellt eine signifikante Weiterentwicklung dar, indem ein vollständiger Linux-Kernel und Systemaufrufkompatibilität eingeführt wurden. Während frühere Versuche, HANA auf WSL 1 zu betreiben, aufgrund fehlender Systemaufrufe scheiterten, eröffnet die Einführung von WSL2 (und dessen Rückportierung auf ältere Windows-Patch-Levels) neue Möglichkeiten.
Zu den Hauptvorteilen von WSL2 zählen der fast sofortige Start von Linux-Distributionen und der großflächige Zugriff auf die Host-Hardware, wobei Ressourcen wie Arbeitsspeicher dynamisch bei Bedarf zugewiesen werden. Meine openSUSE-Distribution zeigte beispielsweise 51 GB Arbeitsspeicher an, wovon jedoch nur 18 GB tatsächlich auf Host-Hardware-Ebene zugewiesen wurden. Ein weiterer großer Pluspunkt ist der Zugriff auf das Dateisystem der Linux-Distribution direkt aus dem Windows Explorer, was den Dateiaustausch zwischen Host-Betriebssystem und Gästen erheblich vereinfacht.
Das Linux-Dateisystem ist vom Windows Explorer aus zugänglich
Darüber hinaus bietet WSL2 ein sehr einheitliches Netzwerk-Erlebnis: Ports werden automatisch an die Linux-Container weitergeleitet, und die Windows-Netzwerkkonfiguration wird automatisch in alle Linux-Container repliziert. Dies vereinfacht die Einrichtung und die Kommunikation zwischen Linux-Containern erheblich.
Dynamische Zuweisung teilt Ressourcen des Haupt-Betriebssystems
Die Installationserfahrung mit SAP HANA, express edition auf WSL2
Angesichts der verbesserten Leistung und der Unterstützung von Kernel/Systemaufrufen in WSL2 ist es naheliegend, auch Serversoftware wie SAP HANA zu installieren. Im Folgenden werden die Schritte und meine Erfahrungen bei der Installation in WSL2 detailliert beschrieben. Es empfiehlt sich, den gesamten Beitrag zu lesen, bevor Sie selbst versuchen, da ich auf einige Probleme gestoßen bin, die erst am Ende entdeckt wurden und eine Wiederholung einiger Schritte erforderten.
Zunächst erfolgte die Installation und Aktualisierung auf WSL2. Für Windows 1903 oder 1909 sind zusätzliche Schritte für die Backport-Version von WSL2 erforderlich. Ich habe zwei Linux-Distributionen installiert: openSUSE und Ubuntu. Da openSUSE der Enterprise SUSE sehr nahekommt, wählte ich diese als Ausgangspunkt für die Installation von hana express.
Mein bevorzugter Weg zur Installation von HANA Express ist die Verwendung des binären Installers, da ich gerne die Kontrolle über die meisten Fragen behalte. Der binäre Installer konnte dank des im Windows Explorer zugänglichen Linux-Dateisystems problemlos auf meine openSUSE Linux-Distribution kopiert werden.
Binärer Installer für HANA Express
Die Installation wurde mit dem SAP HANA Lifecycle Management Kommandozeilen-Tool gestartet. Hierbei wurde die HANA 2.0 SPS 05 Version von HANA Express verwendet, eine interne Testversion, die zu diesem Zeitpunkt noch nicht öffentlich verfügbar war. Ein wichtiger Hinweis betrifft die Verwendung von “localhost” als lokalen Hostnamen. HANA und insbesondere XSA reagieren sehr empfindlich auf den Hostnamen. In diesem Fall würde “localhost” verwendet, um von dem Host-Betriebssystem zum UAA umzuleiten. Dies funktioniert, da alle Ports vom Linux-Container automatische Portweiterleitungen vom Host-Betriebssystem erhalten. Dies führte jedoch später zu Problemen aufgrund von Portkonflikten mit bereits laufenden Diensten im Windows-Betriebssystem.
Die Installation auf einer standardmäßigen Kopie von openSUSE Leap 15.2 aus dem Microsoft Store verlief zunächst mehrere Minuten fehlerfrei und sehr schnell im Vergleich zu vollwertigen VMs.
Zu früh gefreut…
Doch gegen Ende des Installationsprozesses, während der Erstellung des Secure Stores, trat ein Fehler auf: Die OS-Bibliothek libatomic.so.1 fehlte. Dies hatte ich bereits erwartet, da im Vergleich zu Enterprise SUSE fehlende Abhängigkeiten oder Voraussetzungen auftreten könnten. Glücklicherweise konnte alles Fehlende problemlos aus den Standard-Repositories hinzugefügt werden. In openSUSE kann YaST2 verwendet werden, um zusätzliche Software zu installieren. Nach der Suche nach libatomic1 stellte sich heraus, dass es Teil von gcc ist. Anstatt einzelne Abhängigkeiten zu suchen, entschied ich mich daher, nach gcc zu suchen und das gesamte gcc8-Paket zu installieren.
Nach der Installation von gcc und einem Neustart der Installation stieß ich auf eine weitere fehlende Abhängigkeit: libnuma. NUMA (Non-Uniform Memory Access) ist zweifellos eine Linux-Serverfunktion, die HANA nutzen würde, aber möglicherweise nicht in einer standardmäßigen, auf Endbenutzer ausgerichteten Distribution vorhanden ist. Auch hier konnte libnuma über YaST2 aus den Standard-Repositories installiert werden. Wären diese beiden Abhängigkeiten im Voraus installiert worden, hätte die HANA-Installation ohne Fehler durchgeführt werden können.
Erfolg!
Nachdem diese beiden Abhängigkeiten vorhanden waren, konnte der Installationsprozess ohne weitere Fehler abgeschlossen werden. Somit funktioniert HANA Express mit nur zwei erforderlichen OS-Abhängigkeiten im Wesentlichen sofort unter WSL2. Zurück im Windows Host-Betriebssystem konnte HANA nun über localhost erreicht werden, als wäre es eine native Anwendung unter Windows installiert. Keine spezielle Netzwerkkonfiguration oder Einrichtung war erforderlich; es funktionierte einfach. Für die reine Nutzung der HANA-Datenbank ohne XSA würde ich wahrscheinlich empfehlen, mit dem Hostnamen localhost zu installieren und die automatische Portweiterleitung ihre Arbeit tun zu lassen. Angespornt durch diesen anfänglichen Erfolg, war ich bereit, den HANA-Installer zu nutzen, um XSA ebenfalls zu meinem System hinzuzufügen.
Erweiterung um XS Advanced (XSA) und Lösung von Portkonflikten
Die Erweiterung um XS Advanced (XSA) verlief ebenfalls reibungslos und ohne Fehler. Ich konnte einen Webbrowser in Windows starten, localhost verwenden und nun auch auf XSA-Anwendungen zugreifen. Um eine Vorstellung von der Vielfalt der auf einem Entwicklungssystem laufenden Anwendungen zu geben, ist es wichtig zu beachten, dass dies nicht nur Datenbanken sind, sondern auch andere Tools wie beispielsweise ein bildbearbeitungsprogramm adobe in einer völlig anderen Umgebung betrieben werden könnten, die jedoch alle von der Flexibilität des Windows-Hostsystems profitieren.
Doch nach der Installation weiterer XSA-Anwendungen wie Cockpit, Web IDE usw. stieß ich auf das erste ernsthafte Problem: Die Ports im 51XXX-Bereich funktionierten nicht. Es stellte sich heraus, dass dies einfach an bereits im Host-Betriebssystem laufenden Windows-Diensten lag, die dieselben Ports verwendeten. Die Portweiterleitung funktioniert nur für Ports, die nicht bereits auf Host-OS-Ebene gebunden sind.
Es gibt jedoch Portkonflikte mit dem Rest der Anwendungspforten
Dies ist logisch und notwendig, um Konflikte mit dem Host-Betriebssystem zu vermeiden. Jeder Linux-Container hat natürlich seine eigene eindeutige IP-Adresse zugewiesen. Es ist nicht zwingend erforderlich, die Portweiterleitung über localhost zu nutzen; stattdessen kann der Linux-Container direkt angesprochen werden. Ich nutzte diese Technik und suchte die IP-Adresse der openSUSE-Containerinstanz. Anschließend konfigurierte ich die Hosts-Datei in meiner Windows-Host-OS-Version (c:windowssystem32driversetchosts). WSL handhabt dies außergewöhnlich gut, indem es alle Änderungen an der Windows-Netzwerkkonfiguration in alle Linux-Container pusht. Eine doppelte Wartung ist somit nicht erforderlich. Ich richtete einen Alias namens hxehost (ähnlich wie bei der Verwendung von HANA Express in einer VM) in der Windows-Hosts-Datei ein, und beide meiner Linux-Distributionen erhielten diese Konfiguration.
Erstellen Sie einen Hostnamen-Alias für die IP-Adresse der Linux-Distribution
Der mühsamste Teil war hierbei die Deinstallation und anschließende vollständige Neuinstallation, wobei ich den hxehost-Alias direkt zu Beginn des Prozesses angab, als der Installer nach dem lokalen Hostnamen fragte. Mit dieser geringfügigen Änderung funktionierte alles deutlich besser. Ich konnte nun alle XSA-Anwendungen in meinem Webbrowser erreichen und weiterhin auf HANA Express von meiner anderen Ubuntu-Distribution aus zugreifen.
Fazit und Empfehlung
Ich nutze dieses neue Setup nun schon seit einigen Tagen und bin äußerst zufrieden mit der Leistung im Vergleich zu meiner früheren Einrichtung mit Hyper-V. Die Integration mit dem Windows Explorer ist besonders angenehm. Insgesamt ist die Vereinfachung der Einrichtung (insbesondere im Netzwerkbereich, selbst mit der geringen Arbeit, die ich mit dem hxehost-Alias hatte) wesentlich einfacher als bei vollwertigen Hyper-V-VMs. Ein weiterer großer Vorteil ist die Interaktion zwischen mehreren Containern und dem Host-Betriebssystem. Wenn Sie also eine Windows-Version nutzen, die Zugriff auf WSL2 bietet, empfehle ich Ihnen dringend, es auszuprobieren. Es ist eine großartige, voll funktionsfähige Linux-Erfahrung, die die Entwicklung von Anwendungen und die Bereitstellung von Datenbanklösungen wie hana express auf Windows erheblich optimiert.
