Sdílet prostřednictvím


Příprava virtuálního počítače založeného na CentOS pro Azure

Upozornění

Tento článek odkazuje na CentOS, linuxovou distribuci, která se blíží stavu ukončení životnosti (EOL). Zvažte použití a plán odpovídajícím způsobem. Další informace najdete v doprovodných materiálech k ukončení životnosti CentOS.

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️

Zjistěte, jak vytvořit a nahrát virtuální pevný disk Azure (VHD), který obsahuje operační systém Linux založený na CentOS. Další informace naleznete v tématu:

Požadavky

Tento článek předpokládá, že jste už na virtuální pevný disk nainstalovali operační systém CentOS (nebo podobný odvozený operační systém Linux). Existuje několik nástrojů pro vytvoření souborů .vhd. Příkladem je virtualizační řešení, jako je Hyper-V. Pokyny najdete v tématu Instalace role Hyper-V a konfigurace virtuálního počítače.

Poznámky k instalaci CentOS

  • Další tipy k přípravě Linuxu pro Azure najdete v obecných poznámkách k instalaci Linuxu.
  • Formát VHDX není v Azure podporovaný, pouze pevný virtuální pevný disk. Disk můžete převést na formát VHD pomocí Správce technologie Hyper-V nebo rutiny convert-vhd . Pokud používáte VirtualBox, vyberete pevnou velikost na rozdíl od výchozí hodnoty, která se při vytváření disku dynamicky přiděluje.
  • Modul jádra vfat musí být v jádru povolený.
  • Při instalaci systému Linux doporučujeme používat standardní oddíly místo Správce logických svazků (LVM), což je často výchozí nastavení pro mnoho instalací. Použití oddílů zabraňuje konfliktům názvů LVM s klonovanými virtuálními počítači, zejména v případě, že by se disk s operačním systémem někdy potřeboval připojit k jinému identickému virtuálnímu počítači pro účely řešení potíží. LVM nebo RAID lze také použít na datových discích.
  • Je nutná podpora jádra pro připojení uživatelem definovaných funkcí (UDF). Při prvním spuštění v Azure se konfigurace zřizování předá virtuálnímu počítači s Linuxem pomocí média formátovaného uživatelem definovaného uživatelem, které je připojené k hostovi. Agent Azure Linux nebo cloud-init musí připojit systém souborů UDF ke čtení konfigurace a zřízení virtuálního počítače.
  • Verze jádra Linuxu nižší než 2.6.37 nepodporují technologii NUMA v Hyper-V s většími velikostmi virtuálních počítačů. Tento problém primárně ovlivňuje starší distribuce používající upstreamové jádro Centos 2.6.32 a bylo opraveno v Centos 6.6 (jádro-2.6.32-504). Systémy, na kterých běží vlastní jádra starší než 2.6.37 nebo Red Hat Enterprise Linux (RHEL) starší než 2.6.32-504, musí nastavit spouštěcí parametr numa=off na příkazovém řádku jádra v grub.conf. Další informace najdete v článku Red Hat KB 436883.
  • Nenakonfigurujte prohození oddílu na disku s operačním systémem.
  • Všechny virtuální pevné disky v Azure musí mít virtuální velikost zarovnanou na 1 MB. Při převodu z nezpracovaného disku na virtuální pevný disk je nutné před převodem zajistit, aby velikost nezpracovaného disku byla násobkem 1 MB. Další informace najdete v poznámkách k instalaci Linuxu.

Poznámka:

Cloud-init >= 21.2 odebere požadavek UDF. Bez povoleného modulu UDF se ale disk CD-ROM během zřizování nepřipevní, což zabrání použití vlastních dat. Alternativním řešením této situace je použití vlastních dat pomocí uživatelských dat. Na rozdíl od vlastních dat nejsou uživatelská data šifrovaná. Další informace naleznete v tématu Formáty uživatelských dat.

CentOS 6.x

Důležité

