Profitbricks RAM, CPU Kerne und Storage unter Debian ohne Neustart erweitern

Das Profitbricks das Hot-Adding von Server-Ressourcen unterstützt ist im Cloud-Computing Bereich zwar nicht verwunderlich, aber trotzdem immer noch brutal hilfreich. Unter Windows werden die neuen Ressourcen sofort verfügbar gemacht, sobald sie provisioniert sind. Unter Linux sieht das anders aus. Aber auch hier ist kein Neustart erforderlich.

Wurde der Storage provisioniert, muss dieser erst partitioniert werden. Dazu habe ich bereits eine kleine Anleitung geschrieben. Aber nach dem Erstellen der neuen Partition mittels cfdisk müssen die Änderungen erst noch dem Kernel mitgeteilt werden. Das passiert bei einem Neustart automatisch, was wir aber nicht wollen. Also benötigen wir das Tool "parted", das wir mittels apt-get installieren:

apt-get install parted

Danach feuern wir einfach folgenden Befehl, und schon kann man mit der Partitionierung und dem Einhängen in LVM fortfahren:

partprobe

Ähnlich verhält es sich mit RAM. Wurde RAM provisioniert, sind die neuen RAM Segmente zwar verfügbar, aber offline. Das lässt sich leicht ändern. Mit folgendem Befehl zeigt sich eine Übersicht über die RAM-Segmente mit einer Info, ob diese Online oder Offline sind:

grep line /sys/devices/system/memory/*/state

Findet man hier Segmente die Offline sind (was sehr wahrscheinlich ist, wenn man grade frisches RAM "hinzuprovisioniert" hat, kann man dieses mit folgendem Befehl online setzen:

echo online >/sys/devices/system/memory/memory[number]/state

wobei memory[number] natürlich durch die zutreffende Segment-Nummer ersetzt werden muss, also z.B. memory181

Da das je nach RAM Erweiterung schon recht viel sein kann, macht es Sinn dazu ein Skript zu nutzen. Folgendes Skript stellt automatisch alle Segmente Online die noch auf Offline stehen.

#!/bin/bash
#grep line /sys/devices/system/memory/*/state |grep offline
#echo online >/sys/devices/system/memory/memory247/state

for file in /sys/devices/system/memory/memory*/state; do
        state=`head -n 1 $file`
        echo $state
        if [ "$state" == "offline" ]
                then
                echo online >$file
                echo "Memory @$file was $state and should be online now"
        fi
done

Einfach irgendwo (z.B. im Root Folder) speichern als setramonline.sh und ausführen über die Shell mit ./setramonline.sh

Ähnlich wie mit Memory funktioniert das auch mit CPU Kernen.

echo 1 > /sys/devices/system/cpu/cpuX/online

Das X in cpuX muss mit der laufenden Nummer des Prozessorkerns ausgetauscht werden. Mit ls -l im Verzeichnis /sys/devices/system/cpu/ kann man sehen, was zur Verfügung steht.