2020
November
23
2020

Flexiblere Container-Setups dank mehr Volumes

Wer sich mit Computern befasst, hantiert fast zwangsläufig mit "Festplatten" in den unterschiedlichsten Grössen und Formen: nebst der internen SSD beispielsweise mit externen Laufwerken, USB-Sticks und Speicherkarten. In der Cloud sind die "Volumes" das Pendant dazu, und cloudscale.ch unterstützte schon bisher das Anschliessen von mehreren SSD- und Bulk-Volumes an Ihre virtuellen Server. Ab sofort sind bis zu 128 Volumes möglich, was insbesondere bei der Automatisierung von Container-Setups neue Optionen eröffnet.

Root- und zusätzliche Volumes

Jeder Server bei cloudscale.ch verfügt über ein "root-Volume" auf NVMe-SSDs, das nach dem erstmaligen Starten das gewählte Betriebssystem enthält. Bei fast allen Images lässt sich die Grösse dieses Volumes beim Erstellen des Servers festlegen, so dass auch Ihre Daten auf diesem Volume Platz finden. Sollte Ihr Projekt und damit der Platzbedarf später wachsen, lässt sich das root-Volume einfach und im laufenden Betrieb weiter hochskalieren.

Daneben kann es sinnvoll sein, einen Teil der Daten auf separaten Volumes zu speichern. So bieten sich Bulk-Volumes an, wenn günstiger Speicherplatz benötigt wird und die Performance eine untergeordnete Rolle spielt, z.B. bei Archiv-Daten. Für eine Datenbank wiederum, die Sie logisch vom Rest des Systems separieren möchten, wäre ein zusätzliches SSD-Volume das Mittel der Wahl. Solche zusätzlichen Volumes können Sie ebenfalls gleich beim Erstellen eines Servers mit anlegen, oder sie später dem Server hinzufügen und bei Bedarf vergrössern. Darüber hinaus können zusätzliche Volumes jederzeit an einen anderen Server "umgehängt" oder gelöscht werden.

Persistent Volumes in Container-Setups

Eine besondere Bedeutung haben zusätzliche Volumes für moderne Container-Setups. Container bzw. Pods sind standardmässig flüchtig; werden sie durch eine neue Instanz oder eine neue Version ersetzt, sind die Daten normalerweise weg. Sollen die Daten jedoch erhalten bleiben, kann dem Pod ein "Persistent Volume" zugewiesen werden – ein zusätzliches Volume, um Daten dauerhaft zu speichern. Dank dem "Container Storage Interface" (CSI) lassen sich solche Persistent Volumes durch einen Container-Orchestrator wie Kubernetes automatisiert anlegen und direkt an den richtigen Node anhängen, so dass der dort laufende Pod darauf zugreifen kann.

cloudscale.ch unterstützt neu bis zu 128 Volumes pro virtuellem Server und bietet damit auch dichtgepackten Container-Setups genügend Spielraum. Skalieren Sie Ihren Cluster hoch und migrieren Sie Workloads zwischen den Nodes; via CSI werden die definierten "Persistent Volume Claims" (PVC) automatisch erfüllt und der Speicher steht am richtigen Ort zur Verfügung. Falls Sie unseren CSI-Treiber bereits verwenden, achten Sie darauf, diesen auf die neuste Version zu aktualisieren.

Technischer Hintergrund

Die Unterstützung von bis zu 128 Volumes pro virtuellem Server wurde möglich, indem wir die Technik im Hintergrund umgestellt haben: neu erstellte virtuelle Server verwenden für die Volumes virtio-scsi statt virtio-blk. Damit ist die Anzahl Volumes nicht mehr durch die Anzahl der unterstützten PCI-Devices limitiert. Zudem haben wir in OpenStack, auf dem unsere Cloud aufbaut, einen Bug gepatcht. Dieser bewirkte, dass – zusätzlich zur Limitierung der PCI-Devices – höchstens Volumes von vda bis vdz verwendet werden konnten, also maximal 26 an der Zahl.

Für Sie als Nutzer ändert sich nur die Benennung der Volumes: statt vda, vdb etc. finden Sie in Ihrem virtuellen Server neu das Volume sda und ggf. weitere sdX. Damit entfällt auch einer der Hauptunterschiede, die es beim Umstieg von einem physischen Computer auf einen Linux Cloud-Server zu beachten galt. Wird tatsächlich eine Vielzahl an Volumes genutzt, setzt sich die Nummerierung nach sdz mit sdaa fort, bis hin zu sddx beim aktuellen Maximum von 128 Volumes. Bitte prüfen Sie ggf. in Ihren Tools oder Scripts, dass bei Operationen auf Volumes und Partitionen die neuen Bezeichnungen verwendet werden.

Beispiel mit zwei Volumes in einem Ubuntu-Server:

ubuntu@my-server:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
[...]
sda       8:0    0   50G  0 disk
├─sda1    8:1    0 49.9G  0 part /
├─sda14   8:14   0    4M  0 part
└─sda15   8:15   0  106M  0 part /boot/efi
sdb       8:16   0  100G  0 disk
└─sdb1    8:17   0  100G  0 part
sr0      11:0    1  478K  0 rom

Mit bis zu 128 Volumes pro virtuellem Server sind Sie nun auch für grosse Container-Setups gerüstet. Die Nutzung von Kubernetes und CSI ist aber keine Voraussetzung; selbstverständlich kommt die zusätzliche Flexibilität auch anderen Anwendungsfällen zugute – von ausgefeilten LVM-Konfigurationen bis zur sauberen Trennung verschiedener Datenbestände.

Das richtige Volume für jeden Zweck!
Ihr cloudscale.ch-Team

Zurück zur Übersicht