Förbereda en CentOS-baserad virtuell dator för Azure

Varning

Den här artikeln refererar till CentOS, en Linux-distribution som närmar sig EOL-status (End Of Life). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️

Lär dig hur du skapar och laddar upp en virtuell Azure-hårddisk (VHD) som innehåller ett CentOS-baserat Linux-operativsystem.

Förutsättningar

Den här artikeln förutsätter att du redan har installerat ett CentOS-operativsystem (eller liknande härledda) Linux-operativsystem på en virtuell hårddisk. Det finns flera verktyg för att skapa VHD-filer, till exempel en virtualiseringslösning som Hyper-V. Anvisningar finns i Installera Hyper-V-rollen och Konfigurera en virtuell dator.

Installationsanmärkningar för CentOS

  • Fler tips om hur du förbereder Linux för Azure finns i Allmänna Linux-installationsanteckningar.
  • VHDX-formatet stöds inte i Azure, endast fast virtuell hårddisk. Du kan konvertera disken till VHD-format med Hjälp av Hyper-V Manager eller cmdleten convert-vhd. Om du använder VirtualBox innebär det att du väljer Fast storlek i stället för standardinställningen dynamiskt allokerad när du skapar disken.
  • Modulen vfat kernel måste vara aktiverad i kerneln
  • När du installerar Linux-systemet rekommenderar vi att du använder standardpartitioner i stället för LVM (ofta standard för många installationer). Detta förhindrar att LVM-namn står i konflikt med klonade virtuella datorer, särskilt om en OS-disk någonsin behöver anslutas till en annan identisk virtuell dator för felsökning. LVM eller RAID kan användas på datadiskar.
  • Kernelstöd för montering av UDF-filsystem är nödvändigt. Vid första starten på Azure skickas etableringskonfigurationen till den virtuella Linux-datorn med hjälp av UDF-formaterade medier som är anslutna till gästen. Azure Linux-agenten eller cloud-init måste montera UDF-filsystemet för att läsa dess konfiguration och etablera den virtuella datorn.
  • Linux-kernelversioner under 2.6.37 stöder inte NUMA på Hyper-V med större VM-storlekar. Det här problemet påverkar främst äldre distributioner med den överordnade Centos 2.6.32-kerneln och har åtgärdats i Centos 6.6 (kernel-2.6.32-504). System som kör anpassade kernels som är äldre än 2.6.37 eller RHEL-baserade kernels som är äldre än 2.6.32-504 måste ange startparametern numa=off på kernelkommandoraden i grub.conf. Mer information finns i Red Hat KB 436883.
  • Konfigurera inte en växlingspartition på OS-disken.
  • Alla virtuella hårddiskar i Azure måste ha en virtuell storlek som är justerad till 1 MB. När du konverterar från en rådisk till en virtuell hårddisk måste du se till att den råa diskstorleken är en multipel på 1 MB före konverteringen. Mer information finns i Installationsanteckningar för Linux.

Kommentar

Cloud-init >= 21.2 tar bort udf-kravet. Men utan att udf-modulen är aktiverad monteras inte cdrom-filen under etableringen, vilket förhindrar att anpassade data tillämpas. En lösning för detta är att tillämpa anpassade data med hjälp av användardata. Men till skillnad från anpassade data krypteras inte användardata. https://cloudinit.readthedocs.io/en/latest/topics/format.html

CentOS 6.x

Viktigt!

