Przygotowywanie maszyny wirtualnej bazującej na systemie Red Hat dla platformy Azure
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy ✔️ ✔️ skalowania jednolite zestawy skalowania
Z tego artykułu dowiesz się, jak przygotować maszynę wirtualną z systemem Red Hat Enterprise Linux (RHEL) do użycia na platformie Azure. Wersje systemu RHEL omówione w tym artykule to 6.X, 7.X i 8.X. Funkcje hypervisor do przygotowania, które zostały omówione w tym artykule, to funkcja Hyper-V, maszyna wirtualna oparta na jądrze (KVM) i VMware.
Aby uzyskać więcej informacji na temat wymagań kwalifikacyjnych dotyczących udziału w programie Cloud Access firmy Red Hat, zobacz witrynę internetową red hat Cloud Access i running RHEL on Azure (Uruchamianie systemu RHEL na platformie Azure). Aby uzyskać informacje na temat sposobów automatyzowania tworzenia obrazów systemu RHEL, zobacz Azure Image Builder.
Uwaga
Należy pamiętać o wersjach, które są na ich koniec życia (EOL) i nie są już obsługiwane przez Red Hat. Przekazane obrazy, które znajdują się poza EOL lub poza nią, są obsługiwane w rozsądnym zakresie nakładu pracy biznesowej. Aby uzyskać więcej informacji, zobacz Cykle życia produktu Red Hat.
Menedżer funkcji Hyper-V
W tej sekcji pokazano, jak przygotować maszynę wirtualną RHEL 6, RHEL 7 lub RHEL 8 przy użyciu Menedżera funkcji Hyper-V.
Wymagania wstępne
W tej sekcji założono, że plik ISO został już uzyskany z witryny internetowej red hat i zainstalowany obraz RHEL na wirtualnym dysku twardym (VHD). Aby uzyskać więcej informacji na temat sposobu instalowania obrazu systemu operacyjnego za pomocą Menedżera funkcji Hyper-V, zobacz Instalowanie roli funkcji Hyper-V i konfigurowanie maszyny wirtualnej.
Uwagi dotyczące instalacji systemu RHEL
- Platforma Azure nie obsługuje formatu VHDX. pomoc techniczna platformy Azure tylko stały dysk VHD. Za pomocą Menedżera funkcji Hyper-V można przekonwertować dysk na format VHD lub użyć
convert-vhd
polecenia cmdlet . Jeśli używasz usługi VirtualBox, wybierz opcję Stały rozmiar , a nie domyślną opcję dynamicznie przydzieloną podczas tworzenia dysku. - pomoc techniczna platformy Azure s Gen1 (rozruch systemu BIOS) i maszyny wirtualne gen2 (rozruch UEFI).
- Maksymalny rozmiar dozwolony dla dysku VHD wynosi 1023 GB.
- Moduł jądra vfat musi być włączony w jądrze.
- Menedżer woluminów logicznych (LVM) jest obsługiwany i może być używany na dysku systemu operacyjnego lub dyskach danych na maszynach wirtualnych platformy Azure. Ogólnie rzecz biorąc, zalecamy używanie partycji standardowych na dysku systemu operacyjnego, a nie LVM. Ta praktyka pozwala uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli kiedykolwiek trzeba dołączyć dysk systemu operacyjnego do innej identycznej maszyny wirtualnej w celu rozwiązywania problemów. Aby uzyskać więcej informacji, zobacz dokumentację LVM i RAID .
- Wymagana jest obsługa jądra na potrzeby instalowania systemów plików formatu uniwersalnego dysku (UDF). Podczas pierwszego rozruchu na platformie Azure nośnik sformatowany przez użytkownika dołączony do gościa przekazuje konfigurację aprowizacji do maszyny wirtualnej z systemem Linux. Agent systemu Linux platformy Azure musi mieć możliwość zainstalowania systemu plików UDF, aby odczytać jego konfigurację i aprowizować maszynę wirtualną. Bez tego kroku aprowizowanie kończy się niepowodzeniem.
- Nie konfiguruj partycji wymiany na dysku systemu operacyjnego. Aby uzyskać więcej informacji, zapoznaj się z poniższymi krokami.
- 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, zapoznaj się z poniższymi krokami. Zobacz też uwagi dotyczące instalacji systemu Linux.
Uwaga
Cloud-init >= 21.2 usuwa wymaganie funkcji zdefiniowanej przez użytkownika. Jednak bez włączonego modułu UDF dysk CD-ROM nie zostanie zamontowany podczas aprowizacji, co uniemożliwia stosowanie niestandardowych danych. Obejściem jest zastosowanie niestandardowych danych przy użyciu danych użytkownika. W przeciwieństwie do danych niestandardowych dane użytkownika nie są szyfrowane. Aby uzyskać więcej informacji, zobacz Formaty danych użytkownika.
RHEL 6 przy użyciu Menedżera funkcji Hyper-V
Ważne
30 listopada 2020 r. system RHEL 6 osiągnął koniec fazy konserwacji. Faza konserwacji następuje po fazie rozszerzonej eksploatacji. Ponieważ system RHEL 6 przechodzi poza fazy pełnej/konserwacji, zdecydowanie zalecamy uaktualnienie do wersji RHEL 7, 8 lub 9. Jeśli musisz pozostać w systemie RHEL 6, zalecamy dodanie dodatku RHEL Extended Life Cycle Support.
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Wybierz pozycję Połącz, aby otworzyć okno konsoli dla maszyny wirtualnej.
W systemie RHEL 6
NetworkManager
może zakłócać działanie agenta systemu Linux platformy Azure. Odinstaluj ten pakiet:sudo rpm -e --nodeps NetworkManager
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
Utwórz lub edytuj
/etc/sysconfig/network-scripts/ifcfg-eth0
plik i dodaj następujący tekst:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Przenieś (lub usuń) reguły udev, aby uniknąć generowania reguł statycznych dla interfejsu Ethernet. Te reguły powodują problemy podczas klonowania maszyny wirtualnej na platformie Azure lub funkcji Hyper-V:
Ostrzeżenie
Wiele rozmiarów maszyn wirtualnych "v5" i nowszych wymaga przyspieszonej sieci. Jeśli nie jest włączona, menedżer sieci przypisze ten sam adres IP do wszystkich interfejsów funkcji wirtualnych. Aby zapobiec duplikowaniu adresów IP, pamiętaj, aby uwzględnić tę regułę ujmowania podczas migracji do nowszego rozmiaru.
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
Uwaga
W przypadku korzystania z przyspieszonej sieci syntetyczny interfejs utworzony musi być skonfigurowany tak, aby był niezarządzany przy użyciu reguły ujmowania. Ta akcja uniemożliwia
NetworkManager
przypisanie do niego tego samego adresu IP co interfejs podstawowy.Aby go zastosować:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo chkconfig network on
Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Pakiet
WALinuxAgent-<version>
WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
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. Upewnij się, że domyślne jądro zawiera następujące parametry:console=ttyS0 earlyprintk=ttyS0
Ta akcja 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.
Zalecamy również usunięcie następujących parametrów:
rhgb quiet crashkernel=auto
Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli chcesz, możesz pozostawić
crashkernel
opcję skonfigurowaną. Ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o 128 MB lub więcej. Ta konfiguracja może być problemem dla mniejszych rozmiarów maszyn wirtualnych.Upewnij się, że serwer secure shell (SSH) jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj
/etc/ssh/sshd_config
, aby uwzględnić następujący wiersz:ClientAliveInterval 180
Zainstaluj agenta systemu Linux platformy Azure:
sudo yum install WALinuxAgent sudo chkconfig waagent on
Zainstalowanie pakietu WALinuxAgent usuwa
NetworkManager
pakiety iNetworkManager-gnome
, jeśli nie zostały jeszcze usunięte w kroku 3.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 maszyny wirtualnej na platformie Azure. Dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony, jeśli maszyna wirtualna zostanie anulowana. Po zainstalowaniu agenta systemu Linux platformy Azure w poprzednim kroku zmodyfikuj odpowiednio następujące parametry
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Wyrejestrowywanie subskrypcji (w razie potrzeby):
sudo subscription-manager unregister
Anulowanie aprowizacji maszyny wirtualnej i przygotowanie jej do aprowizacji na platformie Azure:
Uwaga
Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji.
sudo waagent -force -deprovision sudo export HISTSIZE=0
Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.
RHEL 7 przy użyciu Menedżera funkcji Hyper-V
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Wybierz pozycję Połącz, aby otworzyć okno konsoli dla maszyny wirtualnej.
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
Utwórz lub edytuj
/etc/sysconfig/network-scripts/ifcfg-eth0
plik i dodaj następujący tekst:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Uwaga
W przypadku korzystania z przyspieszonej sieci syntetyczny interfejs utworzony musi być skonfigurowany tak, aby był niezarządzany przy użyciu reguły ujmowania. Ta akcja uniemożliwia
NetworkManager
przypisanie do niego tego samego adresu IP co interfejs podstawowy.Aby go zastosować:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo systemctl enable network
Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić więcej parametrów jądra dla platformy Azure. Aby wykonać tę modyfikację, otwórz
/etc/default/grub
w edytorze tekstów i edytujGRUB_CMDLINE_LINUX
parametr . Na przykład:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" ENABLE_BLSCFG=true
Uwaga
Jeśli ENABLE_BLSCFG=false jest obecny w
/etc/default/grub
zamiastENABLE_BLSCFG=true
narzędzi , takich jak grubedit lub gubby, które opierają się na specyfikacji modułu ładującego rozruchu (BLS) do zarządzania wpisami i konfiguracjami rozruchu, mogą nie działać poprawnie w RHEL 8 i 9. JeśliENABLE_BLSCFG
nie jest obecny, domyślne zachowanie tofalse
.Ta modyfikacja gwarantuje również, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego i umożliwiają interakcję z konsolą szeregową, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem. Ta konfiguracja wyłącza również nowe konwencje nazewnictwa RHEL 7 dla kart interfejsu sieciowego.
rhgb quiet crashkernel=auto
Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli chcesz, możesz pozostawić
crashkernel
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
uruchom następujące polecenie, aby ponownie skompilować konfigurację grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Uwaga
Jeśli przekazujesz maszynę wirtualną z obsługą interfejsu UEFI, polecenie aktualizacji pliku grub to
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
.Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj
/etc/ssh/sshd_config
, aby uwzględnić następujący wiersz:ClientAliveInterval 180
Pakiet
WALinuxAgent-<version>
WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Zainstaluj agenta systemu Linux platformy Azure i
cloud-init
inne niezbędne narzędzia:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Skonfiguruj
cloud-init
do obsługi aprowizacji:Skonfiguruj
waagent
dla programucloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/g' /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
Uwaga
Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, ustaw
Provisioning.Agent=disabled
konfigurację/etc/waagent.conf
.Konfigurowanie instalacji:
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
Konfigurowanie źródła danych platformy Azure:
sudo 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
W przypadku skonfigurowania usuń istniejący plik zamiany:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by default swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Konfigurowanie rejestrowania
cloud-init
:sudo echo "Add console log file" sudo 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 systemu Linux platformy Azure był używany do automatycznego konfigurowania miejsca wymiany przy użyciu lokalnego dysku zasobów dołączonego do maszyny wirtualnej po aprowizacji maszyny wirtualnej na platformie Azure. Ta akcja jest teraz obsługiwana przez program
cloud-init
. 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
:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Jeśli chcesz zainstalować, sformatować i utworzyć zamianę, możesz wykonać następujące czynności:
Przekaż ten kod jako konfigurację za każdym razem, gdy tworzysz maszynę wirtualną
cloud-init
za pomocą danych niestandardowych. Zalecamy tę metodę.cloud-init
Użyj dyrektywy baked do obrazu, który wykonuje ten krok za każdym razem, gdy maszyna wirtualna zostanie utworzona.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo 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
Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:
sudo subscription-manager unregister
Anulowanie aprowizacji maszyny wirtualnej i przygotowanie jej do aprowizacji na platformie Azure:
Uwaga
Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji. Uruchomienie polecenia
waagent -force -deprovision+user
powoduje, że maszyna źródłowa jest bezużyteczna. Ten krok jest przeznaczony tylko do utworzenia uogólnionego obrazu.sudo rm -f /var/log/waagent.log sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.
RHEL 8+ przy użyciu Menedżera funkcji Hyper-V
W Menedżerze funkcji Hyper-V wybierz maszynę wirtualną.
Wybierz pozycję Połącz, aby otworzyć okno konsoli dla maszyny wirtualnej.
Upewnij się, że usługa Menedżer sieci jest uruchamiana w czasie rozruchu:
sudo systemctl enable NetworkManager.service
Skonfiguruj interfejs sieciowy, aby automatycznie uruchamiał się podczas rozruchu i używał protokołu dynamicznej konfiguracji hosta:
sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
Uwaga
W przypadku korzystania z przyspieszonej sieci syntetyczny interfejs utworzony musi być skonfigurowany tak, aby był niezarządzany przy użyciu reguły ujmowania. Ta akcja uniemożliwia
NetworkManager
przypisanie do niego tego samego adresu IP co interfejs podstawowy.Aby go zastosować:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić więcej parametrów jądra dla platformy Azure i włączyć konsolę szeregową.
Usuń bieżące parametry GRUB:
sudo grub2-editenv - unset kernelopts
Edytuj
/etc/default/grub
w edytorze tekstów i dodaj następujące parametry:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Ta modyfikacja gwarantuje również, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego i umożliwiają interakcję z konsolą szeregową, co może pomóc pomoc techniczna platformy Azure w przypadku problemów z debugowaniem. Ta konfiguracja wyłącza również nowe konwencje nazewnictwa kart sieciowych.
Zalecamy również usunięcie następujących parametrów:
rhgb quiet crashkernel=auto
Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli chcesz, możesz pozostawić
crashkernel
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
uruchom następujące polecenie, aby ponownie skompilować konfigurację grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
W przypadku maszyny wirtualnej z obsługą interfejsu UEFI uruchom następujące polecenie:
sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj
/etc/ssh/sshd_config
, aby uwzględnić następujący wiersz:ClientAliveInterval 180
Zainstaluj agenta systemu Linux platformy Azure i
cloud-init
inne niezbędne narzędzia:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Skonfiguruj
cloud-init
do obsługi aprowizacji:Skonfiguruj
waagent
dla programucloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /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
Uwaga
Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, ustaw
Provisioning.Agent=disabled
konfigurację/etc/waagent.conf
.Konfigurowanie instalacji:
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
Konfigurowanie źródła danych platformy Azure:
sudo 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
W przypadku skonfigurowania usuń istniejący plik zamiany:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by defaul swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Konfigurowanie rejestrowania
cloud-init
:sudo echo "Add console log file" sudo 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 systemu Linux platformy Azure był używany do automatycznego konfigurowania miejsca wymiany przy użyciu lokalnego dysku zasobów dołączonego do maszyny wirtualnej po aprowizacji maszyny wirtualnej na platformie Azure. Ta akcja jest teraz obsługiwana przez program
cloud-init
. Nie można używać agenta systemu Linux do formatowania dysku zasobu tworzącego plik wymiany. Zmodyfikuj odpowiednio następujące parametry/etc/waagent.conf
:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Przekaż ten kod jako konfigurację za każdym razem, gdy tworzysz maszynę wirtualną
cloud-init
za pomocą danych niestandardowych. Zalecamy tę metodę.cloud-init
Użyj dyrektywy baked do obrazu, który wykonuje ten krok za każdym razem, gdy maszyna wirtualna zostanie utworzona.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo 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.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF
Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:
sudo subscription-manager unregister
Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją do aprowizacji na platformie Azure:
sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo sudo rm -f /var/log/waagent.log sudo export HISTSIZE=0
Uwaga
Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji. Uruchomienie polecenia
waagent -force -deprovision+user
powoduje, że maszyna źródłowa jest bezużyteczna. Ten krok jest przeznaczony tylko do utworzenia uogólnionego obrazu.Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.
KVM
W tej sekcji przedstawiono sposób użycia maszyny wirtualnej KVM do przygotowania dystrybucji RHEL 6 lub RHEL 7 do przekazania na platformę Azure.
RHEL 6 przy użyciu maszyny wirtualnej KVM
Ważne
30 listopada 2020 r. system RHEL 6 osiągnął koniec fazy konserwacji. Faza konserwacji następuje po fazie rozszerzonej eksploatacji. Ponieważ system RHEL 6 przechodzi poza fazy pełnej/konserwacji, zdecydowanie zalecamy uaktualnienie do wersji RHEL 7, 8 lub 9. Jeśli musisz pozostać w systemie RHEL 6, zalecamy dodanie dodatku RHEL Extended Life Cycle Support.
Pobierz obraz KVM systemu RHEL 6 ze strony internetowej Red Hat.
Ustaw hasło główne.
Wygeneruj zaszyfrowane hasło i skopiuj dane wyjściowe polecenia:
sudo openssl passwd -1 changeme
Ustaw hasło główne z atrybutem guestfish:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Zmień drugie pole użytkownika głównego z
!!
na zaszyfrowane hasło.Utwórz maszynę wirtualną w maszynie wirtualnej KVM na podstawie obrazu qcow2. Ustaw typ dysku na qcow2 i ustaw model urządzenia interfejsu sieciowego wirtualnego na virtio. Następnie uruchom maszynę wirtualną i zaloguj się jako katalog główny.
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
Utwórz lub edytuj
/etc/sysconfig/network-scripts/ifcfg-eth0
plik i dodaj następujący tekst:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Przenieś (lub usuń) reguły udev, aby uniknąć generowania reguł statycznych dla interfejsu Ethernet. Te reguły powodują 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
Uwaga
W przypadku korzystania z przyspieszonej sieci syntetyczny interfejs utworzony musi być skonfigurowany tak, aby był niezarządzany przy użyciu reguły ujmowania. Ta akcja uniemożliwia
NetworkManager
przypisanie do niego tego samego adresu IP co interfejs podstawowy.Aby go zastosować:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo chkconfig network on
Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
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. Upewnij się, że domyślne jądro zawiera następujące parametry:console=ttyS0 earlyprintk=ttyS0
Ten krok 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.
Zalecamy również usunięcie następujących parametrów:
rhgb quiet crashkernel=auto
Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli chcesz, możesz pozostawić
crashkernel
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.Dodaj moduły funkcji Hyper-V do modułów initramfs:
Edytuj
/etc/dracut.conf
element i dodaj następującą zawartość:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Ponowne kompilowanie initramfs:
sudo dracut -f -v
Odinstaluj
cloud-init
:sudo yum remove cloud-init
Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu:
sudo chkconfig sshd on
Zmodyfikuj
/etc/ssh/sshd_config
, aby uwzględnić następujące wiersze:PasswordAuthentication yes ClientAliveInterval 180
Pakiet
WALinuxAgent-<version>
WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
Zainstaluj agenta systemu Linux platformy Azure:
sudo yum install WALinuxAgent sudo chkconfig waagent on
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 maszyny wirtualnej na platformie Azure. Dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony, jeśli maszyna wirtualna zostanie anulowana. Po zainstalowaniu agenta systemu Linux platformy Azure w poprzednim kroku zmodyfikuj odpowiednio następujące parametry
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Wyrejestrowywanie subskrypcji (w razie potrzeby):
sudo subscription-manager unregister
Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją do aprowizacji na platformie Azure.
Uwaga
Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Zamknij maszynę wirtualną w maszynie wirtualnej KVM.
Przekonwertuj obraz qcow2 na format VHD.
Uwaga
Istnieje znana usterka w wersjach >qemu-img =2.2.1, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w programie QEMU 2.6. Zalecamy użycie qemu-img 2.2.0 lub niższej albo aktualizacji do wersji 2.6 lub nowszej. Aby uzyskać więcej informacji, zobacz tę witrynę internetową .
Najpierw przekonwertuj obraz na format pierwotny:
sudo qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
Upewnij się, że rozmiar obrazu pierwotnego jest wyrównany do 1 MB. W przeciwnym razie zaokrąglij rozmiar w celu wyrównania do 1 MB:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Przekonwertuj dysk pierwotny na dysk VHD o stałym rozmiarze:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Możesz też skorzystać z opcji qemu w wersji 2.6 lub nowszej
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 przy użyciu maszyny wirtualnej KVM
Pobierz obraz KVM systemu RHEL 7 ze strony internetowej Red Hat. Ta procedura używa systemu RHEL 7 jako przykładu.
Ustaw hasło główne.
Wygeneruj zaszyfrowane hasło i skopiuj dane wyjściowe polecenia:
sudo openssl passwd -1 changeme
Ustaw hasło główne z atrybutem guestfish:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Zmień drugie pole użytkownika głównego z
!!
na zaszyfrowane hasło.Utwórz maszynę wirtualną w maszynie wirtualnej KVM na podstawie obrazu qcow2. Ustaw typ dysku na qcow2 i ustaw model urządzenia interfejsu sieciowego wirtualnego na virtio. Następnie uruchom maszynę wirtualną i zaloguj się jako katalog główny.
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
Utwórz lub edytuj
/etc/sysconfig/network-scripts/ifcfg-eth0
plik i dodaj następujący tekst:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Uwaga
W przypadku korzystania z przyspieszonej sieci syntetyczny interfejs utworzony musi być skonfigurowany tak, aby był niezarządzany przy użyciu reguły ujmowania. Ta akcja uniemożliwia
NetworkManager
przypisanie do niego tego samego adresu IP co interfejs podstawowy.Aby go zastosować:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo systemctl enable network
Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić więcej parametrów jądra dla platformy Azure. Aby wykonać tę konfigurację, 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"
To polecenie 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. Polecenie wyłącza również nowe konwencje nazewnictwa RHEL 7 dla kart sieciowych. Zalecamy również usunięcie następujących parametrów:
rhgb quiet crashkernel=auto
Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli chcesz, możesz pozostawić
crashkernel
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
uruchom następujące polecenie, aby ponownie skompilować konfigurację grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Dodaj moduły funkcji Hyper-V do modułów initramfs.
Edytuj
/etc/dracut.conf
i dodaj zawartość:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Ponowne kompilowanie initramfs:
sudo dracut -f -v
Odinstaluj
cloud-init
:sudo yum remove cloud-init
Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu:
sudo systemctl enable sshd
Zmodyfikuj
/etc/ssh/sshd_config
, aby uwzględnić następujące wiersze:PasswordAuthentication yes ClientAliveInterval 180
Pakiet
WALinuxAgent-<version>
WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Zainstaluj agenta systemu Linux platformy Azure:
sudo yum install WALinuxAgent
Włącz usługę
waagent
:sudo systemctl enable waagent.service
Zainstaluj system
cloud-init
.Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 12" "Instalowanie
cloud-init
w celu obsługi aprowizacji".Konfiguracja zamiany:
- Nie twórz miejsca wymiany na dysku systemu operacyjnego.
- Wykonaj kroki opisane w sekcji "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 13" "Konfiguracja zamiany".
Wyrejestrowywanie subskrypcji (w razie potrzeby):
sudo subscription-manager unregister
Anulowanie aprowizacji, wykonując kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 15, "Anulowanie aprowizacji".
Zamknij maszynę wirtualną w maszynie wirtualnej KVM.
Przekonwertuj obraz qcow2 na format VHD.
Uwaga
Istnieje znana usterka w wersjach >qemu-img =1.1.1, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w programie QEMU 1.6. Zalecamy użycie polecenia qemu-img 1.1.0 lub starszego albo aktualizacji do wersji 1.6 lub nowszej. Aby uzyskać więcej informacji, zobacz tę witrynę internetową.
Najpierw przekonwertuj obraz na format pierwotny:
sudo qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
Upewnij się, że rozmiar obrazu pierwotnego jest wyrównany do 1 MB. W przeciwnym razie zaokrąglij rozmiar w celu wyrównania do 1 MB:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Przekonwertuj dysk pierwotny na dysk VHD o stałym rozmiarze:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Możesz też skorzystać z opcji qemu w wersji 1.6 lub nowszej
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
VMware
W tej sekcji pokazano, jak przygotować dystrybucję RHEL 6 lub RHEL 7 z programu VMware.
Wymagania wstępne
W tej sekcji założono, że maszyna wirtualna RHEL została już zainstalowana w programie VMware. Aby uzyskać informacje o sposobie instalowania systemu operacyjnego w programie VMware, zobacz Przewodnik instalacji systemu operacyjnego gościa programu VMware.
- Podczas instalowania systemu operacyjnego Linux zalecamy używanie partycji standardowych, a nie LVM, co jest często ustawieniem domyślnym dla wielu instalacji. Użycie partycji pozwala uniknąć konfliktów nazw LVM z sklonowaną maszyną wirtualną, 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 używać na dyskach danych, jeśli chcesz.
- Nie konfiguruj partycji wymiany na dysku systemu operacyjnego. Agenta systemu Linux można skonfigurować tak, aby utworzyć plik wymiany na dysku zasobów tymczasowych. Aby uzyskać więcej informacji, zapoznaj się z poniższymi krokami.
- Podczas tworzenia dysku VHD wybierz pozycję Zapisz dysk wirtualny jako pojedynczy plik.
RHEL 6 przy użyciu programu VMware
Ważne
30 listopada 2020 r. system RHEL 6 osiągnął koniec fazy konserwacji. Faza konserwacji następuje po fazie rozszerzonej eksploatacji. Ponieważ system RHEL 6 przechodzi poza fazy pełnej/konserwacji, zdecydowanie zalecamy uaktualnienie do wersji RHEL 7 lub 8 lub 9. Jeśli musisz pozostać w systemie RHEL 6, zalecamy dodanie dodatku RHEL Extended Life Cycle Support.
W systemie RHEL 6
NetworkManager
może zakłócać działanie agenta systemu Linux platformy Azure. Odinstaluj ten pakiet:sudo rpm -e --nodeps NetworkManager
Utwórz plik o nazwie network w
/etc/sysconfig/
katalogu zawierającym następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
Utwórz lub edytuj
/etc/sysconfig/network-scripts/ifcfg-eth0
plik i dodaj następujący tekst:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Przenieś (lub usuń) reguły udev, aby uniknąć generowania reguł statycznych dla interfejsu Ethernet. Te reguły powodują 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
Uwaga
W przypadku korzystania z przyspieszonej sieci syntetyczny interfejs utworzony musi być skonfigurowany tak, aby był niezarządzany przy użyciu reguły ujmowania. Ta akcja uniemożliwia
NetworkManager
przypisanie do niego tego samego adresu IP co interfejs podstawowy.Aby go zastosować:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo chkconfig network on
Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Pakiet
WALinuxAgent-<version>
WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
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"
Ten krok 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. Zalecamy również usunięcie następujących parametrów:
rhgb quiet crashkernel=auto
Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli chcesz, możesz pozostawić
crashkernel
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.Dodaj moduły funkcji Hyper-V do modułów initramfs:
Edytuj
/etc/dracut.conf
element i dodaj następującą zawartość:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Ponowne kompilowanie initramfs:
sudo dracut -f -v
Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu, co jest zwykle ustawieniem domyślnym. Zmodyfikuj
/etc/ssh/sshd_config
, aby uwzględnić następujący wiersz:ClientAliveInterval 180
Zainstaluj agenta systemu Linux platformy Azure:
sudo yum install WALinuxAgent sudo chkconfig waagent on
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 maszyny wirtualnej na platformie Azure. Dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony, jeśli maszyna wirtualna zostanie anulowana. Po zainstalowaniu agenta systemu Linux platformy Azure w poprzednim kroku zmodyfikuj odpowiednio następujące parametry
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Wyrejestrowywanie subskrypcji (w razie potrzeby):
sudo subscription-manager unregister
Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją do aprowizacji na platformie Azure:
Uwaga
Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Zamknij maszynę wirtualną i przekonwertuj plik VMDK na plik vhd.
Uwaga
Istnieje znana usterka w wersjach >qemu-img =2.2.1, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w programie QEMU 2.6. Zalecamy użycie qemu-img 2.2.0 lub niższej albo aktualizacji do wersji 2.6 lub nowszej. Aby uzyskać więcej informacji, zobacz tę witrynę internetową.
Najpierw przekonwertuj obraz na format pierwotny:
sudo qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
Upewnij się, że rozmiar obrazu pierwotnego jest wyrównany do 1 MB. W przeciwnym razie zaokrąglij rozmiar w celu wyrównania do 1 MB:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Przekonwertuj dysk pierwotny na dysk VHD o stałym rozmiarze:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Możesz też skorzystać z opcji qemu w wersji 2.6 lub nowszej
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 przy użyciu programu VMware
Utwórz lub edytuj
/etc/sysconfig/network
plik i dodaj następujący tekst:NETWORKING=yes HOSTNAME=localhost.localdomain
Utwórz lub edytuj
/etc/sysconfig/network-scripts/ifcfg-eth0
plik i dodaj następujący tekst:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Uwaga
W przypadku korzystania z przyspieszonej sieci syntetyczny interfejs utworzony musi być skonfigurowany tak, aby był niezarządzany przy użyciu reguły ujmowania. Ta akcja uniemożliwia
NetworkManager
przypisanie do niego tego samego adresu IP co interfejs podstawowy.Aby go zastosować:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Upewnij się, że usługa sieciowa jest uruchamiana w czasie rozruchu:
sudo systemctl enable network
Zarejestruj subskrypcję oprogramowania Red Hat, aby włączyć instalację pakietów z repozytorium RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić więcej parametrów jądra dla platformy Azure. Aby wykonać tę modyfikację, otwórz
/etc/default/grub
w edytorze tekstów i edytujGRUB_CMDLINE_LINUX
parametr . Na przykład:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Ta konfiguracja zapewnia 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ż nowe konwencje nazewnictwa RHEL 7 dla kart sieciowych. Ponadto zalecamy usunięcie następujących parametrów:
rhgb quiet crashkernel=auto
Rozruchy graficzne i ciche nie są przydatne w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. Jeśli chcesz, możesz pozostawić
crashkernel
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
uruchom następujące polecenie, aby ponownie skompilować konfigurację grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Dodaj moduły funkcji Hyper-V do modułów initramfs:
Edytuj
/etc/dracut.conf
, dodaj zawartość:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Ponowne kompilowanie initramfs:
sudo dracut -f -v
Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. To ustawienie jest zwykle ustawieniem domyślnym. Zmodyfikuj
/etc/ssh/sshd_config
, aby uwzględnić następujący wiersz:ClientAliveInterval 180
Pakiet
WALinuxAgent-<version>
WALinuxAgent został wypchnięty do repozytorium dodatków Red Hat. Włącz repozytorium dodatków:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Zainstaluj agenta systemu Linux platformy Azure:
sudo yum install WALinuxAgent sudo systemctl enable waagent.service
Zainstaluj program
cloud-init
:Wykonaj kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 12" "Instalowanie
cloud-init
w celu obsługi aprowizacji".Konfiguracja zamiany:
- Nie twórz miejsca wymiany na dysku systemu operacyjnego.
- Wykonaj kroki opisane w sekcji "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 13" "Konfiguracja zamiany".
Jeśli chcesz wyrejestrować subskrypcję, uruchom następujące polecenie:
sudo subscription-manager unregister
Anulowanie aprowizacji, wykonując kroki opisane w temacie "Przygotowywanie maszyny wirtualnej RHEL 7 z Menedżera funkcji Hyper-V", krok 15, "Anulowanie aprowizacji".
Zamknij maszynę wirtualną i przekonwertuj plik VMDK na format VHD.
Uwaga
Istnieje znana usterka w wersjach >qemu-img =2.2.1, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w programie QEMU 2.6. Zalecamy użycie qemu-img 2.2.0 lub niższej albo aktualizacji do wersji 2.6 lub nowszej. Aby uzyskać więcej informacji, zobacz tę witrynę internetową.
Najpierw przekonwertuj obraz na format pierwotny:
sudo qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
Upewnij się, że rozmiar obrazu pierwotnego jest wyrównany do 1 MB. W przeciwnym razie zaokrąglij rozmiar w celu wyrównania do 1 MB:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Przekonwertuj dysk pierwotny na dysk VHD o stałym rozmiarze:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Możesz też skorzystać z opcji qemu w wersji 2.6 lub nowszej
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
Plik Kickstart
W tej sekcji pokazano, jak przygotować dystrybucję RHEL 7 z iso przy użyciu pliku kickstart.
RHEL 7 z pliku kickstart
Utwórz plik kickstart zawierający następującą zawartość i zapisz plik. Aby uzyskać informacje na temat instalacji kickstart, zobacz Przewodnik instalacji kickstart.
# Kickstart for provisioning a RHEL 7 Azure VM # System authorization information auth --enableshadow --passalgo=sha512 # Use graphical install text # Don't run the Setup Agent on first boot firstboot --disable # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp # Root password rootpw --plaintext "to_be_disabled" # System services services --enabled="sshd,waagent,NetworkManager" # System timezone timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org # Partition clearing information clearpart --all --initlabel # Clear the MBR zerombr # Disk partitioning information part /boot --fstype="xfs" --size=500 part / --fstyp="xfs" --size=1 --grow --asprimary # System bootloader configuration bootloader --location=mbr # Firewall configuration firewall --disabled # Enable SELinux selinux --enforcing # Don't configure X skipx # Power down the machine after install poweroff %packages @base @console-internet chrony sudo parted -dracut-config-rescue %end %post --log=/var/log/anaconda/post-install.log #!/bin/bash # Register Red Hat Subscription subscription-manager register --username=XXX --password=XXX --auto-attach --force # Install latest repo update yum update -y # Enable extras repo subscription-manager repos --enable=rhel-7-server-extras-rpms # Install WALinuxAgent yum install -y WALinuxAgent # Unregister Red Hat subscription subscription-manager unregister # Enable waaagent at boot-up systemctl enable waagent # Install cloud-init yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons # Configure waagent for cloud-init sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf echo "Adding mounts and disk_setup to init stage" sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg # Disable the root account usermod root -p '!!' # Configure swap using cloud-init 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"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF # Set the cmdline sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0"/g' /etc/default/grub # Enable SSH keepalive sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config # Build the grub cfg grub2-mkconfig -o /boot/grub2/grub.cfg # Configure network cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes EOF sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF # Deprovision and prepare for Azure if you are creating a generalized image sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user rm -f ~/.bash_history export HISTSIZE=0 %end
Umieść plik kickstart, w którym system instalacyjny może uzyskać do niego dostęp.
W Menedżerze funkcji Hyper-V utwórz nową maszynę wirtualną. Na stronie Łączenie wirtualnego dysku twardego wybierz pozycję Dołącz wirtualny dysk twardy później i ukończ pracę kreatora Nowa maszyna wirtualna.
Otwórz ustawienia maszyny wirtualnej:
Dołącz nowy wirtualny dysk twardy do maszyny wirtualnej. Upewnij się, że wybrano pozycję Format dysku VHD i stały rozmiar.
Dołącz instalację ISO do stacji dysków DVD.
Ustaw system BIOS na rozruch z dysku CD.
Uruchom maszynę wirtualną. Po wyświetleniu przewodnika instalacji wybierz Tab , aby skonfigurować opcje rozruchu.
Wprowadź
inst.ks=<the location of the kickstart file>
na końcu opcji rozruchu i wybierz Enter .Poczekaj na zakończenie instalacji. Po zakończeniu maszyna wirtualna zostanie automatycznie zamknięta. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.
Znane problemy
Znany jest następujący problem.
Nie można dołączyć sterownika funkcji Hyper-V do początkowego dysku RAM w przypadku korzystania z funkcji hypervisor innej niż hypervisor funkcji Hyper-V
W niektórych przypadkach instalatory systemu Linux mogą nie zawierać sterowników funkcji Hyper-V w początkowym dysku RAM (initrd lub initramfs), chyba że system Linux wykryje, że działa w środowisku funkcji Hyper-V.
Jeśli używasz innego systemu wirtualizacji (na przykład VirtualBox lub Xen) do przygotowania obrazu systemu Linux, może być konieczne ponowne skompilowanie initrd, aby upewnić się, że co najmniej hv_vmbus
moduły jądra i hv_storvsc
są dostępne na początkowym dysku RAM. Ten problem jest znany, przynajmniej w systemach opartych na nadrzędnej dystrybucji red hat.
Aby rozwiązać ten problem, dodaj moduły funkcji Hyper-V do modułów initramfs i skompiluj go:
Edytuj /etc/dracut.conf
element i dodaj następującą zawartość:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Ponowne kompilowanie initramfs:
sudo dracut -f -v
Aby uzyskać więcej informacji, zobacz Ponowne kompilowanie initramfs.
Powiązana zawartość
- Teraz możesz używać wirtualnego dysku twardego RHEL do tworzenia nowych maszyn wirtualnych na platformie Azure. Jeśli po raz pierwszy przekazujesz plik vhd na platformę Azure, zobacz Tworzenie maszyny wirtualnej z systemem Linux na podstawie dysku niestandardowego.
- Aby uzyskać więcej informacji na temat funkcji hypervisor certyfikowanych do uruchamiania systemu RHEL, zobacz witrynę internetową red hat.
- Aby dowiedzieć się więcej na temat używania obrazów RHEL BYOS gotowych do produkcji, przejdź do strony dokumentacji dotyczącej korzystania z własnej subskrypcji.