CentOS-alapú virtuális gép előkészítése az Azure-beli használatra

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek ✔️ Rugalmas méretezési készletek

Megtudhatja, hogyan hozhat létre és tölthet fel CentOS-alapú Linux operációs rendszert tartalmazó Azure-beli virtuális merevlemezt (VHD).

Előfeltételek

Ez a cikk feltételezi, hogy már telepített egy CentOS (vagy hasonló származtatott) Linux operációs rendszert egy virtuális merevlemezre. A .vhd fájlok létrehozásához több eszköz is rendelkezésre áll, például egy virtualizálási megoldás, például a Hyper-V. Útmutatásért lásd: Install the Hyper-V Role (A Hyper-V szerepkör telepítése) és Configure a Virtual Machine (Virtuális gép konfigurálása).

CentOS telepítési megjegyzések

  • A Linux Azure-hoz való előkészítésével kapcsolatos további tippekért tekintse meg a Linux telepítési megjegyzéseit is.
  • Az Azure nem támogatja a VHDX formátumot, csak a rögzített VHD-t. A lemezt VHD formátumra konvertálhatja a Hyper-V kezelője vagy a convert-vhd parancsmag használatával. Ha VirtualBoxot használ, akkor a Rögzített méret értéket kell választania, nem pedig a lemez létrehozásakor lefoglalt alapértelmezett dinamikusan.
  • A Linux-rendszer telepítésekor javasoljuk, hogy az LVM helyett használjon standard partíciókat (gyakran sok telepítés esetén ez az alapértelmezett). Ezzel elkerülhetők az LVM-névütközések a klónozott virtuális gépekkel, különösen akkor, ha az operációsrendszer-lemezt egy másik azonos virtuális géphez kell csatolni hibaelhárításhoz. Az LVM vagy RAID adatlemezen is használható.
  • Az UDF fájlrendszerek csatlakoztatásához kerneltámogatás szükséges. Az Azure-ban az első rendszerindításkor a kiépítési konfiguráció a vendéghez csatolt UDF formátumú adathordozón keresztül lesz átküldve a Linux rendszerű virtuális gépre. Az Azure Linux-ügynöknek képesnek kell lennie csatlakoztatni az UDF fájlrendszert, hogy beolvassa a konfigurációját, és kiépítse a virtuális gépet.
  • A 2.6.37-esnél régebbi Linux-kernelverziók nem támogatják a NUMA-t a hyper-V-n nagyobb méretű virtuális gépeken. Ez a probléma elsősorban a régebbi, a felfelé irányuló Red Hat 2.6.32 kernelt használó disztribúciókat befolyásolja, és az RHEL 6.6-ban javítva lett (kernel-2.6.32-504). A 2.6.37-esnél régebbi egyéni kerneleket vagy a 2.6.32-504-esnél régebbi RHEL-alapú kerneleket futtató rendszereknek be kell állítaniuk a rendszerindítási paramétert a numa=off grub.conf fájl kernel parancssorában. További információ: Red Hat KB 436883.
  • Ne konfigurálja a felcserélési partíciót az operációsrendszer-lemezen. Erről az alábbi lépésekben talál további információt.
  • Az Azure-ban minden virtuális merevlemeznek 1 MB-hoz igazított virtuális méretűnek kell lennie. Amikor nyers lemezről VHD-re konvertál, a konvertálás előtt győződjön meg arról, hogy a nyers lemez mérete 1 MB többszöröse. További információkért lásd a Linux telepítési megjegyzéseit.