Observera att CentOS 6 har nått sitt slut på livet (EOL) och inte längre stöds av CentOS-communityn. Det innebär att inga ytterligare uppdateringar eller säkerhetskorrigeringar släpps för den här versionen, vilket gör den sårbar för potentiella säkerhetsrisker. Vi rekommenderar starkt att du uppgraderar till en nyare version av CentOS för att säkerställa säkerheten och stabiliteten i systemet. Kontakta IT-avdelningen eller systemadministratören för ytterligare hjälp.

  1. I Hyper-V Manager väljer du den virtuella datorn.

  2. Klicka på Anslut för att öppna ett konsolfönster för den virtuella datorn.

  3. I CentOS 6 kan NetworkManager störa Azure Linux-agenten. Avinstallera det här paketet genom att köra följande kommando:

    sudo rpm -e --nodeps NetworkManager
    
  4. Skapa eller redigera filen /etc/sysconfig/network och lägg till följande text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Skapa eller redigera filen /etc/sysconfig/network-scripts/ifcfg-eth0 och lägg till följande text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Ändra udev-regler för att undvika att generera statiska regler för Ethernet-gränssnitten. Dessa regler kan orsaka problem vid kloning av en virtuell dator i Microsoft Azure eller 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. Kontrollera att nätverkstjänsten startar vid starttiden genom att köra följande kommando:

    sudo chkconfig network on
    
  8. Om du vill använda OpenLogic-speglarna som finns i Azure-datacenter ersätter /etc/yum.repos.d/CentOS-Base.repo du filen med följande lagringsplatser. Detta lägger också till lagringsplatsen [openlogic] som innehåller extra paket, till exempel Azure Linux-agenten:

    [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
    

    Kommentar

    Resten av den här guiden förutsätter att du använder minst lagringsplatsen [openlogic] , som kommer att användas för att installera Azure Linux-agenten nedan.

  9. Lägg till följande rad i /etc/yum.conf:

    http_caching=packages
    
  10. Kör följande kommando för att rensa aktuella yum-metadata och uppdatera systemet med de senaste paketen:

    sudo yum clean all
    

    Om du inte skapar en avbildning för en äldre version av CentOS rekommenderar vi att du uppdaterar alla paket till den senaste:

    sudo yum -y update
    

    En omstart kan krävas när du har kört det här kommandot.

  11. (Valfritt) Installera drivrutinerna för Linux Integration Services (LIS).

    Viktigt!

    Steget krävs för CentOS 6.3 och tidigare och valfritt för senare versioner.

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

    Du kan också följa instruktionerna för manuell installation på LIS-nedladdningssidan för att installera RPM på den virtuella datorn.

  12. Installera Azure Linux-agenten och beroendena. Starta och aktivera waagent-tjänsten:

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

    WALinuxAgent-paketet tar bort NetworkManager- och NetworkManager-gnome-paketen om de inte redan har tagits bort enligt beskrivningen i steg 3.

  13. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure. Det gör du genom att öppna /boot/grub/menu.lst i en textredigerare och se till att standardkärnan innehåller följande parametrar:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Detta säkerställer också att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem.

    Utöver ovanstående rekommenderar vi att du tar bort följande parametrar:

    rhgb quiet crashkernel=auto
    

    Grafiska och quiet boot är inte användbara i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Alternativet crashkernel kan lämnas konfigurerat om du vill, men observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara problematiskt för de mindre VM-storlekarna.

    Viktigt!

    CentOS 6.5 och tidigare måste också ange kernelparametern numa=off. Se Red Hat KB 436883.

  14. Kontrollera att SSH-servern är installerad och konfigurerad att starta vid start. Detta är vanligtvis standardvärdet.

  15. Skapa inte växlingsutrymme på OS-disken.

    Azure Linux-agenten kan automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisken som är ansluten till den virtuella datorn efter etableringen i Azure. Den lokala resursdisken är en tillfällig disk och kan tömmas när den virtuella datorn avetableras. När du har installerat Azure Linux-agenten (se föregående steg) ändrar du följande parametrar på /etc/waagent.conf lämpligt sätt:

    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. Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure:

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

Kommentar

Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget.

  1. Klicka på Åtgärd –> Stäng av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.

CentOS 7.0+

Förändringar i CentOS 7 (och liknande derivat)

Att förbereda en virtuell CentOS 7-dator för Azure liknar CentOS 6, men det finns flera betydande skillnader som är värda att notera:

  • NetworkManager-paketet står inte längre i konflikt med Azure Linux-agenten. Det här paketet installeras som standard och vi rekommenderar att det inte tas bort.

  • GRUB2 används nu som standardstartläsare, så proceduren för redigering av kernelparametrar har ändrats (se nedan).

  • XFS är nu standardfilsystemet. Ext4-filsystemet kan fortfarande användas om du vill.

  • Eftersom CentOS 8 Stream och senare inte längre ingår network.service som standard måste du installera den manuellt:

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

Konfigurationssteg

  1. I Hyper-V Manager väljer du den virtuella datorn.

  2. Klicka på Anslut för att öppna ett konsolfönster för den virtuella datorn.

  3. Skapa eller redigera filen /etc/sysconfig/network och lägg till följande text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Skapa eller redigera filen /etc/sysconfig/network-scripts/ifcfg-eth0 och lägg till följande text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Ändra udev-regler för att undvika att generera statiska regler för Ethernet-gränssnitten. Dessa regler kan orsaka problem vid kloning av en virtuell dator i Microsoft Azure eller Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Om du vill använda OpenLogic-speglarna som finns i Azure-datacenter ersätter /etc/yum.repos.d/CentOS-Base.repo du filen med följande lagringsplatser. Detta lägger också till lagringsplatsen [openlogic] som innehåller paket för Azure Linux-agenten:

    [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
    

    Kommentar

    Resten av den här guiden förutsätter att du använder minst lagringsplatsen [openlogic] , som kommer att användas för att installera Azure Linux-agenten nedan.

  7. Kör följande kommando för att rensa aktuella yum-metadata och installera eventuella uppdateringar:

    sudo yum clean all
    

    Om du inte skapar en avbildning för en äldre version av CentOS rekommenderar vi att du uppdaterar alla paket till den senaste:

    sudo yum -y update
    

    En omstart kan krävas när du har kört det här kommandot.

  8. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller ytterligare kernelparametrar för Azure. Det gör du genom att öppna /etc/default/grub i en textredigerare och redigera parametern GRUB_CMDLINE_LINUX , till exempel:

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

    Detta säkerställer också att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem. Det inaktiverar också de nya CentOS 7-namngivningskonventionerna för nätverkskort. Utöver ovanstående rekommenderar vi att du tar bort följande parametrar:

    rhgb quiet crashkernel=auto
    

    Grafisk och tyst start är inte användbart i en molnmiljö där vi vill att alla loggar ska skickas till serieporten. Alternativet crashkernel kan lämnas konfigurerat om du vill, men observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara problematiskt för de mindre VM-storlekarna.

  9. När du är klar med redigeringen /etc/default/grub ovan kör du följande kommando för att återskapa grub-konfigurationen:

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

Kommentar

Om du laddar upp en UEFI-aktiverad virtuell dator är grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfgkommandot för att uppdatera grub . Dessutom måste modulen vfat kernel vara aktiverad i kerneln, annars misslyckas etableringen.

Kontrollera att "udf" -modulen är aktiverad. Om du tar bort/inaktiverar dem uppstår ett etablerings-/startfel. (_Cloud-init >= 21.2 tar bort udf-kravet. Läs överst i dokumentet om du vill ha mer information.)

  1. Om du skapar avbildningen från VMware, VirtualBox eller KVM: Se till att Hyper-V-drivrutinerna ingår i initramferna:

    Redigera /etc/dracut.conf, lägg till innehåll:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Återskapa initramferna:

    sudo dracut -f -v
    
  2. Installera Azure Linux-agenten och beroenden för Azure VM-tillägg:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  3. Installera cloud-init för att hantera etableringen

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    1. Konfigurera waagent för 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. Växla konfiguration

    Skapa inte växlingsutrymme på operativsystemdisken.

    Tidigare användes Azure Linux-agenten för att automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisk som är ansluten till den virtuella datorn efter att den virtuella datorn har etablerats i Azure. Men detta hanteras nu av cloud-init, du får inte använda Linux-agenten för att formatera resursdisken skapa växlingsfilen, ändra följande parametrar på /etc/waagent.conf lämpligt sätt:

    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
    

    Om du vill montera, formatera och skapa växling kan du antingen:

    • Skicka in detta som en cloud-init-konfiguration varje gång du skapar en virtuell dator

    • Använd ett cloud-init-direktiv som bakas in i avbildningen som gör detta varje gång den virtuella datorn skapas:

      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. Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure:

    Kommentar

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget.

    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. Klicka på Åtgärd –> Stäng av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.

Nästa steg

Nu är du redo att använda din virtuella CentOS Linux-hårddisk för att skapa nya virtuella datorer i Azure. Om det är första gången du laddar upp VHD-filen till Azure läser du Skapa en virtuell Linux-dator från en anpassad disk.