Delen via


Een SWAP-partitie maken voor een Virtuele Linux-machine in Azure

Van toepassing op: ✔️ Virtuele Linux-machines

Als u een SWAP-partitie wilt maken op Virtuele Linux-machines in Azure, moet u cloud-init instellen om deze automatisch te maken op de tijdelijke schijf (resource) van de virtuele machine. De resourceschijf is standaard gekoppeld /mnt . Deze bevindt zich op de fysieke server waarop de Linux-VM wordt gehost en heeft een lagere latentie. Het wordt niet aanbevolen om SWAP-partities te maken op besturingssysteemschijven of gegevensschijven die van invloed kunnen zijn op de prestaties van het besturingssysteem en apps. Het is belangrijk te onthouden dat de resourceschijf nooit mag worden gebruikt voor het opslaan van normale gegevens, omdat dit alleen tijdelijke opslag is. Wanneer een virtuele machine naar een andere host wordt verplaatst of de toewijzing ervan is gestopt/opgeheven, worden alle gegevens die naar deze schijf worden geschreven, gewist. Het is raadzaam om de resourceschijf alleen te gebruiken voor gegevens die kunnen worden verwijderd, zoals SWAP- en cachingbestanden. Zie Tijdelijke schijf voor meer informatie.

SWAP maken uitschakelen in waagent-configuratie

Als het maken van wisselen is geconfigureerd in /etc/waagent.conf, moet u deze uitschakelen.

  1. Schakel resourceschijfopmaak en SWAP-configuratie in /etc/waagent.conf uit, omdat deze taak nu wordt verwerkt door Cloud-Init. Stel de parameters als volgt in:

    # 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. Start de Azure Linux-agent opnieuw. Zie Hoe u de Azure Linux-agent op een VIRTUELE machine bijwerkt voor informatie over de opdrachten voor opnieuw opstarten voor verschillende Linux-distributies.

Een SWAP-partitie maken

U kunt een SWAP-partitie maken met behulp van een van de volgende opties.

Notitie

Wanneer er een SWAP-partitie wordt gemaakt, wordt er ook een wisselbestand op gemaakt.

Optie 1: Maak een SWAP-partitie onder de resource of het aangepaste schijfpad met behulp van scripts
  1. Maak een SWAP-script met de naam swap.sh onder /var/lib/cloud/scripts/per-boot met het volgende script:

    #!/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
    

    Het script wordt uitgevoerd bij elke opstartbewerking en wijst 30% van de beschikbare ruimte op de resourceschijf toe. U kunt de waarden aanpassen op basis van uw situatie.

  2. Maak het uitvoerbare script:

    chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
    
  3. Stop en start de VIRTUELE machine. Het stoppen en starten van de virtuele machine is alleen de eerste keer nodig nadat u het SWAP-bestand hebt gemaakt.

Optie 2: Maak een SWAP-partitie onder het pad naar de resourceschijf met behulp van cloud-init
  1. Maak de CLOUD_CFG variabele in /systemd/system.conf om zowel SWAP als de resourceschijf in te stellen:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Maak een YAML-bestand waarmee SWAP, het maken van de resourceschijf en koppelpunten worden ingesteld:

    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. Stop en start de VIRTUELE machine of implementeer deze opnieuw om de SWAP-partitie op de resourceschijf te maken.

Optie 3: Maak een SWAP-partitie onder het pad naar de aangepaste resourceschijf met behulp van cloud-init
  1. Maak de CLOUD_CFG variabele in /systemd/system.conf om zowel SWAP als de resourceschijf in te stellen:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Maak een YAML-bestand waarmee SWAP, het maken van resources en aangepaste koppelpunten ('azure' is een voorbeeld):

    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
    

    Notitie

    Zorg ervoor dat het aangepaste koppelpunt bestaat op de locatie die is opgegeven in het YAML-bestand.

  3. Stop en start de VIRTUELE machine of implementeer deze opnieuw om de SWAP-partitie op de resourceschijf te maken.

Contact met ons opnemen voor ondersteuning

Als u vragen hebt of hulp nodig hebt, maakt u een ondersteuningsaanvraag of stelt u ondersteuning voor de Azure-community. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.