Udostępnij za pośrednictwem


Przygotowywanie maszyny wirtualnej systemu Linux w środowisku Oracle dla platformy Azure

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

W tym artykule założono, że system operacyjny Oracle Linux został już zainstalowany na wirtualnym dysku twardym (VHD). Istnieje wiele narzędzi do tworzenia plików vhd. Przykładem jest rozwiązanie wirtualizacji, takie jak funkcja Hyper-V. Aby uzyskać instrukcje, zobacz Instalowanie roli funkcji Hyper-V i konfigurowanie maszyny wirtualnej.

Informacje o instalacji systemu Oracle Linux

  • Aby uzyskać więcej wskazówek dotyczących przygotowywania systemu Linux na platformę Azure, zobacz Ogólne informacje o instalacji systemu Linux.
  • Funkcja Hyper-V i pomoc techniczna platformy Azure Oracle Linux z niezniszczalnym jądrem przedsiębiorstwa (UEK) lub jądrem zgodnym z systemem Red Hat.
  • Funkcja UEK2 firmy Oracle nie jest obsługiwana w funkcji Hyper-V i na platformie Azure, ponieważ nie obejmuje wymaganych sterowników.
  • Format VHDX nie jest obsługiwany na platformie Azure, tylko stały dysk VHD. Dysk można przekonwertować na format VHD przy użyciu Menedżera funkcji Hyper-V lub convert-vhd polecenia cmdlet.
  • Wymagana jest obsługa jądra instalowania systemów plików funkcji zdefiniowanych przez użytkownika (UDF). Podczas pierwszego rozruchu na platformie Azure konfiguracja aprowizacji jest przekazywana do maszyny wirtualnej z systemem Linux za pośrednictwem nośnika sformatowanego przez użytkownika dołączonego do gościa. Agent systemu Linux platformy Azure musi mieć możliwość zainstalowania systemu plików UDF, aby odczytać jego konfigurację i aprowizować maszynę wirtualną.
  • Podczas instalowania systemu Linux zaleca się używanie partycji standardowych, a nie menedżera woluminów logicznych (LVM), który jest często domyślny dla wielu instalacji. Te partycje standardowe unikają konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli podczas rozwiązywania problemów należy dołączyć dysk systemu operacyjnego do innej maszyny wirtualnej. LVM lub RAID można również używać na dyskach danych.
  • Wersje jądra systemu Linux starsze niż 2.6.37 nie obsługują biblioteki NUMA w funkcji Hyper-V o większych rozmiarach maszyn wirtualnych. Ten problem dotyczy głównie starszych dystrybucji korzystających z nadrzędnego jądra Red Hat 2.6.32 i został rozwiązany w systemie Oracle Linux 6.6 lub nowszym.
  • Nie konfiguruj partycji wymiany na dysku systemu operacyjnego.
  • Wszystkie wirtualne dyski twarde na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 MB. Podczas konwertowania z dysku nieprzetworzonego na dysk VHD należy upewnić się, że rozmiar nieprzetworzonego dysku to wielokrotność 1 MB przed konwersją. Aby uzyskać więcej informacji, zobacz Informacje o instalacji systemu Linux.
  • Upewnij się, że Addons repozytorium jest włączone. Edytuj plik /etc/yum.repos.d/public-yum-ol6.repo(Oracle Linux 6) lub /etc/yum.repos.d/public-yum-ol7.repo(Oracle Linux 7). Zmień wiersz enabled=0 na enabled=1 [ol6_addons] lub [ol7_addons] w tym pliku.

Oracle Linux 6.X

Ważne

Pamiętaj, że system Oracle Linux 6.x jest już na koniec życia. System Oracle Linux w wersji 6.10 ma dostępną rozszerzoną pomoc techniczną dotyczącą cyklu życia, która kończy się w lipcu 2024 r.

