Creare una partizione SWAP per una macchina virtuale Linux di Azure

Si applica a: ✔️ macchine virtuali Linux

Per creare una partizione SWAP in macchine virtuali Linux di Azure, è necessario configurare cloud-init per crearla automaticamente nel disco temporaneo (risorsa) della macchina virtuale. Il disco delle risorse viene montato per /mnt impostazione predefinita. Si trova nel server fisico in cui è ospitata la macchina virtuale Linux e ha una latenza inferiore. Non è consigliabile creare partizioni SWAP su dischi del sistema operativo o dischi dati che potrebbero influire sulle prestazioni del sistema operativo e delle app. È importante ricordare che il disco delle risorse non deve mai essere usato per archiviare dati regolari, perché è solo un archivio temporaneo. Quando una macchina virtuale viene spostata in un altro host o arrestata/deallocata, tutti i dati scritti in questo disco verranno cancellati. È consigliabile usare il disco delle risorse solo per i dati che possono essere rimossi, ad esempio SWAP e i file di memorizzazione nella cache. Per altre informazioni, vedere Disco temporaneo.

Disabilitare la creazione swap nella configurazione di waagent

Se la creazione di SWAP è configurata in /etc/waagent.conf, è necessario disabilitarla.

  1. Disabilitare la formattazione del disco delle risorse e la configurazione SWAP all'interno di /etc/waagent.conf, perché questa attività è ora gestita da Cloud-Init. Impostare i parametri come segue:

    # 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. Riavviare l'agente Linux di Azure. Per informazioni sui comandi di riavvio per distribuzioni Linux diverse, vedere Come aggiornare l'agente Linux di Azure in una macchina virtuale .

Creare una partizione SWAP

È possibile creare una partizione SWAP usando una delle opzioni seguenti.

Nota

Quando viene creata una partizione SWAP, viene creato anche un file di scambio.

Opzione 1: Creare una partizione SWAP nella risorsa o nel percorso del disco personalizzato usando script
  1. Creare uno script di creazione SWAP denominato swap.sh in /var/lib/cloud/scripts/per-boot con lo script seguente:

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

    Lo script verrà eseguito in ogni avvio e alloca il 30% dello spazio disponibile nel disco delle risorse. È possibile personalizzare i valori in base alla situazione.

  2. Rendere eseguibile lo script:

    chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
    
  3. Arrestare e avviare la macchina virtuale. L'arresto e l'avvio della macchina virtuale sono necessari solo la prima volta dopo la creazione del file SWAP.

Opzione 2: Creare una partizione SWAP nel percorso del disco delle risorse usando cloud-init
  1. Creare la CLOUD_CFG variabile in /systemd/system.conf per impostare sia SWAP che il disco delle risorse:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Creare un file YAML che imposta SWAP, la creazione del disco delle risorse e i punti di montaggio:

    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. Arrestare e avviare la macchina virtuale o ridistribuirla per creare la partizione SWAP sul disco delle risorse.

Opzione 3: Creare una partizione SWAP nel percorso del disco delle risorse personalizzato usando cloud-init
  1. Creare la CLOUD_CFG variabile in /systemd/system.conf per impostare sia SWAP che il disco delle risorse:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Creare un file YAML che imposta SWAP, la creazione del disco delle risorse e i punti di montaggio personalizzati ("azure" è un esempio):

    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
    

    Nota

    Assicurarsi che il punto di montaggio personalizzato esista nel percorso specificato nel file YAML.

  3. Arrestare e avviare la macchina virtuale o ridistribuirla per creare la partizione SWAP sul disco delle risorse.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.