Dela via


Skapa en SWAP-partition för en virtuell Azure Linux-dator

Gäller för: ✔️ Virtuella Linux-datorer

Om du vill skapa en SWAP-partition på virtuella Azure Linux-datorer måste du konfigurera cloud-init för att automatiskt skapa den på den virtuella datorns tillfälliga disk (resurs). Resursdisken monteras under /mnt som standard. Den finns på den fysiska servern där den virtuella Linux-datorn finns och har lägre svarstid. Vi rekommenderar inte att du skapar SWAP-partitioner på OS-diskar eller datadiskar som kan påverka operativsystemets och apparnas prestanda. Det är viktigt att komma ihåg att resursdisken aldrig ska användas för att lagra vanliga data eftersom det bara är tillfällig lagring. När en virtuell dator flyttas till en annan värd eller stoppas/frigörs rensas alla data som skrivs till den här disken. Vi rekommenderar att du endast använder resursdisken för data som kan tas bort, till exempel SWAP- och cachelagringsfiler. Mer information finns i Tillfällig disk.

Inaktivera skapande av SWAP i waagent-konfiguration

Om swap-skapandet har konfigurerats i /etc/waagent.conf måste du inaktivera det.

  1. Inaktivera resursdiskformatering och SWAP-konfiguration i /etc/waagent.conf, eftersom den här uppgiften nu hanteras av Cloud-Init. Ange parametrarna på följande sätt:

    # 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. Starta om Azure Linux-agenten. Mer information om omstartskommandona för olika Linux-distributioner finns i Uppdatera Azure Linux-agenten på en virtuell dator .

Skapa en SWAP-partition

Du kan skapa en SWAP-partition med något av följande alternativ.

Kommentar

När en SWAP-partition skapas skapas även en växlingsfil på den.

Alternativ 1: Skapa en SWAP-partition under resursen eller den anpassade disksökvägen med hjälp av skript
  1. Skapa ett SWAP-skript med namnet swap.sh under /var/lib/cloud/scripts/per-boot med följande 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
    

    Skriptet körs vid varje start och allokerar 30 % av det tillgängliga utrymmet på resursdisken. Du kan anpassa värdena baserat på din situation.

  2. Gör skriptet körbart:

    chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
    
  3. Stoppa och starta den virtuella datorn. Det är bara nödvändigt att stoppa och starta den virtuella datorn första gången när du har skapat SWAP-filen.

Alternativ 2: Skapa en SWAP-partition under resursdisksökvägen med hjälp av cloud-init
  1. Skapa variabeln CLOUD_CFG i /systemd/system.conf för att ange både SWAP och resursdisken:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Skapa en YAML-fil som anger SWAP, skapande av resursdiskar och monteringspunkter:

    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. Stoppa och starta den virtuella datorn eller distribuera den igen för att skapa SWAP-partitionen på resursdisken.

Alternativ 3: Skapa en SWAP-partition under den anpassade resursdisksökvägen med hjälp av cloud-init
  1. Skapa variabeln CLOUD_CFG i /systemd/system.conf för att ange både SWAP och resursdisken:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Skapa en YAML-fil som anger SWAP, skapande av resursdiskar och anpassade monteringspunkter ("azure" är ett exempel):

    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
    

    Kommentar

    Kontrollera att den anpassade monteringspunkten finns på den plats som anges i YAML-filen.

  3. Stoppa och starta den virtuella datorn eller distribuera den igen för att skapa SWAP-partitionen på resursdisken.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.