Compartir a través de


Creación de una partición SWAP para una máquina virtual Linux de Azure

Para crear una partición SWAP en máquinas virtuales Linux de Azure, debe configurar cloud-init para crearla automáticamente en el disco efímero (recurso) de la máquina virtual. El disco de recursos se monta en de /mnt forma predeterminada. Se encuentra en el servidor físico donde se hospeda la máquina virtual Linux y tiene una latencia menor. No se recomienda crear particiones SWAP en discos del sistema operativo o discos de datos que puedan afectar al rendimiento del sistema operativo y las aplicaciones. Es importante recordar que el disco de recursos nunca debe usarse para almacenar datos normales, ya que solo es almacenamiento temporal. Cuando una máquina virtual se mueve a otro host o se detiene o desasigna, se borrarán los datos escritos en este disco. Se recomienda usar el disco de recursos solo para los datos que se pueden quitar, como SWAP y los archivos de almacenamiento en caché. Para obtener más información, consulte Disco temporal.

Deshabilitación de la creación de SWAP en la configuración de waagent

Si la creación de SWAP está configurada en /etc/waagent.conf, debe deshabilitarla.

  1. Deshabilite el formato del disco de recursos y la configuración swap en /etc/waagent.conf, ya que esta tarea ahora la controla Cloud-Init. Establezca los parámetros como se indica a continuación:

    # 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. Reinicie el agente de Linux de Azure. Consulte Actualización del agente linux de Azure en una máquina virtual para obtener información sobre los comandos de reinicio para diferentes distribuciones de Linux.

Creación de una partición SWAP

Puede crear una partición SWAP mediante una de las siguientes opciones.

Nota:

Cuando se crea una partición SWAP, también se crea un archivo de intercambio en ella.

Opción 1: Crear una partición SWAP en la ruta de acceso del disco personalizado o del recurso mediante scripts
  1. Cree un script de creación swap denominado swap.sh en /var/lib/cloud/scripts/per-boot con el siguiente 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
    

    El script se ejecutará en cada arranque y asignará el 30 % del espacio disponible en el disco de recursos. Puede personalizar los valores en función de su situación.

  2. Haga que el script sea ejecutable:

    chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
    
  3. Detenga e inicie la máquina virtual. La detención e inicio de la máquina virtual solo es necesaria la primera vez después de crear el archivo SWAP.

Opción 2: Crear una partición SWAP en la ruta de acceso del disco de recursos mediante cloud-init
  1. Cree la CLOUD_CFG variable en /systemd/system.conf para establecer SWAP y el disco de recursos:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Cree un archivo YAML que establezca SWAP, la creación de discos de recursos y los puntos de montaje:

    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. Detenga e inicie la máquina virtual o vuelva a implementarla para crear la partición SWAP en el disco de recursos.

Opción 3: Crear una partición SWAP en la ruta de acceso del disco de recursos personalizado mediante cloud-init
  1. Cree la CLOUD_CFG variable en /systemd/system.conf para establecer SWAP y el disco de recursos:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Cree un archivo YAML que establezca SWAP, la creación de discos de recursos y los puntos de montaje personalizados ("azure" es un ejemplo):

    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:

    Asegúrese de que el punto de montaje personalizado existe en la ubicación especificada en el archivo YAML.

  3. Detenga e inicie la máquina virtual o vuelva a implementarla para crear la partición SWAP en el disco de recursos.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.