CentOS 6 dosáhl své EOL a už ji nepodporuje komunita CentOS. Pro tuto verzi nebudou vydány žádné další aktualizace ani opravy zabezpečení, které by mohly být ohroženy potenciálními bezpečnostními riziky. Důrazně doporučujeme upgradovat na novější verzi CentOS, abyste zajistili bezpečnost a stabilitu systému. Pokud potřebujete další pomoc, obraťte se na it oddělení nebo správce systému.

  1. Ve Správci technologie Hyper-V vyberte virtuální počítač.

  2. Výběrem možnosti Připojit otevřete okno konzoly pro virtuální počítač.

  3. V CentOS 6 NetworkManager může kolidovat s agentem Azure Linux. Odinstalujte tento balíček:

    sudo rpm -e --nodeps NetworkManager
    
  4. Vytvořte nebo upravte soubor /etc/sysconfig/network a přidejte následující text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Vytvořte nebo upravte soubor /etc/sysconfig/network-scripts/ifcfg-eth0 a přidejte následující text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Upravte pravidla udev, aby se zabránilo generování statických pravidel pro ethernetová rozhraní. Tato pravidla můžou způsobovat problémy při klonování virtuálního počítače v Azure nebo 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. Ujistěte se, že se síťová služba spouští při spuštění:

    sudo chkconfig network on
    
  8. Pokud chcete použít zrcadla OpenLogic hostovaná v datacentrech Azure, nahraďte /etc/yum.repos.d/CentOS-Base.repo soubor následujícími úložišti. Tato akce také přidá úložiště [openlogic], které obsahuje další balíčky, jako je agent Azure Linux:

    [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 might 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
    

    Poznámka:

    Zbytek tohoto článku předpokládá, že používáte aspoň [openlogic] úložiště, které se používá k instalaci agenta Azure Linux.

  9. Přidejte následující řádek:/etc/yum.conf

    http_caching=packages
    
  10. Vymažte aktuální metadata yum a aktualizujte systém nejnovějšími balíčky:

    sudo yum clean all
    

    Pokud nevytvoříte image pro starší verzi CentOS, doporučujeme aktualizovat všechny balíčky na nejnovější verzi:

    sudo yum -y update
    

    Po spuštění tohoto příkazu může být vyžadováno restartování.

  11. Volitelné: Nainstalujte ovladače pro linuxové integrační služby (LIS).

    Důležité

    Tento krok se vyžaduje pro CentOS 6.3 a starší a je volitelný pro pozdější verze.

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

    Případně můžete postupovat podle pokynů k ruční instalaci na stránce pro stažení LIS a nainstalovat rpm na virtuální počítač.

  12. Nainstalujte agenta Azure s Linuxem a závislosti. Spusťte a povolte waagent službu:

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

    Balíček WALinuxAgent odebere NetworkManager balíčky a NetworkManager-gnome balíčky, pokud ještě nebyly odebrány, jak je popsáno v kroku 3.

  13. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Pokud chcete tento krok provést, otevřete /boot/grub/menu.lst v textovém editoru a ujistěte se, že výchozí jádro obsahuje následující parametry:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Tato úprava také zajišťuje, aby se všechny zprávy konzoly odesílaly na první sériový port, který může pomoct podpora Azure s problémy s laděním.

    Doporučujeme také odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění není užitečné v cloudovém prostředí, kde chcete, aby se všechny protokoly odesílaly na sériový port. Možnost crashkernel můžete nechat nakonfigurovanou, pokud chcete. Tento parametr ale snižuje množství dostupné paměti na virtuálním počítači o 128 MB nebo více, což může být problém u menších velikostí virtuálních počítačů.

    Důležité

    CentOS 6.5 a starší musí také nastavit parametr numa=offjádra . Další informace najdete v článku Red Hat KB 436883.

  14. Ujistěte se, že je server Secure Shell nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění. Toto nastavení je obvykle výchozí.

  15. Nevytvávejte místo prohození na disku s operačním systémem.

    Agent Azure s Linuxem může automaticky nakonfigurovat místo prohození pomocí disku místního prostředku, který je připojený k virtuálnímu počítači po zřízení virtuálního počítače v Azure. Místní disk prostředku je dočasný disk a může se vyprázdnit při zrušení zřízení virtuálního počítače. Po instalaci agenta Azure Linuxu (viz předchozí krok) odpovídajícím způsobem upravte následující 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. Zrušte zřízení virtuálního počítače a připravte ho na zřizování v Azure:

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

    Poznámka:

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení.

  17. Ve Správci technologie Hyper-V vyberte akci>vypnout. Váš virtuální pevný disk s Linuxem je teď připravený k nahrání do Azure.

CentOS 7.0+

Pokud používáte CentOS 7.0+, postupujte podle kroků v dalších částech.

Změny v CentOS 7 (a podobné deriváty)

Příprava virtuálního počítače s CentOS 7 pro Azure se podobá CentOS 6. Stojí za zmínku několik důležitých rozdílů:

  • Balíček NetworkManager už není v konfliktu s agentem Azure Linux. Tento balíček je ve výchozím nastavení nainstalovaný a doporučujeme ho neodebrat.

  • GRUB2 se teď používá jako výchozí spouštěcí zavaděč, takže se změnil postup úprav parametrů jádra. (Viz část Kroky konfigurace.)

  • XFS je teď výchozím systémem souborů. Systém souborů ext4 je stále možné použít, pokud chcete.

  • Protože služba CentOS 8 Stream a novější už ve výchozím nastavení nezahrnují network.service , musíte ji nainstalovat ručně:

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

Kroky konfigurace

  1. Ve Správci technologie Hyper-V vyberte virtuální počítač.

  2. Výběrem možnosti Připojit otevřete okno konzoly pro virtuální počítač.

  3. Vytvořte nebo upravte soubor /etc/sysconfig/network a přidejte následující text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Vytvořte nebo upravte soubor /etc/sysconfig/network-scripts/ifcfg-eth0 a přidejte následující text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Upravte pravidla udev, aby se zabránilo generování statických pravidel pro ethernetová rozhraní. Tato pravidla můžou způsobovat problémy při klonování virtuálního počítače v Azure nebo Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Pokud chcete použít OpenLogic zrcadla hostovaná v datacentrech Azure, nahraďte soubor /etc/yum.repos.d/CentOS-Base.repo následujícím úložištěm. Tato akce také přidá úložiště [openlogic], které obsahuje balíčky pro agenta Azure Linux:

    [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 might 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
    

    Poznámka:

    Zbytek tohoto článku předpokládá, že používáte aspoň [openlogic] úložiště, které se používá k instalaci agenta Azure Linux.

  7. Vymažte aktuální metadata yum a nainstalujte všechny aktualizace:

    sudo yum clean all
    

    Pokud nevytvoříte image pro starší verzi CentOS, doporučujeme aktualizovat všechny balíčky na nejnovější verzi:

    sudo yum -y update
    

    Po spuštění tohoto příkazu může být vyžadováno restartování.

  8. Upravte spouštěcí řádek jádra v konfiguraci grubu tak, aby zahrnoval další parametry jádra pro Azure. Pokud chcete tento krok provést, otevřete /etc/default/grub ho v textovém editoru a upravte GRUB_CMDLINE_LINUX parametr. Příklad:

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

    Tato úprava také zajišťuje, aby se všechny zprávy konzoly odesílaly na první sériový port, který může pomoct podpora Azure s problémy s laděním. Vypne také nové zásady vytváření názvů CentOS 7 pro síťové karty. Doporučujeme také odebrat následující parametry:

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění není užitečné v cloudovém prostředí, kde chcete, aby se všechny protokoly odesílaly na sériový port. Možnost crashkernel můžete nechat nakonfigurovanou, pokud chcete. Tento parametr ale snižuje množství dostupné paměti na virtuálním počítači o 128 MB nebo více, což může být problém u menších velikostí virtuálních počítačů.

  9. Po dokončení úprav /etc/default/grubznovu sestavte konfiguraci grubu:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Poznámka:

    Pokud nahráváte virtuální počítač s povoleným rozhraním UEFI, příkaz pro aktualizaci grubu je grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. Modul jádra vfat musí být také v jádru povolený. V opačném případě se zřizování nezdaří.

    Ujistěte se, že je povolený modul udf. Odebrání nebo zakázání způsobí selhání zřizování nebo spuštění. (_Cloud-init >= 21.2 odebere požadavek udf. Další informace najdete v horní části dokumentu.)

  10. Pokud vytváříte image z VMware, VirtualBoxu nebo KVM, ujistěte se, že jsou ovladače Hyper-V součástí initramfs:

    1. Upravit /etc/dracut.conf a přidat obsah:

      add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
      
    2. Znovu sestavte initramfs:

      sudo dracut -f -v
      
  11. Nainstalujte agenta Azure s Linuxem a závislosti pro rozšíření virtuálních počítačů Azure:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  12. Instalace cloud-init pro zpracování zřizování:

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    • Konfigurovat waagent pro 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
    
  13. Konfigurace prohození:

    1. Nevytvávejte místo prohození na disku s operačním systémem.

      Dříve se agent Azure s Linuxem použil k automatické konfiguraci prohození místa pomocí místního disku prostředku připojeného k virtuálnímu počítači po zřízení virtuálního počítače v Azure. Teď ale cloud-init tento krok zpracuje. K vytvoření prohození souboru nesmíte použít agenta Linuxu. Odpovídajícím způsobem upravte následující 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
      
    2. Pokud chcete připojit, formátovat a vytvořit prohození souboru, můžete:

      • Tento příkaz předejte jako cloud-init konfiguraci při každém vytvoření virtuálního počítače.

      • K tomuto kroku při každém vytvoření virtuálního počítače použijte direktivu cloud-init upečenou do image:

        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
        
  14. Spuštěním následujících příkazů virtuální počítač zrušte a připravte ho na zřízení v Azure.

    Poznámka:

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení.

    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
    
  15. Ve Správci technologie Hyper-V vyberte akci>vypnout. Váš virtuální pevný disk s Linuxem je teď připravený k nahrání do Azure.

Teď jste připraveni použít virtuální pevný disk CentOS s Linuxem k vytvoření nových virtuálních počítačů v Azure. Pokud soubor .vhd nahráváte do Azure poprvé, přečtěte si téma Vytvoření virtuálního počítače s Linuxem z vlastního disku.