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ć.
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
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
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.
Utwórz plik wykonywalny skryptu:
chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
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
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
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
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
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
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.
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.