7 Linux Basics

7.1 Linux Namespaces und Control Groups

Linux ist ein auf UNIX basierendes Betriebssystem, dessen Kernel für Ressourcen- und Prozessmanagement sowie die Hardware-Interaktion zuständig ist. Die Implementierung von Namespaces und cgroups hat die Container-Technologie entscheidend vorangebracht, indem sie verbesserte Ressourcenverwaltung und -isolation ermöglichte und so zu einem Kernbestandteil moderner IT-Infrastrukturen wurde.

7.2 Kernfunktionen und die Einführung von Namespaces

Ein wichtiger Aspekt eines Kernels ist seine Fähigkeit zur Isolation von Ressourcen und Prozessen, um eine stabile und sichere Betriebsumgebung zu gewährleisten. Diese Isolation wurde in Linux durch die Einführung von Namespaces verbessert. Namespaces sind abgeschottete Instanzen für verschiedene Systemressourcen wie PID (Prozess-ID), Netzwerk und Dateisystem. Sie ermöglichen es verschiedenen Benutzern und Anwendungen, im selben System zu arbeiten, als wären sie die einzigen Anwender des Systems. Die Entwicklung des Linux-Kernels zur heutigen Namespace-Implementierung war ein schrittweiser Prozess, der über mehrere Jahre stattfand. Der erste Namespace, Mount Namespace, wurde im Jahr 2002 mit Kernel 2.4.19 eingeführt und im Laufe der Zeit wurden weitere hinzugefügt. Mit der Einführung des User-Namespaces in der Kernel-Version 3.8 wurde ein bedeutender Meilenstein erreicht, da dies eine ausreichende Unterstützung für Containerfunktionalitäten im Kernel bereitstellte. Die Version 3.8 des Linux-Kernels wurde am 18. Februar 2013 veröffentlicht und bereits im März desselben Jahres wurde die erste Version von Docker veröffentlicht. Auch wenn Docker inzwischen an Bedeutung verloren hat, ist es dennoch ein gängiges Synonym für Containerisierung.

7.2.1 Bedeutung für die IT-Branche

Die Einführung von Namespaces hatte einen entscheidenden Einfluss auf die IT-Branche. Sie sind das Fundament von Containerisierungstechnologien wie Docker und Kubernetes, welche die Entwicklung und den Betrieb von Anwendungen revolutioniert haben. Die Technologie hat nicht nur das Linux-Ökosystem erweitert, sondern auch weitreichende Auswirkungen auf die gesamte IT-Landschaft gehabt.

7.3 Control groups

cgroups, kurz für Control Groups, sind ein Feature des Linux-Kernels, das erstmals im Jahr 2007 mit dem Kernel-Release 2.6.24 eingeführt wurde.

7.3.1 Funktionalität von cgroups

Mit cgroups können Systemressourcen wie CPU-Zeit, Systemspeicher, Netzwerkbandbreite und I/O-Ressourcen überwacht und begrenzt werden. Es ermöglicht die Isolierung, Priorisierung und Buchführung der Ressourcennutzung für Prozessgruppen.

7.3.2 Auswirkungen auf die Containerisierung

cgroups haben gemeinsam mit Namespaces die Grundlagen für die moderne Containerisierung geschaffen. Sie ermöglichen die Isolierung und Ressourcenbegrenzung für Container, was für Technologien wie Docker und Kubernetes entscheidend ist. Durch diese Kombination können Container effizient Ressourcen teilen, während sie dennoch isoliert voneinander arbeiten.

7.4 Anwendung

Sowohl Namespaces als auch cgroups bieten eine Reihe von Werkzeugen und Befehlen, die für ihre Verwaltung und Überwachung nützlich sind. Diese Beispiele illustrieren grundlegende Möglichkeiten, wie man diese Kernfunktionen des Linux-Systems nutzen kann. Sie sind entscheidend für die fortschrittliche Ressourcenverwaltung und Isolierung in modernen IT-Systemen.

7.4.1 Beispielhafte Nutzung von Namespaces

7.4.2 Beispielhafte Nutzung von cgroups mit cgcreate und cgexec

7.4.3 Monitoring von cgroups mit cgstat