Dela via


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-vägledningen för livets slut.

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 (OS). Mer information finns i:

Förutsättningar

Den här artikeln förutsätter att du redan har installerat ett CentOS(eller liknande derivat) Linux-operativsystem till en virtuell hårddisk. Det finns flera verktyg för att skapa VHD-filer. Ett exempel är 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 väljer du Fast storlek i stället för standardvärdet som allokeras dynamiskt 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 Logical Volume Manager (LVM), vilket ofta är standard för många installationer. Med hjälp av partitioner undviks LVM-namnkonflikter 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 också användas på datadiskar.
  • Kernelstöd för montering av användardefinierade funktionsfilsystem (UDF) ä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 kopplade 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 Red Hat Enterprise Linux (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 CD-ROM under etableringen, vilket förhindrar att anpassade data tillämpas. En lösning för den här situationen är att använda anpassade data med hjälp av användardata. Till skillnad från anpassade data krypteras inte användardata. Mer information finns i Användardataformat.

CentOS 6.x

Viktigt!

CentOS 6 har nått sin EOL och stöds inte längre av CentOS-communityn. 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 om du vill ha mer hjälp.

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

  2. Välj Anslut för att öppna ett konsolfönster för den virtuella datorn.

  3. I CentOS 6 NetworkManager kan det störa Azure Linux-agenten. Avinstallera det här paketet:

    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 när du klonar en virtuell dator i 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:

    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. Den här åtgärden 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 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
    

    Kommentar

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

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

    http_caching=packages
    
  10. 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 är valfritt för senare versioner.

    sudo rpm -e hypervkvpd  ## (might return an 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 beroenden. Starta och aktivera waagent tjänsten:

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

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

  13. Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller andra kernelparametrar för Azure. Om du vill göra det här steget öppnar /boot/grub/menu.lst du i en textredigerare och ser till att standardkärnan innehåller följande parametrar:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

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

    Vi rekommenderar också att du tar bort följande parametrar:

    rhgb quiet crashkernel=auto
    

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

    Viktigt!

    CentOS 6.5 och tidigare måste också ange kernelparametern numa=off. Mer information finns i Red Hat KB 436883.

  14. Kontrollera att Secure Shell-servern är installerad och konfigurerad för att starta vid start. Den här inställningen är vanligtvis standardinställningen.

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

    Azure Linux-agenten kan automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisk som är ansluten till den virtuella datorn när den virtuella datorn har etablerats 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 rätt 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. Avetablera den virtuella datorn och förbered 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.

  17. Välj Åtgärden>stängs av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.

CentOS 7.0+

Följ stegen i nästa avsnitt om du använder 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. Flera betydande skillnader är värda att notera:

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

  • GRUB2 används nu som standardstartläsare, så proceduren för att redigera kernelparametrar har ändrats. (Se avsnittet "Konfigurationssteg".)

  • 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. Välj 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 när du klonar en virtuell dator i Azure eller Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Om du vill använda speglarna OpenLogic som finns i Azure-datacenter ersätter du filen /etc/yum.repos.d/CentOS-Base.repo med följande lagringsplatser. Den här åtgärden 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 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
    

    Kommentar

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

  7. 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 andra kernelparametrar för Azure. Om du vill göra det här steget öppnar /etc/default/grub du i en textredigerare och redigerar parametern GRUB_CMDLINE_LINUX . Till exempel:

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

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

    rhgb quiet crashkernel=auto
    

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

  9. När du är klar med redigeringen /etc/default/grubåterskapar du 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 eller inaktiverar det orsakas ett etablerings- eller startfel. (_Cloud-init >= 21.2 tar bort udf-kravet. Mer information finns överst i dokumentet.)

  10. Om du skapar avbildningen från VMware, VirtualBox eller KVM kontrollerar du att Hyper-V-drivrutinerna ingår i initramfs:

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

      add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
      
    2. Återskapa initramferna:

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

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

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    • 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
    
  13. Växlingskonfiguration:

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

      Tidigare användes Azure Linux-agenten för att automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisken som är ansluten till den virtuella datorn efter att den virtuella datorn har etablerats i Azure. cloud-init Men nu hanterar det här steget. Du får inte använda Linux-agenten för att formatera resursdisken för att 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
      
    2. Om du vill montera, formatera och skapa växlingsfilen kan du antingen:

      • Skicka det här kommandot som en cloud-init konfiguration varje gång du skapar en virtuell dator.

      • Använd ett cloud-init direktiv som bakats in i avbildningen för att göra det här steget 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
        
  14. 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
    
  15. Välj Åtgärden>stängs av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.

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.