Przygotowywanie maszyny wirtualnej bazującej na systemie CentOS dla platformy Azure

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

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

Dowiedz się, jak utworzyć i przekazać wirtualny dysk twardy platformy Azure (VHD), który zawiera system operacyjny Linux oparty na systemie CentOS.

Wymagania wstępne

W tym artykule założono, że na wirtualnym dysku twardym zainstalowano już system operacyjny CentOS (lub podobny pochodny). 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.

Uwagi dotyczące instalacji systemu CentOS

  • Aby uzyskać więcej wskazówek dotyczących przygotowywania systemu Linux na platformę Azure, zobacz Ogólne informacje o instalacji systemu Linux.
  • 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. Jeśli używasz usługi VirtualBox, oznacza to wybranie stałego rozmiaru , a nie domyślnego dynamicznie przydzielonego podczas tworzenia dysku.
  • Moduł jądra vfat musi być włączony w jądrze
  • Podczas instalowania systemu Linux zalecamy używanie partycji standardowych, a nie LVM (często domyślnych dla wielu instalacji). Pozwala to uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli do rozwiązywania problemów należy dołączyć dysk systemu operacyjnego do innej identycznej maszyny wirtualnej. LvM lub RAID mogą być używane na dyskach danych.
  • 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 przy użyciu nośnika sformatowanego przez użytkownika dołączonego do gościa. Agent systemu Linux platformy Azure lub cloud-init musi zainstalować system plików UDF, aby odczytać jego konfigurację i aprowizować maszynę wirtualną.
  • Jądra systemu Linux w wersjach starszych niż 2.6.37 nie obsługują NUMA w funkcji Hyper-V o większych rozmiarach maszyn wirtualnych. Ten problem ma wpływ głównie na starsze dystrybucje przy użyciu nadrzędnego jądra Centos 2.6.32 i został rozwiązany w centos 6.6 (jądro-2.6.32-504). Systemy z niestandardowymi jądrami starszymi niż 2.6.37 lub jądra oparte na RHEL starsze niż 2.6.32-504 muszą ustawić parametr numa=off rozruchowy w wierszu polecenia jądra w pliku grub.conf. Aby uzyskać więcej informacji, zobacz Red Hat KB 436883.
  • 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.

Uwaga

Cloud-init >= 21.2 usuwa wymaganie udf. Jednak bez włączonego modułu udf usługa cdrom nie będzie instalować podczas aprowizacji, uniemożliwiając stosowanie niestandardowych danych. Obejściem tego problemu jest zastosowanie niestandardowych danych przy użyciu danych użytkownika. Jednak w przeciwieństwie do danych niestandardowych dane użytkownika nie są szyfrowane. https://cloudinit.readthedocs.io/en/latest/topics/format.html

CentOS 6.x

Ważne

Należy pamiętać, że system CentOS 6 osiągnął swój koniec życia (EOL) i nie jest już obsługiwany przez społeczność CentOS. Oznacza to, że dla tej wersji nie zostaną wydane żadne dalsze aktualizacje ani poprawki zabezpieczeń, co naraża je na potencjalne zagrożenia bezpieczeństwa. Zdecydowanie zalecamy uaktualnienie do nowszej wersji systemu CentOS, aby zapewnić bezpieczeństwo i stabilność systemu. Aby uzyskać dalszą pomoc, skontaktuj się z działem IT lub administratorem systemu.

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

  2. Kliknij Połączenie, aby otworzyć okno konsoli dla maszyny wirtualnej.

  3. W systemie CentOS 6 menedżer sieci może zakłócać działanie agenta systemu Linux platformy Azure. Odinstaluj ten pakiet, uruchamiając następujące polecenie:

    sudo rpm -e --nodeps NetworkManager
    
  4. Utwórz lub edytuj plik /etc/sysconfig/network i dodaj następujący tekst:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Utwórz lub edytuj plik /etc/sysconfig/network-scripts/ifcfg-eth0 i dodaj 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. Jeśli chcesz użyć dublowanych serwerów OpenLogic hostowanych w centrach danych platformy Azure, zastąp /etc/yum.repos.d/CentOS-Base.repo plik następującymi repozytoriami. Spowoduje to również dodanie repozytorium [openlogic], które zawiera dodatkowe pakiety, takie jak agent systemu Linux platformy Azure:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    

    Uwaga

    W pozostałej części tego przewodnika założono, że używasz co najmniej [openlogic] repozytorium, które będzie używane do instalowania agenta systemu Linux platformy Azure poniżej.

  9. Dodaj następujący wiersz do pliku /etc/yum.conf:

    http_caching=packages
    
  10. Uruchom następujące polecenie, aby wyczyścić bieżące metadane yum i zaktualizować system przy użyciu najnowszych pakietów:

    sudo yum clean all
    

    Jeśli nie tworzysz obrazu dla starszej wersji systemu CentOS, zalecamy zaktualizowanie wszystkich pakietów do najnowszej wersji:

    sudo yum -y update
    

    Po uruchomieniu tego polecenia może być wymagane ponowne uruchomienie.

  11. (Opcjonalnie) Zainstaluj sterowniki dla usługi Linux Integration Services (LIS).

    Ważne

    Krok jest wymagany dla systemu CentOS 6.3 i starszych oraz opcjonalny dla nowszych wersji.

    sudo rpm -e hypervkvpd  ## (may return error if not installed, that's OK)
    sudo yum install microsoft-hyper-v
    

    Alternatywnie możesz wykonać instrukcje instalacji ręcznej na stronie pobierania LIS, aby zainstalować rpm na maszynie wirtualnej.

  12. Zainstaluj agenta i zależności systemu Linux platformy Azure. Uruchom i włącz usługę waagent:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo service waagent start
    sudo chkconfig waagent on
    

    Pakiet WALinuxAgent usuwa pakiety NetworkManager i NetworkManager-gno, jeśli nie zostały jeszcze usunięte zgodnie z opisem w kroku 3.

  13. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. W tym celu otwórz plik /boot/grub/menu.lst w edytorze tekstów i upewnij się, że domyślne jądro zawiera następujące parametry:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    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.

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

    rhgb quiet crashkernel=auto
    

    Graficzne i quiet boot nie są przydatne 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.

    Ważne

    CentOS 6.5 i starsze muszą również ustawić parametr numa=offjądra . Zobacz 436883 bazy wiedzy Red Hat KB.

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

  15. 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/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
    
  16. Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją do aprowizacji na platformie Azure:

    sudo waagent -force -deprovision+user
    sudo export HISTSIZE=0
    

