Udostępnij za pośrednictwem


Tworzenie partycji SWAP dla maszyny wirtualnej z systemem Linux platformy Azure

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

Aby utworzyć partycję SWAP na maszynach wirtualnych z systemem Linux platformy Azure, należy skonfigurować plik cloud-init, aby automatycznie utworzyć partycję na dysku efemerycznym (zasobie) maszyny wirtualnej. Dysk zasobu jest instalowany /mnt domyślnie. Znajduje się na serwerze fizycznym, na którym jest hostowana maszyna wirtualna z systemem Linux i ma mniejsze opóźnienie. Nie zaleca się tworzenia partycji SWAP na dyskach systemu operacyjnego lub dyskach danych, które mogą mieć wpływ na wydajność systemu operacyjnego i aplikacji. Należy pamiętać, że dysk zasobu nigdy nie powinien być używany do przechowywania zwykłych danych, ponieważ jest to tylko magazyn tymczasowy. Po przeniesieniu maszyny wirtualnej do innego hosta lub zatrzymaniu/cofnięciu przydziału wszystkie dane zapisane na tym dysku zostaną wyczyszczone. Zaleca się używanie dysku zasobów tylko dla danych, które można usunąć, takich jak SWAP i buforowanie plików. Aby uzyskać więcej informacji, zobacz Dysk tymczasowy.

Wyłączanie tworzenia swap w konfiguracji waagent

Jeśli tworzenie SWAP jest skonfigurowane w pliku /etc/waagent.conf, należy go wyłączyć.

  1. Wyłącz formatowanie dysku zasobu i konfigurację SWAP w pliku /etc/waagent.conf, ponieważ to zadanie jest teraz obsługiwane przez pakiet Cloud-Init. Ustaw parametry w następujący sposób:

    # 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. Uruchom ponownie agenta systemu Linux platformy Azure. Aby uzyskać informacje na temat poleceń ponownego uruchamiania dla różnych dystrybucji systemu Linux, zobacz Jak zaktualizować agenta systemu Linux na maszynie wirtualnej .

Tworzenie partycji SWAP

Partycję SWAP można utworzyć przy użyciu jednej z następujących opcji.

Uwaga

Po utworzeniu partycji SWAP zostanie również utworzony plik zamiany.

Opcja 1. Tworzenie partycji SWAP w ramach zasobu lub niestandardowej ścieżki dysku przy użyciu skryptów
  1. Utwórz skrypt tworzenia SWAP o nazwie swap.sh w obszarze /var/lib/cloud/scripts/per-boot za pomocą następującego skryptu:

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

    Skrypt zostanie wykonany na każdym rozruchu i przydzieli 30% dostępnego miejsca na dysku zasobu. Możesz dostosować wartości w zależności od sytuacji.

  2. Utwórz plik wykonywalny skryptu:

    chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
    
  3. Zatrzymaj i uruchom maszynę wirtualną. Zatrzymywanie i uruchamianie maszyny wirtualnej jest konieczne tylko po raz pierwszy po utworzeniu pliku SWAP.

Opcja 2. Tworzenie partycji SWAP w ścieżce dysku zasobu przy użyciu pakietu cloud-init
  1. Utwórz zmienną CLOUD_CFG w pliku /systemd/system.conf , aby ustawić zarówno dysk SWAP, jak i dysk zasobu:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Utwórz plik YAML, który ustawia swap, tworzenie dysku zasobów i punkty instalacji:

    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. Zatrzymaj i uruchom maszynę wirtualną lub ponownie wdróż ją, aby utworzyć partycję SWAP na dysku zasobu.

Opcja 3. Tworzenie partycji SWAP w ramach niestandardowej ścieżki dysku zasobu przy użyciu pakietu cloud-init
  1. Utwórz zmienną CLOUD_CFG w pliku /systemd/system.conf , aby ustawić zarówno dysk SWAP, jak i dysk zasobu:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. Utwórz plik YAML, który ustawia swap, tworzenie dysku zasobów i niestandardowe punkty instalacji ("azure" jest przykładem):

    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
    

    Uwaga

    Upewnij się, że niestandardowy punkt instalacji istnieje w lokalizacji określonej w pliku YAML.

  3. Zatrzymaj i uruchom maszynę wirtualną lub ponownie wdróż ją, aby utworzyć partycję SWAP na dysku zasobu.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pomoc techniczną społeczności platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.