Auslagerungsdatei wird nach einem Linux-VM-Neustart nicht neu erstellt

Dieser Artikel enthält eine Lösung für ein Problem, bei dem die Auslagerungsdatei nach einem Neustart eines virtuellen Linux-Computers nicht neu erstellt werden kann.

Original Version des Produkts:   Azure, virtueller Computer mit Linux
Ursprüngliche KB-Nummer:   4577868

Problembeschreibung

Auf virtuellen Linux-Computern (VMS), die von Cloud-init bereitgestellt werden und auf denen der Microsoft Azure Linux-Agent (waagent) installiert ist, stellen Sie möglicherweise fest, dass die Auslagerungsdatei nach einem Neustart nicht neu erstellt wird.

Ursache

Dieses Problem tritt aufgrund einer Fehlkonfiguration auf, die bewirkt, dass sowohl der Azure Linux-Agent als auch die Cloud-init versuchen, die Auslagerungsdatei zu konfigurieren. Wenn Cloud-init für die Bereitstellung zuständig ist, muss die Auslagerungsdatei von Cloud-init so konfiguriert werden, dass nur ein Agent (entweder Cloud-init oder waagent) für die Bereitstellung aktiviert wird. Dieses Problem kann aufgrund des Zeitpunkts, zu dem die waagent-Daemons gestartet werden, vorübergehend auftreten.

Lösung

Führen Sie die folgenden Schritte aus, um dieses Problem zu beheben:

  1. Deaktivieren Sie die Formatierung von Ressourcen Datenträgern, und tauschen Sie dann die Konfiguration in der waagent-Konfigurationsdatei aus: /etc/waagent.conf . Führen Sie dazu die Methode Cloud-init aus:

    # Format if unformatted. If 'n', resource disk will not be mounted. ResourceDisk.Format=n 
    # Create and use swapfile on resource disk. ResourceDisk.EnableSwap=n** 
    
  2. Stellen Sie sicher, dass der Azure Linux-Agent nicht versucht, den temporären Datenträger bereitzustellen. Dies liegt daran, dass die Aufgabe in der Regel von Cloud-init verarbeitet wird. Legen Sie die Parameter wie folgt fest:

    # vi /etc/waagent.conf 
    #Mount point for the resource disk 
    ResourceDisk.MountPoint=/mnt 
    
    #Create and use swapfile on resource disk. 
    ResourceDisk.EnableSwap=n 
    
    # Create and use swapfile on resource disk. 
    ResourceDisk.EnableSwap=n 
    
    #Size of the swapfile. 
    ResourceDisk.SwapSizeMB=0
    
  3. Starten Sie den Azure Linux-Agent neu. Informationen zu den Neustart Befehlen für verschiedene Linux-Distributionen finden Sie unter How to Update the Azure Linux Agent on a VM .

  4. Stellen Sie sicher, dass der VM so konfiguriert ist, dass eine Auslagerungsdatei mithilfe von Cloud-init erstellt wird:

    1. Fügen Sie das folgende Skript zu hinzu /var/lib/cloud/scripts/per-boot .

      root@ub1804-ephemeral:/var/lib/cloud/scripts/per-boot# cat create_swapfile.sh
      #!/bin/sh
      if [ ! -f '/mnt/swapfile' ]; then
      fallocate --length 2GiB /mnt/swapfile    --> Here, set the swapsize as necessary.
      chmod 600 /mnt/swapfile
      mkswap /mnt/swapfile
      swapon /mnt/swapfile
      swapon -a ; fi
      
    2. Machen Sie die Datei mit dem # chmod +x create_swapfile.sh Befehl ausführbar.

    3. Starten Sie den Server neu, und überprüfen Sie die Swap-Aktivierung. Hier ist ein Beispiel für die Aktivierung der Swap-Funktion:

      root@ub1804-ephemeral:/var/lib/cloud/scripts/per-boot# free -m 
      total used free shared buff/cache available 
      Mem: 7953 296 7384 0 272 7412 
      Swap: 2047 0 2047
      

Um das Problem zu isolieren, vergleichen Sie die Protokolle von /var/log/waagent.log und /var/log/cloud-init.log für den Neustart-Zeitrahmen.

Um diese Situation vollständig zu vermeiden, stellen Sie die VM mithilfe der benutzerdefinierten Swap-Konfigurationsdaten während der Bereitstellung bereit. Weitere Informationen finden Sie unter use Cloud-init to configure a Swap Partition on a Linux VM.