Aby maszyna wirtualna została uruchomiona na platformie Azure, należy wykonać określone kroki konfiguracji w systemie operacyjnym.

  1. W środkowym okienku Menedżera funkcji Hyper-V wybierz maszynę wirtualną.

  2. Wybierz pozycję Połącz , aby otworzyć okno dla maszyny wirtualnej.

  3. Odinstaluj NetworkManager:

    sudo rpm -e --nodeps NetworkManager
    

    Uwaga

    Jeśli pakiet nie został jeszcze zainstalowany, to polecenie kończy się niepowodzeniem z komunikatem o błędzie. Ten komunikat jest oczekiwany.

  4. Utwórz plik o nazwie network w /etc/sysconfig/ katalogu zawierającym następujący tekst:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Utwórz plik o nazwie ifcfg-eth0 w /etc/sysconfig/network-scripts/ katalogu zawierającym następujący tekst:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Zmodyfikuj reguły udev, aby uniknąć generowania reguł statycznych dla interfejsów Ethernet. Te reguły mogą powodować problemy podczas klonowania maszyny wirtualnej na platformie Azure lub funkcji Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    
  7. Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:

    sudo chkconfig network on
    
  8. Zainstaluj program python-pyasn1:

    sudo yum install python-pyasn1
    
  9. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić więcej parametrów jądra dla platformy Azure. Aby wykonać ten krok, otwórz /boot/grub/menu.lst plik w edytorze tekstów i upewnij się, że jądro zawiera następujące parametry:

    console=ttyS0 earlyprintk=ttyS0
    

    To ustawienie zapewnia, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem.

    Oprócz powyższych kroków zalecamy usunięcie następujących parametrów:

    rhgb quiet crashkernel=auto
    

    Rozruch graficzny i cichy nie jest przydatny w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego.

    Jeśli crashkernel chcesz, można pozostawić opcję skonfigurowaną. Ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problemem dla mniejszych rozmiarów maszyn wirtualnych.

  10. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. To ustawienie jest zwykle ustawieniem domyślnym.

  11. Zainstaluj agenta systemu Linux platformy Azure, uruchamiając następujące polecenie. Najnowsza wersja to 2.0.15.

    sudo yum install WALinuxAgent
    

    WALinuxAgent Zainstalowanie pakietu spowoduje usunięcie NetworkManager pakietów iNetworkManager-gnome, jeśli nie zostały jeszcze usunięte, zgodnie z opisem w kroku 2.

  12. Nie twórz miejsca wymiany na dysku systemu operacyjnego.

    Agent systemu Linux platformy Azure może automatycznie skonfigurować miejsce wymiany przy użyciu lokalnego dysku zasobów dołączonego do maszyny wirtualnej po aprowizacji na platformie Azure. Dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony po anulowaniu aprowizacji maszyny wirtualnej. Po zainstalowaniu agenta systemu Linux platformy Azure (zobacz poprzedni krok) zmodyfikuj odpowiednio następujące parametry /etc/waagent.conf :

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: set this to whatever you need it to be.
    
  13. Anulowanie aprowizacji maszyny wirtualnej i przygotowanie jej do aprowizacji na platformie Azure:

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.


Oracle Linux 7.0 lub nowszy

Wykonaj kroki opisane w następnych sekcjach, jeśli używasz programu Oracle Linux 7.0 lub nowszego.

Zmiany w systemie Oracle Linux 7

Przygotowywanie maszyny wirtualnej z systemem Oracle Linux 7 dla platformy Azure jest podobne do systemu Oracle Linux 6, ale warto zauważyć kilka różnic:

  • pomoc techniczna platformy Azure Oracle Linux z niezłamanym jądrem przedsiębiorstwa (UEK) lub jądrem zgodnym z systemem Red Hat. Zalecamy używanie systemu Oracle Linux z UEK.
  • Pakiet NetworkManager nie powoduje już konfliktów z agentem systemu Linux platformy Azure. Ten pakiet jest instalowany domyślnie i zalecamy, aby go nie usuwać.
  • Program GRUB2 jest teraz używany jako domyślny moduł ładujący, więc procedura edytowania parametrów jądra została zmieniona. (Zobacz sekcję "Kroki konfiguracji".
  • System plików XFS jest teraz domyślnym systemem plików. Jeśli chcesz, system plików ext4 nadal może być używany.

Kroki w konfiguracji

  1. W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.

  2. Wybierz pozycję Połącz, aby otworzyć okno konsoli dla maszyny wirtualnej.

  3. Utwórz plik o nazwie network w /etc/sysconfig/ katalogu zawierającym następujący tekst:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Utwórz plik o nazwie ifcfg-eth0 w /etc/sysconfig/network-scripts/ katalogu zawierającym następujący tekst:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  5. Zmodyfikuj reguły udev, aby uniknąć generowania reguł statycznych dla interfejsów Ethernet. Te reguły mogą powodować problemy podczas klonowania maszyny wirtualnej na platformie Azure lub funkcji Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:

    sudo chkconfig network on
    
  7. python-pyasn1 Zainstaluj pakiet:

    sudo yum install python3-pyasn1
    
  8. Wyczyść bieżące metadane yum i zainstaluj wszystkie aktualizacje:

    sudo yum clean all
    sudo yum -y update
    
  9. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić więcej parametrów jądra dla platformy Azure. Aby wykonać ten krok, otwórz /etc/default/grub plik w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr . Na przykład:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Ta modyfikacja gwarantuje również, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem. Wyłącza również konwencje nazewnictwa kart interfejsów sieciowych w systemie Oracle Linux 7 za pomocą klucza UEK. Zalecamy również usunięcie następujących parametrów:

       rhgb quiet crashkernel=auto
    

    Rozruch graficzny i cichy nie jest przydatny w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego.

    Jeśli crashkernel chcesz, można pozostawić opcję skonfigurowaną. Ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problemem dla mniejszych rozmiarów maszyn wirtualnych.

  10. Po zakończeniu edytowania /etc/default/grubponownie skompiluj konfigurację grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  11. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. To ustawienie jest zwykle ustawieniem domyślnym.

  12. Zainstaluj agenta i zależności systemu Linux platformy Azure:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent
    
  13. Zainstaluj w cloud-init celu obsługi aprowizacji:

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. Skonfiguruj waagent dla programu cloud-init:

    sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
    sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
    
    sudo echo "Adding mounts and disk_setup to init stage"
    sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    
    if [[ -f /mnt/resource/swapfile ]]; then
    echo Removing swapfile - Oracle Linux uses a swapfile by default
    swapoff /mnt/swapfile
    rm /mnt/swapfile -f
    fi
    
    echo "Add console log file"
    cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # This tells cloud-init to redirect its stdout and stderr to
    # 'tee -a /var/log/cloud-init-output.log' so the user can see output
    # there without needing to look on the console.
    output: {all: '| tee -a /var/log/cloud-init-output.log'}
    EOF
    
  15. Konfiguracja zamiany:

    1. Nie twórz miejsca wymiany na dysku systemu operacyjnego.

      Wcześniej agent platformy Azure z systemem Linux był używany automatycznie do konfigurowania miejsca wymiany przy użyciu lokalnego dysku zasobów dołączonego do maszyny wirtualnej po aprowizacji maszyny wirtualnej na platformie Azure. cloud-init Jednak teraz obsługuje ten krok. Nie można używać agenta systemu Linux do formatowania dysku zasobu w celu utworzenia pliku wymiany. Zmodyfikuj odpowiednio następujące parametry /etc/waagent.conf :

      sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
      sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
      
    2. Jeśli chcesz zainstalować, sformatować i utworzyć zamianę, możesz wykonać następujące czynności:

      • Przekaż ten kod jako konfigurację cloud-init za każdym razem, gdy tworzysz maszynę wirtualną.
      • Aby wykonać ten krok za każdym razem, gdy maszyna wirtualna jest tworzona, użyj dyrektywy zapiętej cloud-init do obrazu:
      echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
      cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
      #cloud-config
      # Generated by Azure cloud image build
      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/resource"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  16. Anulowanie aprowizacji maszyny wirtualnej i przygotowanie jej do aprowizacji na platformie Azure:

    sudo cloud-init clean
    sudo rm -f /var/log/waagent.log
    sudo waagent -force -deprovision
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    

    Uwaga

    Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji.

  17. Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.

Teraz możesz przystąpić do tworzenia nowych maszyn wirtualnych na platformie Azure przy użyciu pliku vhd systemu Oracle Linux. Jeśli po raz pierwszy przekazujesz plik vhd na platformę Azure, zobacz Tworzenie maszyny wirtualnej z systemem Linux na podstawie dysku niestandardowego.