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ń wierszenabled=0
naenabled=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.
W środkowym okienku Menedżera funkcji Hyper-V wybierz maszynę wirtualną.
Kliknij Połączenie, aby otworzyć okno dla maszyny wirtualnej.
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.
Utwórz plik o nazwie network w
/etc/sysconfig/
katalogu zawierającym następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
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
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
Upewnij się, że usługa sieciowa uruchamia się w czasie rozruchu, uruchamiając następujące polecenie:
sudo chkconfig network on
Zainstaluj plik python-pyasn1, uruchamiając następujące polecenie:
sudo yum install python-pyasn1
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.Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. Jest to zwykle wartość domyślna.
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.
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.
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
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
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Kliknij Połączenie, aby otworzyć okno konsoli dla maszyny wirtualnej.
Utwórz plik o nazwie network w
/etc/sysconfig/
katalogu zawierającym następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
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
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
Upewnij się, że usługa sieciowa uruchamia się w czasie rozruchu, uruchamiając następujące polecenie:
sudo chkconfig network on
Zainstaluj pakiet python-pyasn1, uruchamiając następujące polecenie:
sudo yum install python3-pyasn1
Uruchom następujące polecenie, aby wyczyścić bieżące metadane yum i zainstalować wszystkie aktualizacje:
sudo yum clean all sudo yum -y update
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.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
Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. Jest to zwykle wartość domyślna.
Zainstaluj agenta i zależności systemu Linux platformy Azure:
sudo yum install WALinuxAgent sudo systemctl enable waagent
Instalowanie pakietu cloud-init w celu obsługi aprowizacji
sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
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
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
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.
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.