Freigeben über


Erstellen einer SWAP-Partition für eine Azure Linux-VM

Zum Erstellen einer SWAP-Partition auf Azure Linux-VMs müssen Sie cloud-init so einrichten, dass sie automatisch auf dem kurzlebigen (Ressourcen-)Datenträger des virtuellen Computers erstellt wird. Der Ressourcendatenträger wird standardmäßig unter /mnt eingebunden. Sie befindet sich auf dem physischen Server, auf dem die Linux-VM gehostet wird, und weist eine geringere Latenz auf. Es wird nicht empfohlen, SWAP-Partitionen auf Betriebssystemdatenträgern oder Datenträgern zu erstellen, die sich auf die Leistung des Betriebssystems und der Apps auswirken können. Beachten Sie, dass der Ressourcendatenträger niemals zum Speichern regulärer Daten verwendet werden sollte, da es sich nur um temporären Speicher handelt. Wenn eine VM auf einen anderen Host verschoben oder beendet/die Zuordnung aufgehoben wird, werden alle auf diesen Datenträger geschriebenen Daten zurückgesetzt. Es wird empfohlen, den Ressourcendatenträger nur für Daten zu verwenden, die entfernt werden können, z. B. SWAP und Zwischenspeichern von Dateien. Weitere Informationen finden Sie unter Temporärer Datenträger.

Deaktivieren der SWAP-Erstellung in der waagent-Konfiguration

Wenn die SWAP-Erstellung in /etc/waagent.conf konfiguriert ist, müssen Sie sie deaktivieren.

  1. Deaktivieren Sie die Formatierung von Ressourcendatenträgern und die SWAP-Konfiguration in /etc/waagent.conf, da diese Aufgabe jetzt von Cloud-Init verarbeitet wird. Legen Sie die Parameter wie folgt fest:

    # Format if unformatted. If 'n', resource disk will not be mounted.
    ResourceDisk.Format=n
    
    # Create and use SWAPfile on resource disk.
    ResourceDisk.EnableSWAP=n
    
    #Mount point for the resource disk
    ResourceDisk.MountPoint=/mnt
    
    #Size of the SWAPfile.
    ResourceDisk.SWAPSizeMB=0
    
  2. Starten Sie den Azure Linux-Agent neu. Informationen zu den Neustartbefehlen für verschiedene Linux-Distributionen finden Sie unter Aktualisieren des Azure Linux-Agents auf einem virtuellen Computer.

Erstellen einer SWAP-Partition

Sie können eine SWAP-Partition mit einer der folgenden Optionen erstellen.

Hinweis

Wenn eine SWAP-Partition erstellt wird, wird auch eine Auslagerungsdatei darauf erstellt.

Option 1: Erstellen einer SWAP-Partition unter dem Ressourcen- oder benutzerdefinierten Datenträgerpfad mithilfe von Skripts
  1. Erstellen Sie mit dem folgenden Skript ein SWAP-Erstellungsskript mit dem Namen swap.sh unter /var/lib/cloud/scripts/per-boot :

    #!/bin/sh
    
    # Percent of space on the ephemeral disk to dedicate to swap. Here 30% is being used. Modify as appropriate.
    PCT=0.3
    
    # Location of the swap file. Modify as appropriate based on the location of the ephemeral disk.
    LOCATION=/mnt
    
    if [ ! -f ${LOCATION}/swapfile ]
    then
    
        # Get size of the ephemeral disk and multiply it by the percent of space to allocate
        size=$(/bin/df -m --output=target,avail | /usr/bin/awk -v percent="$PCT" -v pattern=${LOCATION} '$0 ~ pattern {SIZE=int($2*percent);print SIZE}')
        echo "$size MB of space allocated to swap file"
    
         # Create an empty file first and set correct permissions
        /bin/dd if=/dev/zero of=${LOCATION}/swapfile bs=1M count=$size
        /bin/chmod 0600 ${LOCATION}/swapfile
    
        # Make the file available to use as swap
        /sbin/mkswap ${LOCATION}/swapfile
    fi
    
    # Enable swap
    /sbin/swapon ${LOCATION}/swapfile
    /sbin/swapon -a
    
    # Display current swap status
    /sbin/swapon -s
    

    Das Skript wird bei jedem Start ausgeführt und weist 30 % des verfügbaren Speicherplatzes auf dem Ressourcendatenträger zu. Sie können die Werte basierend auf Ihrer Situation anpassen.

  2. Machen Sie das Skript ausführbar:

    chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
    
  3. Beenden und starten Sie den virtuellen Computer. Das Beenden und Starten des virtuellen Computers ist nur beim ersten Mal erforderlich, nachdem Sie die SWAP-Datei erstellt haben.

Option 2: Erstellen einer SWAP-Partition unter dem Pfad des Ressourcendatenträgers mithilfe von cloud-init
  1. Erstellen Sie die CLOUD_CFG Variable in /systemd/system.conf , um swap und den Ressourcendatenträger festzulegen:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Erstellen Sie eine YAML-Datei, die SWAP, die Erstellung von Ressourcendatenträgern und Bereitstellungspunkte festlegt:

    sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
    #cloud-config
    disk_setup:
      ephemeral0:
        table_type: mbr
        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,x-systemd.device-timeout=2", "0", "0"]
    EOF
    
  3. Beenden Und starten Sie den virtuellen Computer, oder stellen Sie ihn erneut bereit, um die SWAP-Partition auf dem Ressourcendatenträger zu erstellen.

Option 3: Erstellen einer SWAP-Partition unter dem Pfad des benutzerdefinierten Ressourcendatenträgers mithilfe von cloud-init
  1. Erstellen Sie die CLOUD_CFG Variable in /systemd/system.conf , um swap und den Ressourcendatenträger festzulegen:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Erstellen Sie eine YAML-Datei, die SWAP, die Erstellung von Ressourcendatenträgern und benutzerdefinierte Bereitstellungspunkte festlegt ("azure" ist ein Beispiel):

    sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
    #cloud-config
    disk_setup:
      ephemeral0:
        table_type: mbr
        layout: [66, [33, 82]]
        overwrite: True
    fs_setup:
      - device: ephemeral0.1
        filesystem: ext4
      - device: ephemeral0.2
        filesystem: swap
    mounts:
      - ["ephemeral0.1", "/azure"]
      - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
    EOF
    

    Hinweis

    Stellen Sie sicher, dass der benutzerdefinierte Bereitstellungspunkt an dem in der YAML-Datei angegebenen Speicherort vorhanden ist.

  3. Beenden Und starten Sie den virtuellen Computer, oder stellen Sie ihn erneut bereit, um die SWAP-Partition auf dem Ressourcendatenträger zu erstellen.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.