Verwenden von „cloud-init“ zum Konfigurieren einer Swap-Partition auf einer Linux-VM

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem End-of-Life-Status (EOL) nähert. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS-Leitfaden für das Lebensende.

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

In diesem Artikel wird veranschaulicht, wie Sie cloud-init zum Konfigurieren der Swap-Partition auf verschiedenen Linux-Distributionen verwenden. Die Swap-Partition wurde traditionell vom Linux-Agent (WALA) konfiguriert – abhängig davon, für welche Distributionen eine Auslagerungsdatei benötigt wurde. In diesem Dokument wird das Vorgehen für die bedarfsgesteuerte Erstellung der Swap-Partition zur Bereitstellungszeit mit cloud-init beschrieben. Weitere Informationen zur nativen Funktionsweise von „cloud-init“ in Azure und zu den unterstützten Linux-Distributionen finden Sie in der Übersicht zu „cloud-init“.

Erstellen einer Swap-Partition für Ubuntu-basierte Images

In Azure werden für Ubuntu-Katalogimages standardmäßig keine Swap-Partitionen erstellt. Informationen zum Aktivieren der Konfiguration einer Swap-Partition während der VM-Bereitstellung mit „cloud-init“ finden Sie im Ubuntu-Wiki im AzureSwapPartitions-Dokument.

Erstellen einer Swap-Partition für Red Hat- und CentOS-basierte Images

Erstellen Sie in der aktuellen Shell eine Datei mit dem Namen cloud_init_swappart.txt, und fügen Sie die folgende Konfiguration ein. Erstellen Sie für dieses Beispiel die Datei in der Cloud Shell, nicht auf dem lokalen Computer. Dazu können Sie einen beliebigen Editor verwenden. Stellen Sie sicher, dass die gesamte cloud-init-Datei ordnungsgemäß kopiert wird, insbesondere die erste Zeile.

#cloud-config
disk_setup:
  ephemeral0:
    table_type: gpt
    layout: [66, [33,82]]
    overwrite: true
fs_setup:
  - device: ephemeral0.1
    filesystem: ext4
  - device: ephemeral0.2
    filesystem: swap
mounts:
  - ["ephemeral0.1", "/mnt"]
  - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service", "0", "0"]

Die Bereitstellung wird mit der nofail-Option erstellt, um sicherzustellen, dass der Startprozess auch dann fortgesetzt wird, wenn die Bereitstellung nicht erfolgreich abgeschlossen wurde.

Vor der Bereitstellung dieses Images müssen Sie mit dem Befehl az group create eine Ressourcengruppe erstellen. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort eastus.

az group create --name myResourceGroup --location eastus

Erstellen Sie nun mit dem Befehl az vm create eine VM, und geben Sie mit --custom-data cloud_init_swappart.txt die cloud-init-Datei an, wie im Folgenden gezeigt wird:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_swappart.txt \
  --generate-ssh-keys

Hinweis

Ersetzen Sie die Werte myResourceGroup, vmName und imageCIURN entsprechend. Stellen Sie sicher, dass ein Image mit Cloud-init ausgewählt ist.

Ändern eines bereits laufenden Computers

Wenn Sie Ihren Server bereits bereitgestellt haben und den Bereitstellungspunkt des kurzlebigen Speichers ändern möchten und einen Teil des Datenträgers als Swapspace konfigurieren möchten, führen Sie die folgenden Schritte aus.

Erstellen Sie die Cloud-Init-Konfigurationsdatei namens 00-azure-swap.cfg im Verzeichnis /etc/cloud/cloud.cfg.d mit dem folgenden Inhalt:

#cloud-config
disk_setup:
  ephemeral0:
    table_type: gpt
    layout: [66, [33,82]]
    overwrite: true
fs_setup:
  - device: ephemeral0.1
    filesystem: ext4
  - device: ephemeral0.2
    filesystem: swap
mounts:
  - ["ephemeral0.1", "/mnt"]
  - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service", "0", "0"]

Fügen Sie als Nächstes eine Zeile an die /etc/systemd/system.conf-Datei mit folgendem Inhalt an:

DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"

Hinweis

Der Name der Datei ist völlig willkürlich, er kann durch einen beliebigen Namen Ihrer Wahl ersetzt werden, es muss nur die Endung .cfg vorhanden sein, und stellen Sie sicher, dass Sie die Änderungen auch in der CLOUD_CFG-Parameterzeile berücksichtigen.

Nachdem die Änderungen vorgenommen wurden, muss der Computer neu zugewiesen oder neu bereitgestellt werden, damit die Änderungen wirksam werden.

Überprüfen der Erstellung einer Swap-Partition

Stellen Sie eine SSH-Verbindung mit der öffentlichen IP-Adresse Ihrer VM her, die in der Ausgabe über den vorherigen Befehl gezeigt wird. Geben Sie eigene Werte für user und publicIpAddress wie folgt ein:

ssh <user>@<publicIpAddress>

Nachdem Sie eine SSH-Verbindung mit der VM hergestellt haben, können Sie überprüfen, ob die Swap-Partition erstellt wurde.

sudo swapon -s

Die Ausgabe dieses Befehls sollte wie folgt aussehen:

Filename                Type        Size    Used    Priority
/dev/sdb2  partition   2494440 0   -1

Hinweis

Wenn für Ihr vorhandenes Azure-Image eine Swap-Partition konfiguriert wurde und Sie die Konfiguration der Swap-Partition für neue Images ändern möchten, müssen Sie die vorhandene Swap-Partition entfernen. Weitere Informationen finden Sie im Dokument zum Anpassen von Images für die Bereitstellung mit cloud-init.

Nächste Schritte

Weitere cloud-init-Beispiele für Änderungen an der Konfiguration finden Sie hier: