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. Istnieje wiele narzędzi do tworzenia plików vhd, na przykład rozwiązania wirtualizacji, takiego jak Hyper-V. Aby uzyskać instrukcje, zobacz Instalowanie roli funkcji Hyper-V i Konfigurowanie maszyny wirtualnej.

Informacje o instalacji systemu Oracle Linux

  • Zobacz również Ogólne uwagi dotyczące instalacji systemu Linux, aby uzyskać więcej wskazówek dotyczących przygotowywania systemu Linux na platformę Azure.
  • 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.
  • UEK2 firmy Oracle nie jest obsługiwany w funkcji Hyper-V i na platformie Azure, ponieważ nie zawiera 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 polecenia cmdlet convert-vhd.
  • Wymagana jest obsługa jądra do instalowania systemów plików 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 zalecamy używanie partycji standardowych, a nie LVM (często domyślnych 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że być używany na dyskach danych, jeśli jest to preferowane.
  • 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 ma głównie wpływ na starsze dystrybucje przy użyciu 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 pierwotnego 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) i zmień wiersz enabled=0 na enabled=1 [ ol6_addons] lub [ol7_addons] w tym pliku.

Oracle Linux 6.X

Ważne

Należy pamiętać, że system Oracle Linux 6.x jest już EOL. System Oracle Linux w wersji 6.10 ma dostępną obsługę rozwiązania ELS, która zakończy się 07.2024.

Aby maszyna wirtualna działała 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. Kliknij Połączenie, aby otworzyć okno dla maszyny wirtualnej.

  3. Odinstaluj menedżera sieci, uruchamiając następujące polecenie:

    sudo rpm -e --nodeps NetworkManager
    

    Uwaga

    Jeśli pakiet nie został jeszcze zainstalowany, to polecenie kończy się niepowodzeniem z komunikatem o błędzie. Ta wiadomość jest oczekiwana.

  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 ujmowania, aby uniknąć generowania reguł statycznych dla interfejsów Ethernet. Te reguły mogą powodować problemy podczas klonowania maszyny wirtualnej na platformie Microsoft 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 uruchamia się w czasie rozruchu, uruchamiając następujące polecenie:

    sudo chkconfig network on
    
  8. Zainstaluj plik python-pyasn1, uruchamiając następujące polecenie:

    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 to zrobić, otwórz plik "/boot/grub/menu.lst" 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 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 chcemy, aby wszystkie dzienniki były wysyłane do portu szeregowego.

    W crashkernel razie potrzeby można pozostawić tę opcję skonfigurowaną, ale należy pamiętać, że ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  10. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. Jest to zwykle wartość domyślna.

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

    sudo yum install WALinuxAgent
    

    Zainstalowanie pakietu WALinuxAgent usuwa pakiety NetworkManager i NetworkManager-gno, 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) odpowiednio zmodyfikuj następujące parametry w pliku /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. Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją do aprowizacji na platformie Azure:

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. Kliknij 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

Zmiany w systemie Oracle Linux 7

Przygotowywanie maszyny wirtualnej Oracle Linux 7 dla platformy Azure jest podobne do systemu Oracle Linux 6, jednak warto zauważyć kilka znaczących różnic:

  • pomoc techniczna platformy Azure Oracle Linux z niezłamanym jądrem przedsiębiorstwa (UEK) lub jądrem zgodnym z systemem Red Hat. Zalecany jest system 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 nie został usunięty.
  • Program GRUB2 jest teraz używany jako domyślny moduł ładujący, więc procedura edytowania parametrów jądra została zmieniona (zobacz poniżej).
  • System plików XFS jest teraz domyślnym systemem plików. W razie potrzeby można nadal używać systemu plików ext4.

Kroki konfiguracji

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

  2. Kliknij Połączenie, 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 ujmowania, aby uniknąć generowania reguł statycznych dla interfejsów Ethernet. Te reguły mogą powodować problemy podczas klonowania maszyny wirtualnej na platformie Microsoft 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 uruchamia się w czasie rozruchu, uruchamiając następujące polecenie:

    sudo chkconfig network on
    
  7. Zainstaluj pakiet python-pyasn1, uruchamiając następujące polecenie:

    sudo yum install python3-pyasn1
    
  8. Uruchom następujące polecenie, aby wyczyścić bieżące metadane yum i zainstalować 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 to zrobić, otwórz plik "/etc/default/grub" w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr, na przykład:

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

    Zapewni to również wysyłanie wszystkich komunikatów konsoli 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 sieciowych w systemie Oracle Linux 7 z niezłamanym jądrem przedsiębiorstwa. Oprócz powyższych zaleca się usunięcie następujących parametrów:

       rhgb quiet crashkernel=auto
    

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

    Opcja crashkernel może zostać skonfigurowana w razie potrzeby, ale należy pamiętać, że ten parametr zmniejszy ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej, co może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  10. Po zakończeniu edycji "/etc/default/grub" na powyższe uruchom następujące polecenie, aby ponownie skompilować 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. Jest to zwykle wartość domyślna.

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

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

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. Konfigurowanie waagent dla pakietu 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. Zamień konfigurację. Nie twórz miejsca wymiany na dysku systemu operacyjnego.

    Wcześniej agent systemu Linux platformy Azure 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. Jednak jest to teraz obsługiwane przez cloud-init, nie można używać agenta systemu Linux do formatowania dysku zasobu tworzenia pliku zamiany, zmodyfikuj następujące parametry odpowiednio/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
    

    Jeśli chcesz zainstalować, sformatować i utworzyć zamianę, możesz wykonać następujące czynności:

    • Przekaż to jako konfigurację cloud-init za każdym razem, gdy tworzysz maszynę wirtualną
    • Użyj dyrektywy cloud-init wypiekanej do obrazu, która zrobi to za każdym razem, gdy maszyna wirtualna zostanie utworzona:
    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. Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją 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. Kliknij pozycję Akcja —> zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.

Następne kroki

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.