Uwaga

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

  1. Kliknij pozycję Akcja —> zamknij w Menedżerze funkcji Hyper-V. Wirtualny dysk twardy systemu Linux jest teraz gotowy do przekazania na platformę Azure.

CentOS 7.0+

Zmiany w systemie CentOS 7 (i podobnych pochodnych)

Przygotowywanie maszyny wirtualnej CentOS 7 dla platformy Azure jest podobne do CentOS 6, jednak istnieje kilka znaczących różnic, które warto zauważyć:

  • 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.

  • Ponieważ usługa CentOS 8 Stream i nowsze nie są już domyślnie uwzględniane network.service , należy zainstalować ją ręcznie:

    sudo yum install network-scripts
    sudo systemctl enable network.service
    

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 lub edytuj plik /etc/sysconfig/network i dodaj następujący tekst:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Utwórz lub edytuj plik /etc/sysconfig/network-scripts/ifcfg-eth0 i dodaj następujący tekst:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=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. Jeśli chcesz użyć dublowanych serwerów OpenLogic hostowanych w centrach danych platformy Azure, zastąp /etc/yum.repos.d/CentOS-Base.repo plik następującymi repozytoriami. Spowoduje to również dodanie repozytorium [openlogic] zawierającego pakiety agenta systemu Linux platformy Azure:

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    

    Uwaga

    W pozostałej części tego przewodnika założono, że używasz co najmniej [openlogic] repozytorium, które będzie używane do instalowania agenta systemu Linux platformy Azure poniżej.

  7. Uruchom następujące polecenie, aby wyczyścić bieżące metadane yum i zainstalować wszystkie aktualizacje:

    sudo yum clean all
    

    Jeśli nie tworzysz obrazu dla starszej wersji systemu CentOS, zalecamy zaktualizowanie wszystkich pakietów do najnowszej wersji:

    sudo yum -y update
    

    Po uruchomieniu tego polecenia może być wymagane ponowne uruchomienie.

  8. Zmodyfikuj wiersz rozruchu jądra w konfiguracji grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. Aby to zrobić, otwórz /etc/default/grub plik w edytorze tekstów i edytuj GRUB_CMDLINE_LINUX parametr, na przykład:

    GRUB_CMDLINE_LINUX="rootdelay=300 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ż nowe konwencje nazewnictwa systemu CentOS 7 dla kart sieciowych. 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 wszystkie dzienniki mają być 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.

  9. 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
    

Uwaga

Jeśli przekaże maszynę wirtualną z włączoną obsługą interfejsu UEFI, polecenie aktualizacji pliku grub to grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. Ponadto moduł jądra vfat musi być włączony w jądrze, w przeciwnym razie aprowizacja zakończy się niepowodzeniem.

Upewnij się, że moduł "udf" jest włączony. Usunięcie/wyłączenie ich spowoduje niepowodzenie aprowizacji/rozruchu. (_Cloud-init >= 21.2 usuwa wymaganie udf. Przeczytaj więcej szczegółów w górnej części dokumentu).

  1. Jeśli tworzysz obraz z maszyn wirtualnych VMware, VirtualBox lub KVM: Upewnij się, że sterowniki funkcji Hyper-V są dołączone do initramfs:

    Edytuj /etc/dracut.conf, dodaj zawartość:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Ponownie skompiluj initramfs:

    sudo dracut -f -v
    
  2. Zainstaluj agenta systemu Linux platformy Azure i zależności dla rozszerzeń maszyn wirtualnych platformy Azure:

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

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    1. Konfigurowanie waagent dla pakietu cloud-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
    
    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
    
    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
    
    if [[ -f /mnt/swapfile ]]; then
    echo Removing swapfile - RHEL 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
    
  4. 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. Jednak jest to teraz obsługiwane przez cloud-init, nie można używać agenta systemu Linux do formatowania dysku zasobu tworzenia pliku wymiany, odpowiednio zmodyfikować 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ż 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:

      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"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  5. 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 -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  6. 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 używać wirtualnego dysku twardego systemu CentOS Linux 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.