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ń wierszenabled=0
naenabled=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.
W środkowym okienku Menedżera funkcji Hyper-V wybierz maszynę wirtualną.
Wybierz pozycję Połącz , aby otworzyć okno dla maszyny wirtualnej.
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.
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 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
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo chkconfig network on
Zainstaluj program
python-pyasn1
: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 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.Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. To ustawienie jest zwykle ustawieniem domyślnym.
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ęcieNetworkManager
pakietów iNetworkManager-gnome
, 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) 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.
Anulowanie aprowizacji maszyny wirtualnej i przygotowanie jej do aprowizacji na platformie Azure:
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
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
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Wybierz pozycję Połącz, 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 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
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo chkconfig network on
python-pyasn1
Zainstaluj pakiet:sudo yum install python3-pyasn1
Wyczyść bieżące metadane yum i zainstaluj 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 wykonać ten krok, otwórz
/etc/default/grub
plik w edytorze tekstów i edytujGRUB_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.Po zakończeniu edytowania
/etc/default/grub
ponownie skompiluj konfigurację grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. To ustawienie jest zwykle ustawieniem domyślnym.
Zainstaluj agenta i zależności systemu Linux platformy Azure:
sudo yum install WALinuxAgent sudo systemctl enable waagent
Zainstaluj w
cloud-init
celu obsługi aprowizacji:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
Skonfiguruj
waagent
dla programucloud-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
Konfiguracja zamiany:
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
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
- Przekaż ten kod jako konfigurację
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.
Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.
Powiązana zawartość
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.