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.
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
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
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.
Rendere eseguibile lo script:
chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
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
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
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
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
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
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.
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.