Freigeben über


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

Gilt für: ✔️ Linux-VMs

Um eine SWAP-Partition auf Virtuellen Azure Linux-Computern zu erstellen, müssen Sie cloud-init einrichten, um sie automatisch auf dem kurzlebigen Datenträger (Ressourcen) des virtuellen Computers zu erstellen. Der Ressourcendatenträger wird standardmäßig bereitgestellt /mnt . Sie befindet sich auf dem physischen Server, auf dem die Linux-VM gehostet wird und eine geringere Latenz aufweist. 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. Es ist wichtig zu beachten, dass der Ressourcendatenträger niemals zum Speichern normaler Daten verwendet werden sollte, da er nur temporärer Speicher ist. Wenn ein virtueller Computer auf einen anderen Host verschoben oder angehalten/deallocated wird, werden alle daten, die auf diesen Datenträger geschrieben wurden, 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 Ressourcendatenträgerformatierung und SWAP-Konfiguration in /etc/waagent.conf, da diese Aufgabe jetzt von Cloud-Init behandelt 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-Verteilungen finden Sie unter "Aktualisieren des Azure Linux-Agents auf einem virtuellen Computer".

Erstellen einer SWAP-Partition

Sie können eine SWAP-Partition erstellen, indem Sie eine der folgenden Optionen verwenden.

Notiz

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

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

    #!/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 für jeden 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. Erstellen Sie die ausführbare Datei des Skripts:

    chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
    
  3. Beenden Sie die VM, und starten Sie sie neu. Das Beenden und Starten des virtuellen Computers ist nur das erste Mal erforderlich, nachdem Sie die SWAP-Datei erstellt haben.

Option 2: Erstellen einer SWAP-Partition unter dem Ressourcendatenträgerpfad 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-, Ressourcendatenträgererstellungs- 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 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 benutzerdefinierten Ressourcendatenträgerpfad 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-, Ressourcendatenträgererstellungs- 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
    

    Notiz

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

  3. Beenden 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.