CentOS 6.x

  1. A Hyper-V kezelője mezőben válassza ki a virtuális gépet.

  2. Kattintson Csatlakozás elemre a virtuális gép konzolablakának megnyitásához.

  3. A CentOS 6-ban a NetworkManager zavarhatja az Azure Linux-ügynököt. Távolítsa el ezt a csomagot a következő parancs futtatásával:

    sudo rpm -e --nodeps NetworkManager
    
  4. Hozza létre vagy szerkessze a /etc/sysconfig/network fájlt, és adja hozzá a következő szöveget:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Hozza létre vagy szerkessze a /etc/sysconfig/network-scripts/ifcfg-eth0 fájlt, és adja hozzá a következő szöveget:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Módosítsa a udev-szabályokat, hogy elkerülje a statikus szabályok generálása az Ethernet-interfész(ök)hez. Ezek a szabályok problémákat okozhatnak a virtuális gépek klónozásakor a Microsoft Azure Hyper-V környezetben:

    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. A következő parancs futtatásával győződjön meg arról, hogy a hálózati szolgáltatás a rendszerindításkor indul el:

    sudo chkconfig network on
    
  8. Ha az Azure-adatközpontokban üzemeltetett OpenLogic-tükrözéseket szeretné használni, cserélje le a fájlt a következő /etc/yum.repos.d/CentOS-Base.repo adattárakra. Ez hozzáadja az [openlogic] adattárat is, amely további csomagokat tartalmaz, például az Azure Linux-ügynököt:

    [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
    

    Megjegyzés

    Az útmutató további részében feltételezzük, hogy legalább az azure-beli Linux-ügynök telepítéséhez használt, legalább a [openlogic] repo-t használja.

  9. Adja hozzá a következő sort az /etc/yum.conf fájlhoz:

    http_caching=packages
    
  10. Az alábbi parancs futtatásával törölje az aktuális yum-metaadatokat, és frissítse a rendszert a legújabb csomagokkal:

    yum clean all
    

    Ha nem a CentOS egy régebbi verziójához hoz létre rendszerképet, javasoljuk, hogy frissítse az összes csomagot a legújabbra:

    sudo yum -y update
    

    A parancs futtatása után újraindításra lehet szükség.

  11. (Nem kötelező) Telepítse a Linux integrációs szolgáltatások (LIS) illesztőprogramjait.

    Fontos

    A lépés a CentOS 6.3-as és korábbi verzióihoz szükséges, és a későbbi kiadásokhoz nem kötelező.

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

    Másik lehetőségként a LIS letöltési oldalán található manuális telepítési utasításokat követve telepítheti az RPM-et a virtuális gépre.

  12. Telepítse az Azure Linux-ügynököt és -függőségeket. Indítsa el és engedélyezze a waagent szolgáltatást:

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

    A WALinuxAgent csomag eltávolítja a NetworkManager és a NetworkManager-package csomagokat, ha azokat még nem távolították el a 3. lépésben leírtak szerint.

  13. Módosítsa a kernel rendszerindítási sorát a Grub-konfigurációban úgy, hogy további kernelparamétereket tartalmaz az Azure-hoz. Ehhez nyisson meg egy szövegszerkesztőt, és győződjön meg arról, hogy az alapértelmezett /boot/grub/menu.lst kernel a következő paramétereket tartalmazza:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Ez biztosítja azt is, hogy az összes konzolüzenet az első soros portra legyen küldve, ami Azure-támogatás problémák megoldásához.

    A fentiek mellett a következő paraméterek eltávolítása is javasolt:

    rhgb quiet crashkernel=auto
    

    A grafikus és csendes rendszerindítás nem hasznos olyan felhőalapú környezetben, ahol az összes naplót a soros portra szeretnénk küldeni. A beállítás szükség esetén konfigurálva hagyható, de vegye figyelembe, hogy ez a paraméter 128 MB-os vagy nagyobb mérettel csökkenti a virtuális gépen rendelkezésre álló memória mennyiségét, ami a kisebb virtuálisgép-méretek esetén problémás crashkernel lehet.

    Fontos

    A CentOS 6.5-ös és korábbi verzióinak szintén be kell állítaniuk a kernelparamétert. numa=off Lásd: Red Hat KB 436883.

  14. Győződjön meg arról, hogy az SSH-kiszolgáló telepítve van, és a rendszerindításkor való indításra van konfigurálva. Általában ez az alapértelmezett beállítás.

  15. Ne hozzon létre felcserélési területet az operációsrendszer-lemezen.

    Az Azure Linux-ügynök automatikusan konfigurálhatja a felcserélési területet a virtuális géphez csatolt helyi erőforráslemezzel az Azure-beli üzembehelyezés után. Vegye figyelembe, hogy a helyi erőforráslemez ideiglenes lemez, és a virtuális gép megszüntetésekor kiürítődhet. Az Azure Linux-ügynök telepítése után (lásd az előző lépést) módosítsa a következő paramétereket a /etc/waagent.conf megfelelő módon:

    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. Futtassa az alábbi parancsokat a virtuális gép megszüntetéshez és az Azure-beli üzembe építés előkészítéséhez:

    sudo waagent -force -deprovision+user
    export HISTSIZE=0
    logout
    
  17. Kattintson a Művelet -> a Hyper-V kezelőben elemre. A Linux VHD most már készen áll az Azure-ba való feltöltésre.

CentOS 7.0+

A CentOS 7 változásai (és hasonló származtatott termékek)

A CentOS 7 virtuális gépek Azure-hoz való előkészítése nagyon hasonló a CentOS 6-hoz, de van néhány fontos különbség, amit érdemes megjegyezni:

  • A NetworkManager csomag már nem ütközik az Azure Linux-ügynökkel. Ez a csomag alapértelmezés szerint telepítve van, és azt javasoljuk, hogy ne távolítsa el.
  • A GRUB2 már alapértelmezett rendszertöltőként van használva, ezért a kernelparaméterek szerkesztési eljárása megváltozott (lásd alább).
  • Mostantól az XFS az alapértelmezett fájlrendszer. Az ext4 fájlrendszer szükség esetén továbbra is használható.

Konfigurációs lépések

  1. A Hyper-V kezelője mezőben válassza ki a virtuális gépet.

  2. Kattintson Csatlakozás elemre a virtuális gép konzolablakának megnyitásához.

  3. Hozza létre vagy szerkessze a /etc/sysconfig/network fájlt, és adja hozzá a következő szöveget:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Hozza létre vagy szerkessze a /etc/sysconfig/network-scripts/ifcfg-eth0 fájlt, és adja hozzá a következő szöveget:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Módosítsa a udev-szabályokat, hogy elkerülje a statikus szabályok generálása az Ethernet-interfész(ök)hez. Ezek a szabályok problémákat okozhatnak a virtuális gépek klónozásakor a Microsoft Azure Hyper-V környezetben:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Ha az Azure-adatközpontokban üzemeltetett OpenLogic-tükrözéseket szeretné használni, cserélje le a fájlt a következő /etc/yum.repos.d/CentOS-Base.repo adattárakra. Ez hozzáadja az [openlogic] adattárat is, amely csomagokat tartalmaz az Azure Linux-ügynökhöz:

    [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
    

    Megjegyzés

    Az útmutató további részében feltételezzük, hogy legalább az azure-beli Linux-ügynök telepítéséhez használt, legalább a [openlogic] repo-t használja.

  7. Az alábbi parancs futtatásával törölje az aktuális yum-metaadatokat, és telepítse a frissítéseket:

    sudo yum clean all
    

    Ha nem a CentOS egy régebbi verziójához hoz létre rendszerképet, javasoljuk, hogy frissítse az összes csomagot a legújabbra:

    sudo yum -y update
    

    A parancs futtatása után szükség lehet egy újraindításra.

  8. Módosítsa a kernel rendszerindítási sorát a Grub-konfigurációban úgy, hogy további kernelparamétereket tartalmaz az Azure-hoz. Ehhez nyissa meg /etc/default/grub a szerkesztőt egy szövegszerkesztőben, és szerkessze a GRUB_CMDLINE_LINUX paramétert, például:

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

    Ez biztosítja azt is, hogy az összes konzolüzenet az első soros portra legyen küldve, ami Azure-támogatás problémák megoldásához. Emellett kikapcsolja a NIC-k új CentOS 7 elnevezési konvencióit. A fentiek mellett a következő paraméterek eltávolítása is javasolt:

    rhgb quiet crashkernel=auto
    

    A grafikus és csendes rendszerindítás nem hasznos olyan felhőalapú környezetben, ahol az összes naplót a soros portra szeretnénk küldeni. A beállítás szükség esetén konfigurálva hagyható, de vegye figyelembe, hogy ez a paraméter 128 MB-os vagy nagyobb mérettel csökkenti a virtuális gépen rendelkezésre álló memória mennyiségét, ami a kisebb virtuálisgép-méretek esetén problémás crashkernel lehet.

  9. Miután végzett a fenti szerkesztéssel, futtassa a következő parancsot a /etc/default/grub grub-konfiguráció újraépítéséhez:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. Ha VMware, VirtualBox vagy KVM rendszerképet épít fel: Győződjön meg arról, hogy a Hyper-V-illesztőprogramok szerepelnek az initramfs fájlban:

    Szerkesztés, /etc/dracut.conf tartalom hozzáadása:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Építse újra az initramfs-t:

    sudo dracut -f -v
    
  11. Telepítse az Azure Linux-ügynököt és -függőségeket az Azure-beli virtuálisgép-bővítményekhez:

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  12. A cloud-init telepítése a kiépítés kezeléséhez

    yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    # Configure waagent for cloud-init
    sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
    sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=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
    
    echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    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
    
    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. Felcserélési konfiguráció Ne hozzon létre felcserélési területet az operációsrendszer-lemezen.

    Korábban az Azure Linux-ügynököt a rendszer automatikusan konfigurálta a felcserélési területnek a virtuális géphez csatolt helyi erőforráslemez használatával, miután a virtuális gép üzembe lett állítva az Azure-ban. Ezt azonban a cloud-init kezeli, nem használhatja a Linux-ügynököt a felcserélési fájl létrehozásához használt erőforráslemez formázására, és a következő paramétereket a megfelelő módon kell /etc/waagent.conf módosítania:

    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
    

    Ha csatlakoztatni, formázni és létrehozni szeretné a felcserélést, a következőt használhatja:

    • Adja át ezt cloud-init konfigurációként minden alkalommal, amikor létrehoz egy virtuális gépet

    • A rendszerképbe be van vésve egy cloud-init irányelv, amely ezt a virtuális gép minden létrehozásakor meg fogja tenni:

      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", "0", "0"]
      EOF
      
  14. Futtassa az alábbi parancsokat a virtuális gép megszüntetéshez és az Azure-beli kiépítésre való előkészítéséhez:

    # Note: if you are migrating a specific virtual machine and do not wish to create a generalized image,
    # skip the deprovision step
    # sudo rm -rf /var/lib/waagent/
    # sudo rm -f /var/log/waagent.log
    
    # waagent -force -deprovision+user
    # rm -f ~/.bash_history
    
    
    # export HISTSIZE=0
    
    # logout
    
  15. Kattintson a Művelet -> Leállít elemre a Hyper-V kezelőben. A Linux VHD most már készen áll az Azure-ba való feltöltésre.

Következő lépések

Most már készen áll arra, hogy CentOS Linux rendszerű virtuális merevlemezét új virtuális gépek létrehozására használja az Azure-ban. Ha első alkalommal tölti fel a .vhd fájlt az Azure-ba,tekintse meg a Linux rendszerű virtuális gép egyéni lemezről való létrehozása( )