Azure'da Red Hat tabanlı bir sanal makine hazırlama

Uygulama: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri ✔️ Tekdüz ölçek kümeleri

Bu makalede, Red Hat Enterprise Linux (RHEL) sanal makinesini Azure'da kullanmak üzere hazırlamayı öğrenirsiniz. Bu makalede ele alan RHEL sürümleri 6.7+ ve 7.1+ sürümleridir. Bu makalede ele alınan hazırlık hipervizörleri Hyper-V, çekirdek tabanlı sanal makine (KVM) ve VMware'tir. Red Hat'in Cloud Access programına katılma uygunluk gereksinimleri hakkında daha fazla bilgi için bkz. Red Hat'in Cloud Access web sitesi ve Azure'da RHEL çalıştırma. RHEL görüntüleri oluşturma işlemini otomatikleştirmenin yolları için bkz. Azure Görüntü Oluşturucusu.

Hyper-V Yöneticisi

Bu bölümde, Hyper-V Yöneticisi'ni kullanarak RHEL 6, RHEL 7veya RHEL 8 sanal makinesini hazırlamayı gösterir.

Önkoşullar

Bu bölümde Red Hat web sitesinden bir ISO dosyası edinmiş ve RHEL görüntüsünü bir sanal sabit diske (VHD) yüklemişsinizdir. Hyper-V Yöneticisi'ni kullanarak bir işletim sistemi görüntüsü yükleme hakkında daha fazla bilgi için bkz. Hyper-V Rolünü Yükleme ve Sanal Makine Yapılandırma.

RHEL yükleme notları

  • Azure, VHDX biçimini desteklemez. Azure yalnızca sabit VHD'leri destekler. Hyper-V Yöneticisi'ni kullanarak diski VHD biçimine dönüştürebilirsiniz veya convert-vhd cmdlet'ini kullanabilirsiniz. VirtualBox kullanıyorsanız, diski 7.000.000'den önce varsayılan dinamik olarak ayrılan seçeneğin aksine Sabit boyut'a tıklayın.

  • Azure, 2. Nesil (UEFI önyüklemesi) & 1. Nesil (BIOS önyüklemesi) sanal makinelerini destekler.

  • VHD için izin verilen en büyük boyut 1.023 GB'tır.

  • Mantıksal Birim Yöneticisi (LVM) de destekler ve Azure sanal makinelerdeki işletim sistemi disk veya veri diskleri üzerinde kullanılabilir. Ancak, genel olarak LVM yerine işletim sistemi disk üzerinde standart bölümlerin kullanılması önerilir. Bu uygulama, özellikle sorun giderme için aynı sanal makineye bir işletim sistemi diski eklemeniz gerekirse, kopyalanan sanal makinelerle LVM adı çakışmalarını önlemektedir. Ayrıca bkz. LVM ve RAID belgeleri.

  • Evrensel Disk Biçimi (UDF) dosya sistemlerini bağlama için çekirdek desteği gereklidir. Azure'da ilk önyüklemede, konuka bağlı UDF biçimli medya sağlama yapılandırmasını Linux sanal makinesine iletir. Azure Linux Aracısı, yapılandırmasını okumak ve sanal makineyi sağlamayı yapmak için UDF dosya sistemini bağlaması gerekir, bu olmadan sağlama başarısız olur!

  • İşletim sistemi diskini değiştirme bölümü yapılandırmazsanız. Bu konuda daha fazla bilgi aşağıdaki adımlarda bulunabilir.

  • Azure'da tüm VHD'lerin 1 MB ile hizalanmış bir sanal boyutu olması gerekir. Ham diskten VHD'ye dönüştürürken, dönüştürmeden önce ham disk boyutunun 1 MB'ın katları olduğundan emin olmak gerekir. Aşağıdaki adımlarda daha fazla ayrıntı bulunabilir. Daha fazla bilgi için bkz. Linux Yükleme Notları.

Hyper-V Yöneticisi'ni kullanarak RHEL 6

  1. Hyper-V Yöneticisi'nde sanal makineyi seçin.

  2. Sanal Bağlan için bir konsol penceresi açmak için Sanal Makine'ye tıklayın.

  3. RHEL 6'da NetworkManager, Azure Linux aracısına engel olabilir. Aşağıdaki komutu çalıştırarak bu paketi kaldırın:

    # sudo rpm -e --nodeps NetworkManager
    
  4. Dosyayı oluşturun /etc/sysconfig/network veya düzenleyin ve aşağıdaki metni ekleyin:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Dosyayı oluşturun /etc/sysconfig/network-scripts/ifcfg-eth0 veya düzenleyin ve aşağıdaki metni ekleyin:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Ethernet arabirimi için statik kurallar oluşturmamak için udev kurallarını taşıma (veya kaldırma). Bu kurallar, Microsoft Azure veya Hyper-V'de bir sanal makineyi klonlama işlemiyle ilgili sorunlara neden olur:

    # 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şağıdaki komutu çalıştırarak ağ hizmetinin önyükleme zamanında başlayacağını emin olun:

    # sudo chkconfig network on
    
  8. Aşağıdaki komutu çalıştırarak RHEL deposundan paket yüklemesini etkinleştirmek için Red Hat aboneliğinizi kaydetme:

    # sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  9. WALinuxAgent WALinuxAgent-<version> paketi, Red Hat extras deposuna itildi. Aşağıdaki komutu çalıştırarak extras deposunu etkinleştirin:

    # subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  10. Grub yapılandırmanız içinde çekirdek önyükleme hattını Azure için ek çekirdek parametreleri içerecek şekilde değiştirme. Bu değişikliği yapmak için bir /boot/grub/menu.lst metin düzenleyicisinde açın ve varsayılan çekirdeğin aşağıdaki parametreleri içerir:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Bu, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderildiğini de garantiler ve bu da hata ayıklama Azure desteği yardımcı olabilir.

    Ayrıca, aşağıdaki parametreleri kaldırmanız önerilir:

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderildiği bir bulut ortamında kullanışlı değildir. İsterseniz seçeneği crashkernel yapılandırılmış olarak bırakın. Bu parametrenin, sanal makinede bulunan kullanılabilir bellek miktarını 128 MB veya daha fazla azaltan bir değer olduğunu unutmayın. Bu yapılandırma daha küçük sanal makine boyutlarda sorunlu olabilir.

  11. Secure Shell (SSH) sunucusunun yüklü ve genellikle varsayılan olan önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun. /etc/ssh/sshd_config satırı içerecek şekilde değiştirme:

    ClientAliveInterval 180
    
  12. Aşağıdaki komutu çalıştırarak Azure Linux Aracı'sı yükleyin:

    # sudo yum install WALinuxAgent
    
    # sudo chkconfig waagent on
    

    WALinuxAgent paketini yüklemek, 3. adımda zaten kaldırılmış değilse NetworkManager ve NetworkManager-packages paketlerini kaldırır.

  13. İşletim sistemi diskini değiştirmeyin.

    Azure Linux Aracısı, sanal makine Azure'da sağlandıktan sonra sanal makineye bağlı yerel kaynak diskini kullanarak değiştirme alanını otomatik olarak yapılandırabilirsiniz. Yerel kaynak diskin geçici bir disk olduğunu ve sanal makinenin verimleri silinse boşaltıla olabileceğini unutmayın. Önceki adımda Azure Linux Aracı'yı yükledikten sonra /etc/waagent.conf içinde aşağıdaki parametreleri uygun şekilde değiştirebilirsiniz:

    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.
    
  14. Aşağıdaki komutu çalıştırarak aboneliğin kaydını (gerekirse) sildiniz:

    # sudo subscription-manager unregister
    
  15. Sanal makinenin sağlamasını devre dışı etmek ve Azure'da sağlama için hazırlamak için aşağıdaki komutları çalıştırın:

    # Note: if you are migrating a specific virtual machine and do not wish to create a generalized image,
    # skip the deprovision step
    # sudo waagent -force -deprovision
    
    # export HISTSIZE=0
    
    # logout
    
  16. Hyper-V Yöneticisi'nde Eylem Kapatma'ya tıklayın. Linux VHD'niz artık Azure'a yüklenmeye hazırdır.

Hyper-V Yöneticisi'ni kullanarak RHEL 7

  1. Hyper-V Yöneticisi'nde sanal makineyi seçin.

  2. Sanal Bağlan için bir konsol penceresi açmak için Sanal Makine'ye tıklayın.

  3. Dosyayı oluşturun /etc/sysconfig/network veya düzenleyin ve aşağıdaki metni ekleyin:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Dosyayı oluşturun /etc/sysconfig/network-scripts/ifcfg-eth0 veya düzenleyin ve aşağıdaki metni ekleyin:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  5. Aşağıdaki komutu çalıştırarak ağ hizmetinin önyükleme zamanında başlayacağını emin olun:

    # sudo systemctl enable network
    
  6. Aşağıdaki komutu çalıştırarak RHEL deposundan paket yüklemesini etkinleştirmek için Red Hat aboneliğinizi kaydetme:

    # sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Grub yapılandırmanız içinde çekirdek önyükleme hattını Azure için ek çekirdek parametreleri içerecek şekilde değiştirme. Bu değişikliği yapmak için bir /etc/default/grub metin düzenleyicisinde açın ve parametresini GRUB_CMDLINE_LINUX düzenleyin. Örnek:

    GRUB_CMDLINE_LINUX="rootdelay=300 console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0"
    GRUB_TERMINAL_OUTPUT="serial console"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
    

    Bu, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderildiğini ve hata ayıklama sorunlarıyla ilgili sorunları gidermeye yardımcı Azure desteği konsolla etkileşime olanak sağlar. Bu yapılandırma ayrıca NIC'ler için yeni RHEL 7 adlandırma kuralını da kapatıyor.

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderildiği bir bulut ortamında kullanışlı değildir. İsterseniz seçeneği crashkernel yapılandırılmış olarak bırakın. Bu parametrenin sanal makinede kullanılabilir bellek miktarını 128 MB veya daha fazla azaltarak daha küçük sanal makine boyutlarında sorunlu olabileceğini unutmayın.

  8. Düzenlemeyi bitirdikten sonra /etc/default/grub grub yapılandırmasını yeniden inşa etmek için aşağıdaki komutu çalıştırın:

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

    Not

    UEFI özellikli bir VM'yi karşıya yüklerken grub'u güncelleştirme komutu şu grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg şekildedir: .

  9. SSH sunucusunun yüklü ve genellikle varsayılan olan önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun. Aşağıdaki /etc/ssh/sshd_config satırı içerecek şekilde değiştirme:

    ClientAliveInterval 180
    
  10. WALinuxAgent WALinuxAgent-<version> paketi, Red Hat extras deposuna itildi. Aşağıdaki komutu çalıştırarak extras deposunu etkinleştirin:

    # subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Aşağıdaki komutu çalıştırarak Azure Linux Aracısı'nı, cloud-init'i ve diğer gerekli yardımcı programları yükleyin:

    # sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    # sudo systemctl enable waagent.service
    # sudo systemctl enable cloud-init.service
    
  12. Sağlamayı işlemek için cloud-init'i yapılandırma:

    1. cloud-init için waagent'i yapılandırma:
    sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf
    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
    

    Not

    Belirli bir sanal makineyi devredüyorsanız ve genelleştirilmiş bir görüntü oluşturmak değil de Provisioning.Agent=disabled yapılandırmada /etc/waagent.conf ayarlayın.

    1. Bağlamaları yapılandırma:
    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
    
    1. Azure veri kaynaklarını yapılandırma:
    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
    
    1. Yapılandırılmışsa, var olan swapfile'ı kaldırın:
    if [[ -f /mnt/resource/swapfile ]]; then
    echo "Removing swapfile" #RHEL uses a swapfile by defaul
    swapoff /mnt/resource/swapfile
    rm /mnt/resource/swapfile -f
    fi
    
    1. cloud-init günlüğünü yapılandırma:
    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. Değiştirme yapılandırması İşletim sistemi diskte değiştirme alanı oluşturma.

    Daha önce Azure Linux Aracısı, sanal makine Azure'da sağlandıktan sonra sanal makineye bağlı yerel kaynak diskini kullanarak değiştirme alanını otomatik olarak yapılandırdı. Bu işlem artık cloud-init tarafından işlemektedir. Kaynak diskini biçimlendirmek için Linux Aracısı'nın takas dosyasını oluşturması ve aşağıdaki parametreleri uygun şekilde /etc/waagent.conf değiştirmesi gerekir:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    

    Bağlama, biçimlendirme ve değiştirme işlemi oluşturmak için şunları da oluşturabilirsiniz:

    • Bunu, customdata aracılığıyla her VM oluşturmada cloud-init yapılandırması olarak iletir. Bu önerilen yöntemdir.

    • Görüntüde oluşturulan ve VM her oluşturulduğunda bunu yapacak bir cloud-init yönergesi kullanın.

      echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
      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", "0", "0"]
      EOF
      
  14. Aboneliğin kaydını iptal etmek için aşağıdaki komutu çalıştırın:

    # sudo subscription-manager unregister
    
  15. Sproprovision'ın amacını geri ala

    Sanal makinenin sağlamasını devre dışı etmek ve Azure'da sağlama için hazırlamak için aşağıdaki komutları çalıştırın:

    Dikkat

    Belirli bir sanal makineyi devredüyorsanız ve genelleştirilmiş bir görüntü oluşturmak yoksa, onayını kaldır adımını atlayabilirsiniz. komutunun waagent -force -deprovision çalıştırılan kaynak makine kullanılamaz hale gelir, bu adım yalnızca genelleştirilmiş bir görüntü oluşturmak için tasarlanmıştır.

    # sudo waagent -force -deprovision
    
    # export HISTSIZE=0
    
    # logout
    
  16. Hyper-V Yöneticisi'nde Eylem Kapatma'ya tıklayın. Linux VHD'niz artık Azure'a yüklenmeye hazırdır.

Hyper-V Yöneticisi'ni kullanarak RHEL 8

  1. Hyper-V Yöneticisi'nde sanal makineyi seçin.

  2. Sanal Bağlan için bir konsol penceresi açmak için Sanal Makine'ye tıklayın.

  3. Aşağıdaki komutu çalıştırarak Ağ Yöneticisi hizmetinin önyükleme zamanında başlayacağını emin olun:

    # sudo systemctl enable NetworkManager.service
    
  4. Ağ arabirimini önyüklemede otomatik olarak başlayacak ve DHCP'yi kullanmak üzere yapılandırabilirsiniz:

    # nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
    
  5. Aşağıdaki komutu çalıştırarak RHEL deposundan paket yüklemesini etkinleştirmek için Red Hat aboneliğinizi kaydetme:

    # sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  6. Grub yapılandırmanız içinde çekirdek önyükleme hattını Azure için ek çekirdek parametreleri içerecek şekilde değiştirme ve seri konsolunu etkinleştirme.

    1. Geçerli GRUB parametrelerini kaldırın:
    # grub2-editenv - unset kernelopts
    
    1. Bir /etc/default/grub metin düzenleyicisinde düzenleyin ve aşağıdaki parametreleri ekleyin:
    GRUB_CMDLINE_LINUX="rootdelay=300 console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0"
    GRUB_TERMINAL_OUTPUT="serial console"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    

    Bu, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderildiğini ve hata ayıklama sorunlarıyla ilgili sorunları gidermeye yardımcı Azure desteği konsolla etkileşime olanak sağlar. Bu yapılandırma ayrıca 2C'ler için yeni adlandırma kuralları da kapatıyor.

    1. Ayrıca, aşağıdaki parametreleri kaldırmanız önerilir:
    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderildiği bir bulut ortamında kullanışlı değildir. İsterseniz seçeneği crashkernel yapılandırılmış olarak bırakın. Bu parametrenin sanal makinede kullanılabilir bellek miktarını 128 MB veya daha fazla azaltarak daha küçük sanal makine boyutlarında sorunlu olabileceğini unutmayın.

  7. Düzenlemeyi bitirdikten sonra /etc/default/grub grub yapılandırmasını yeniden inşa etmek için aşağıdaki komutu çalıştırın:

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

    UEFI özellikli bir VM için aşağıdaki komutu çalıştırın:

    # sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    
  8. SSH sunucusunun yüklü ve genellikle varsayılan olan önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun. Aşağıdaki /etc/ssh/sshd_config satırı içerecek şekilde değiştirme:

    ClientAliveInterval 180
    
  9. Aşağıdaki komutu çalıştırarak Azure Linux Aracısı'nı, cloud-init'i ve diğer gerekli yardımcı programları yükleyin:

    # sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    # sudo systemctl enable waagent.service
    # sudo systemctl enable cloud-init.service
    
  10. Sağlamayı işlemek için cloud-init'i yapılandırma:

    1. cloud-init için waagent'i yapılandırma:
    sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf
    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
    

    Not

    Belirli bir sanal makineyi devredüyorsanız ve genelleştirilmiş bir görüntü oluşturmak değil de Provisioning.Agent=disabled yapılandırmada /etc/waagent.conf ayarlayın.

    1. Bağlamaları yapılandırma:
    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
    
    1. Azure veri kaynaklarını yapılandırma:
    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
    
    1. Yapılandırılmışsa, var olan swapfile'ı kaldırın:
    if [[ -f /mnt/resource/swapfile ]]; then
    echo "Removing swapfile" #RHEL uses a swapfile by defaul
    swapoff /mnt/resource/swapfile
    rm /mnt/resource/swapfile -f
    fi
    
    1. cloud-init günlüğünü yapılandırma:
    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
    
    
  11. Değiştirme yapılandırması İşletim sistemi diskte değiştirme alanı oluşturma.

    Daha önce Azure Linux Aracısı, sanal makine Azure'da sağlandıktan sonra sanal makineye bağlı yerel kaynak diskini kullanarak değiştirme alanını otomatik olarak yapılandırdı. Bu işlem artık cloud-init tarafından işlemektedir. Kaynak diskini biçimlendirmek için Linux Aracısı'nın takas dosyasını oluşturması ve aşağıdaki parametreleri uygun şekilde /etc/waagent.conf değiştirmesi gerekir:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    
    • Bunu, customdata aracılığıyla her VM oluşturmada cloud-init yapılandırması olarak iletir. Bu önerilen yöntemdir.

    • Görüntüde oluşturulan ve VM her oluşturulduğunda bunu yapacak bir cloud-init yönergesi kullanın.

      echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
      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", "0", "0"]
      EOF
      
  12. Aboneliğin kaydını iptal etmek için aşağıdaki komutu çalıştırın:

    # sudo subscription-manager unregister
    
  13. Sproprovision'ın amacını geri ala

    Sanal makinenin sağlamasını devre dışı etmek ve Azure'da sağlama için hazırlamak için aşağıdaki komutları çalıştırın:

    # sudo waagent -force -deprovision
    
    # export HISTSIZE=0
    
    # logout
    

    Dikkat

    Belirli bir sanal makineyi devredüyorsanız ve genelleştirilmiş bir görüntü oluşturmak yoksa, onayını kaldır adımını atlayabilirsiniz. komutunun waagent -force -deprovision çalıştırılan kaynak makine kullanılamaz hale gelir, bu adım yalnızca genelleştirilmiş bir görüntü oluşturmak için tasarlanmıştır.

  14. Hyper-V Yöneticisi'nde Eylem Kapatma'ya tıklayın. Linux VHD'niz artık Azure'a yüklenmeye hazırdır.

KVM

Bu bölümde, Azure'a yüklemek üzere bir RHEL 6 veya RHEL 7 dağıtım hazırlamak için KVM'yi nasıl kullanabileceğiniz gösterir.

KVM kullanarak RHEL 6

  1. Red Hat web sitesindeN RHEL 6'nın KVM görüntüsünü indirin.

  2. Kök parola ayarlayın.

    Şifrelenmiş bir parola oluşturma ve komutun çıktısını kopyalama:

    # openssl passwd -1 changeme
    

    Guestfish ile bir kök parola ayarlayın:

    # guestfish --rw -a <image-name>
    > <fs> run
    > <fs> list-filesystems
    > <fs> mount /dev/sda1 /
    > <fs> vi /etc/shadow
    > <fs> exit
    

    Kök kullanıcının ikinci alanını "!!" olarak değiştirme ile şifrelenen parolayı seçin.

  3. Qcow2 görüntüsünden KVM'de bir sanal makine oluşturun. Disk türünü qcow2 olarak ayarlayın ve sanal ağ arabirimi cihaz modelini virtio olarak ayarlayın. Ardından sanal makineyi başlatarak kök olarak oturum açmanız gerekir.

  4. Dosyayı oluşturun /etc/sysconfig/network veya düzenleyin ve aşağıdaki metni ekleyin:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Dosyayı oluşturun /etc/sysconfig/network-scripts/ifcfg-eth0 veya düzenleyin ve aşağıdaki metni ekleyin:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Ethernet arabirimi için statik kurallar oluşturmamak için udev kurallarını taşıma (veya kaldırma). Bu kurallar, Azure'da veya Hyper-V'de bir sanal makineyi klonlama işlemiyle ilgili sorunlara neden olur:

    # 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şağıdaki komutu çalıştırarak ağ hizmetinin önyükleme zamanında başlayacağını emin olun:

    # chkconfig network on
    
  8. Aşağıdaki komutu çalıştırarak RHEL deposundan paket yüklemesini etkinleştirmek için Red Hat aboneliğinizi kaydetme:

    # subscription-manager register --auto-attach --username=XXX --password=XXX
    
  9. Grub yapılandırmanız içinde çekirdek önyükleme hattını Azure için ek çekirdek parametreleri içerecek şekilde değiştirme. Bu yapılandırmayı yapmak için bir /boot/grub/menu.lst metin düzenleyicisinde açın ve varsayılan çekirdeğin aşağıdaki parametreleri içerir:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Bu, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderildiğini de garantiler ve bu da hata ayıklama Azure desteği yardımcı olabilir.

    Ayrıca, aşağıdaki parametreleri kaldırmanız önerilir:

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderildiği bir bulut ortamında kullanışlı değildir. İsterseniz seçeneği crashkernel yapılandırılmış olarak bırakın. Bu parametrenin sanal makinede kullanılabilir bellek miktarını 128 MB veya daha fazla azaltarak daha küçük sanal makine boyutlarında sorunlu olabileceğini unutmayın.

  10. Initramfs'ye Hyper-V modülleri ekleme:

    /etc/dracut.conf'yi düzenleyin ve aşağıdaki içeriği ekleyin:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Initramfs'yi yeniden oluşturma:

    # dracut -f -v
    
  11. cloud-init'i kaldırın:

    # yum remove cloud-init
    
  12. SSH sunucusunun yüklü ve önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun:

    # chkconfig sshd on
    

    /etc/ssh/sshd_config satırları içerecek şekilde değiştirme:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. WALinuxAgent WALinuxAgent-<version> paketi, Red Hat extras deposuna itildi. Aşağıdaki komutu çalıştırarak extras deposunu etkinleştirin:

    # subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  14. Aşağıdaki komutu çalıştırarak Azure Linux Aracı'sı yükleyin:

    # yum install WALinuxAgent
    
    # chkconfig waagent on
    
  15. Azure Linux Aracısı, sanal makine Azure'da sağlandıktan sonra sanal makineye bağlı yerel kaynak diskini kullanarak değiştirme alanını otomatik olarak yapılandırabilirsiniz. Yerel kaynak diskin geçici bir disk olduğunu ve sanal makinenin verimini devre dışı bırakmış olabileceğini unutmayın. Önceki adımda Azure Linux Aracı'yı yükledikten sonra /etc/waagent.conf içinde aşağıdaki parametreleri uygun şekilde değiştirebilirsiniz:

    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. Aşağıdaki komutu çalıştırarak aboneliğin kaydını (gerekirse) sildiniz:

    # subscription-manager unregister
    
  17. Sanal makinenin sağlamasını devre dışı etmek ve Azure'da sağlama için hazırlamak için aşağıdaki komutları çalıştırın:

    # 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
    
  18. KVM'de sanal makineyi kapatın.

  19. qcow2 görüntüsünü VHD biçimine dönüştürebilirsiniz.

    Not

    qemu-img sürümlerinde =2.2.1 >yanlış biçimlendirilmiş bir VHD ile sonuçlandı. Sorun QEMU 2.6'da düzeltildi. qemu-img 2.2.0 veya daha düşük bir değer veya 2.6 veya daha yüksek bir güncelleştirmeyi kullanmak önerilir. Başvuru: https://bugs.launchpad.net/qemu/+bug/1490611 .

    İlk olarak görüntüyü ham biçime dönüştürin:

    # qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
    

    Ham görüntünün boyutunun 1 MB ile hizalanmış olduğundan emin olun. Aksi takdirde boyutu 1 MB ile hizalandıracak şekilde yukarı yuvarlayın:

    # MB=$((1024*1024))
    # size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \
      gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    
    # rounded_size=$((($size/$MB + 1)*$MB))
    # qemu-img resize rhel-6.9.raw $rounded_size
    

    Ham diski sabit boyutlu bir VHD'ye dönüştür:

    # qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
    

    Veya qemu sürüm 2.6+ ile seçeneğini force_size de dahil edin:

    # qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
    

KVM kullanarak RHEL 7

  1. Red Hat web sitesindeN RHEL 7'nin KVM görüntüsünü indirin. Bu yordam, örnek olarak RHEL 7 kullanır.

  2. Kök parola ayarlayın.

    Şifrelenmiş bir parola oluşturma ve komutun çıktısını kopyalama:

    # openssl passwd -1 changeme
    

    Guestfish ile bir kök parola ayarlayın:

    # guestfish --rw -a <image-name>
    > <fs> run
    > <fs> list-filesystems
    > <fs> mount /dev/sda1 /
    > <fs> vi /etc/shadow
    > <fs> exit
    

    Kök kullanıcının ikinci alanını "!!" olarak değiştirme ile şifrelenen parolayı seçin.

  3. Qcow2 görüntüsünden KVM'de bir sanal makine oluşturun. Disk türünü qcow2 olarak ayarlayın ve sanal ağ arabirimi cihaz modelini virtio olarak ayarlayın. Ardından sanal makineyi başlatarak kök olarak oturum açmanız gerekir.

  4. Dosyayı oluşturun /etc/sysconfig/network veya düzenleyin ve aşağıdaki metni ekleyin:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Dosyayı oluşturun /etc/sysconfig/network-scripts/ifcfg-eth0 veya düzenleyin ve aşağıdaki metni ekleyin:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  6. Aşağıdaki komutu çalıştırarak ağ hizmetinin önyükleme zamanında başlayacağını emin olun:

    # sudo systemctl enable network
    
  7. Aşağıdaki komutu çalıştırarak RHEL deposundan paket yüklemesini etkinleştirmek için Red Hat aboneliğinizi kaydetme:

    # subscription-manager register --auto-attach --username=XXX --password=XXX
    
  8. Grub yapılandırmanız içinde çekirdek önyükleme hattını Azure için ek çekirdek parametreleri içerecek şekilde değiştirme. Bu yapılandırmayı yapmak için bir /etc/default/grub metin düzenleyicisinde açın ve parametresini GRUB_CMDLINE_LINUX düzenleyin. Örnek:

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

    Bu komut ayrıca tüm konsol iletilerinin ilk seri bağlantı noktasına gönderildiğini ve hata ayıklama sorunlarıyla ilgili Azure desteği yardımcı olabilir. Komut ayrıca NIC'ler için yeni RHEL 7 adlandırma kuralını da kapatıyor. Ayrıca, aşağıdaki parametreleri kaldırmanız önerilir:

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderildiği bir bulut ortamında kullanışlı değildir. İsterseniz seçeneği crashkernel yapılandırılmış olarak bırakın. Bu parametrenin sanal makinede kullanılabilir bellek miktarını 128 MB veya daha fazla azaltarak daha küçük sanal makine boyutlarında sorunlu olabileceğini unutmayın.

  9. Düzenlemeyi bitirdikten sonra /etc/default/grub grub yapılandırmasını yeniden inşa etmek için aşağıdaki komutu çalıştırın:

    # grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. Hyper-V modüllerini initramfs'ye ekleyin.

    İçerik /etc/dracut.conf düzenleme ve ekleme:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Initramfs'yi yeniden oluşturma:

    # dracut -f -v
    
  11. cloud-init'i kaldırın:

    # yum remove cloud-init
    
  12. SSH sunucusunun yüklü ve önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun:

    # systemctl enable sshd
    

    /etc/ssh/sshd_config satırları içerecek şekilde değiştirme:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. WALinuxAgent WALinuxAgent-<version> paketi, Red Hat extras deposuna itildi. Aşağıdaki komutu çalıştırarak extras deposunu etkinleştirin:

    # subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  14. Aşağıdaki komutu çalıştırarak Azure Linux Aracısı'na yükleyin:

    # yum install WALinuxAgent
    

    Waagent hizmetini etkinleştirin:

    # systemctl enable waagent.service
    
  15. cloud-init yükleme 'Hyper-V Yöneticisi'nde RHEL 7 sanal makinesi hazırlama' 12. adım olan 'Sağlamayı işlemek için cloud-init'i yükleme' adımını izleyin.

  16. Değiştirme yapılandırması

    İşletim sistemi diskini değiştirmeyin. 'Hyper-V Yöneticisi'nde RHEL 7 sanal makinesi hazırlama' 13. adım olan 'Yapılandırmayı değiştirme' adımlarını izleyin

  17. Aşağıdaki komutu çalıştırarak aboneliğin kaydını (gerekirse) sildiniz:

    # subscription-manager unregister
    
  18. Sproprovision'ın amacını geri ala

    'Hyper-V Yöneticisi'nde RHEL 7 sanal makinesi hazırlama' 15. adım olan 'Deprovision'daki adımları izleyin

  19. KVM'de sanal makineyi kapatın.

  20. qcow2 görüntüsünü VHD biçimine dönüştürebilirsiniz.

    Not

    qemu-img sürümlerinde =2.2.1 >yanlış biçimlendirilmiş bir VHD ile sonuçlandı. Sorun QEMU 2.6'da düzeltildi. qemu-img 2.2.0 veya daha düşük bir değer veya 2.6 veya daha yüksek bir güncelleştirmeyi kullanmak önerilir. Başvuru: https://bugs.launchpad.net/qemu/+bug/1490611 .

    İlk olarak görüntüyü ham biçime dönüştürebilirsiniz:

    # qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
    

    Ham görüntünün boyutunun 1 MB ile hizalanmış olduğundan emin olun. Aksi takdirde boyutu 1 MB ile hizalandıracak şekilde yukarı yuvarlayın:

    # MB=$((1024*1024))
    # size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \
      gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    
    # rounded_size=$((($size/$MB + 1)*$MB))
    # qemu-img resize rhel-7.4.raw $rounded_size
    

    Ham diski sabit boyutlu bir VHD'ye dönüştür:

    # qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
    

    Veya qemu sürüm 2.6+ ile seçeneğini force_size de dahil edin:

    # qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
    

VMware

Bu bölümde, VMware'den RHEL 6 veya RHEL 7 distro'larını hazırlamayı gösterir.

Önkoşullar

Bu bölümde, VMware'de zaten bir RHEL sanal makinesi yüklemişsinizdir. VMware'de işletim sistemi yükleme hakkında ayrıntılı bilgi için bkz. VMware Konuk İşletim Sistemi Yükleme Kılavuzu.

  • Linux işletim sistemini yüklediğiniz zaman, çoğu yükleme için varsayılan seçenek olan LVM yerine standart bölümlerin kullanılması önerilir. Bu, özellikle bir işletim sistemi diskini sorun giderme için başka bir sanal makineye bağlı olması gerekirse, kopyalanan sanal makineyle LVM adı çakışmalarını önler. LvM veya RAID, tercih edilirse veri diskleri üzerinde kullanılabilir.
  • İşletim sistemi disk üzerinde değiştirme bölümü yapılandırmazsanız. Geçici kaynak disk üzerinde bir takas dosyası oluşturmak için Linux aracıyı yapılandırabilirsiniz. Bu konuda daha fazla bilgiyi aşağıdaki adımlarda bulabilirsiniz.
  • Sanal sabit diski oluşturdukta Sanal diski tek bir dosya olarak depola'ya seçin.

VMware kullanarak RHEL 6

  1. RHEL 6'da NetworkManager, Azure Linux aracısına engel olabilir. Aşağıdaki komutu çalıştırarak bu paketi kaldırın:

    # sudo rpm -e --nodeps NetworkManager
    
  2. /etc/sysconfig/ dizininde aşağıdaki metni içeren network adlı bir dosya oluşturun:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  3. Dosyayı oluşturun /etc/sysconfig/network-scripts/ifcfg-eth0 veya düzenleyin ve aşağıdaki metni ekleyin:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  4. Ethernet arabirimi için statik kurallar oluşturmamak için udev kurallarını taşıma (veya kaldırma). Bu kurallar, Azure'da veya Hyper-V'de bir sanal makineyi klonlama işlemiyle ilgili sorunlara neden olur:

    # 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
    
  5. Aşağıdaki komutu çalıştırarak ağ hizmetinin önyükleme zamanında başlayacağını emin olun:

    # sudo chkconfig network on
    
  6. Aşağıdaki komutu çalıştırarak RHEL deposundan paket yüklemesini etkinleştirmek için Red Hat aboneliğinizi kaydetme:

    # sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. WALinuxAgent WALinuxAgent-<version> paketi, Red Hat extras deposuna itildi. Aşağıdaki komutu çalıştırarak extras deposunu etkinleştirin:

    # subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  8. Grub yapılandırmanız içinde çekirdek önyükleme hattını Azure için ek çekirdek parametreleri içerecek şekilde değiştirme. Bunu yapmak için bir /etc/default/grub metin düzenleyicisinde açın ve parametresini GRUB_CMDLINE_LINUX düzenleyin. Örnek:

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0"
    

    Bu, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderildiğini de garantiler ve bu da hata ayıklama Azure desteği yardımcı olabilir. Ayrıca, aşağıdaki parametreleri kaldırmanız önerilir:

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderildiği bir bulut ortamında kullanışlı değildir. İsterseniz seçeneği crashkernel yapılandırılmış olarak bırakın. Bu parametrenin sanal makinede kullanılabilir bellek miktarını 128 MB veya daha fazla azaltarak daha küçük sanal makine boyutlarında sorunlu olabileceğini unutmayın.

  9. Initramfs'ye Hyper-V modülleri ekleme:

    /etc/dracut.conf'yi düzenleyin ve aşağıdaki içeriği ekleyin:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Initramfs'yi yeniden oluşturma:

    # dracut -f -v
    
  10. SSH sunucusunun yüklü ve genellikle varsayılan olan önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun. Aşağıdaki /etc/ssh/sshd_config satırı içerecek şekilde değiştirme:

    ClientAliveInterval 180
    
  11. Aşağıdaki komutu çalıştırarak Azure Linux Aracısı'na yükleyin:

    # sudo yum install WALinuxAgent
    
    # sudo chkconfig waagent on
    
  12. İşletim sistemi diskini değiştirmeyin.

    Azure Linux Aracısı, sanal makine Azure'da sağlandıktan sonra sanal makineye bağlı yerel kaynak diskini kullanarak değiştirme alanını otomatik olarak yapılandırabilirsiniz. Yerel kaynak diskin geçici bir disk olduğunu ve sanal makinenin verimini devre dışı bırakmış olabileceğini unutmayın. Önceki adımda Azure Linux Aracı'sini yükledikten sonra, 'de aşağıdaki parametreleri /etc/waagent.conf uygun şekilde değiştirin:

    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.
    
  13. Aşağıdaki komutu çalıştırarak aboneliğin kaydını (gerekirse) sildiniz:

    # sudo subscription-manager unregister
    
  14. Sanal makinenin sağlamasını devre dışı etmek ve Azure'da sağlama için hazırlamak için aşağıdaki komutları çalıştırın:

    # 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. Sanal makineyi kapatın ve VMDK dosyasını bir .vhd dosyasına dönüştürebilirsiniz.

    Not

    qemu-img sürümlerinde =2.2.1 >yanlış biçimlendirilmiş bir VHD ile sonuçlandı. Sorun QEMU 2.6'da düzeltildi. qemu-img 2.2.0 veya daha düşük bir değer veya 2.6 veya daha yüksek bir güncelleştirmeyi kullanmak önerilir. Başvuru: https://bugs.launchpad.net/qemu/+bug/1490611 .

    Önce görüntüyü ham biçime dönüştürün:

    # qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
    

    Ham görüntünün boyutunun 1 MB ile hizalandığından emin olun. Aksi takdirde, 1 MB ile hizalamak için boyutu yuvarlayın:

    # MB=$((1024*1024))
    # size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \
      gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    
    # rounded_size=$((($size/$MB + 1)*$MB))
    # qemu-img resize rhel-6.9.raw $rounded_size
    

    Ham diski sabit boyutlu bir VHD 'ye Dönüştür:

    # qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
    

    Ya da QEMU sürüm 2.6 + ile seçeneği vardır force_size :

    # qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
    

VMware kullanarak RHEL 7

  1. Dosyayı oluşturun veya düzenleyin /etc/sysconfig/network ve aşağıdaki metni ekleyin:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  2. Dosyayı oluşturun veya düzenleyin /etc/sysconfig/network-scripts/ifcfg-eth0 ve aşağıdaki metni ekleyin:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  3. Aşağıdaki komutu çalıştırarak ağ hizmetinin önyükleme zamanında başlamasını sağlayın:

    # sudo systemctl enable network
    
  4. Aşağıdaki komutu çalıştırarak, RHEL deposundan paketlerin yüklenmesini etkinleştirmek için Red Hat aboneliğinizi kaydedin:

    # sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  5. Grub yapılandırmanızda çekirdek önyükleme satırını, Azure için ek çekirdek parametreleri içerecek şekilde değiştirin. Bu değişikliği yapmak için, /etc/default/grub bir metin düzenleyicisinde açın ve GRUB_CMDLINE_LINUX parametresini düzenleyin. Örnek:

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

    Bu yapılandırma aynı zamanda tüm konsol iletilerinin ilk seri bağlantı noktasına gönderilmesini de sağlar ve bu da hata ayıklama sorunlarını gidermek için Azure desteğine yardımcı olabilir. Ayrıca, NIC 'ler için yeni RHEL 7 adlandırma kurallarını kapatır. Ayrıca, aşağıdaki parametreleri kaldırmanızı öneririz:

    rhgb quiet crashkernel=auto
    

    Grafik ve sessiz önyükleme, tüm günlüklerin seri bağlantı noktasına gönderilmesini istiyoruz bir bulut ortamında yararlı değildir. İsterseniz, crashkernel seçeneğini yapılandırılmış olarak bırakabilirsiniz. Bu parametrenin, sanal makinedeki kullanılabilir bellek miktarını 128 MB veya daha fazla azalttığını ve bu, daha küçük sanal makine boyutlarında sorunlu olabileceğini unutmayın.

  6. Düzenlemesini tamamladıktan sonra /etc/default/grub , grub yapılandırmasını yeniden derlemek için aşağıdaki komutu çalıştırın:

    # sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  7. Initramfs 'ye Hyper-V modülleri ekleyin.

    Düzenleme /etc/dracut.conf , içerik ekleme:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Initramfs yeniden derle:

    # dracut -f -v
    
  8. SSH sunucusunun, önyükleme zamanında başlayacak şekilde yüklendiğinden ve yapılandırıldığından emin olun. Bu ayar genellikle varsayılandır. /etc/ssh/sshd_configAşağıdaki satırı içerecek şekilde değiştirin:

    ClientAliveInterval 180
    
  9. Walınuxagent paketi, WALinuxAgent-<version> Red Hat ekstralar deposuna gönderildi. Aşağıdaki komutu çalıştırarak ek özellikler deposunu etkinleştirin:

    # subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  10. Aşağıdaki komutu çalıştırarak Azure Linux aracısını yükler:

    # sudo yum install WALinuxAgent
    
    # sudo systemctl enable waagent.service
    
  11. Cloud Install-init

    ' Bir RHEL 7 sanal makinesini Hyper-V Yöneticisi 'nden hazırlama ', 12. adım, sağlama işlemini işlemek için Cloud-init Install ' daki adımları izleyin.

  12. Değiştirme yapılandırması

    İşletim sistemi diskinde takas alanı oluşturmayın. "Hyper-V Yöneticisi 'nden bir RHEL 7 sanal makinesi hazırlama", 13. adım, ' takas yapılandırması ' bölümündeki adımları izleyin

  13. Aboneliğin kaydını silmek istiyorsanız aşağıdaki komutu çalıştırın:

    # sudo subscription-manager unregister
    
  14. Sağlamayı kaldırma

    "Hyper-V Yöneticisi 'nden bir RHEL 7 sanal makinesi hazırlama", 15. adım, ' deprovision ' içindeki adımları izleyin

  15. Sanal makineyi kapatın ve VMDK dosyasını VHD biçimine dönüştürün.

    Not

    QEMU-img sürümlerindeki bilinen bir hata vardır >= 2.2.1, hatalı biçimli bir VHD ile sonuçlanır. Bu sorun QEMU 2,6 ' de düzeltildi. QEMU-img 2.2.0 veya Lower ya da 2,6 veya üzeri bir sürümü kullanmanız önerilir. Başvuru: https://bugs.launchpad.net/qemu/+bug/1490611 .

    Önce görüntüyü ham biçime dönüştürün:

    # qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
    

    Ham görüntünün boyutunun 1 MB ile hizalandığından emin olun. Aksi takdirde, 1 MB ile hizalamak için boyutu yuvarlayın:

    # MB=$((1024*1024))
    # size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \
      gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    
    # rounded_size=$((($size/$MB + 1)*$MB))
    # qemu-img resize rhel-7.4.raw $rounded_size
    

    Ham diski sabit boyutlu bir VHD 'ye Dönüştür:

    # qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
    

    Ya da QEMU sürüm 2.6 + ile seçeneği vardır force_size :

    # qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
    

Kickstart dosyası

Bu bölümde, bir kickstart dosyası kullanarak bir ISO 'dan bir RHEL 7 başlangıcını nasıl hazırlayacağınız gösterilmektedir.

Bir kickstart dosyasından RHEL 7

  1. Aşağıdaki içeriği içeren bir kickstart dosyası oluşturun ve dosyayı kaydedin. Kickstart yüklemesi hakkında daha fazla bilgi için, bkz. kickstart Yükleme Kılavuzu.

    # Kickstart for provisioning a RHEL 7 Azure VM
    
    # System authorization information
      auth --enableshadow --passalgo=sha512
    
    # Use graphical install
    text
    
    # Do not run the Setup Agent on first boot
    firstboot --disable
    
    # Keyboard layouts
    keyboard --vckeymap=us --xlayouts='us'
    
    # System language
    lang en_US.UTF-8
    
    # Network information
    network  --bootproto=dhcp
    
    # Root password
    rootpw --plaintext "to_be_disabled"
    
    # System services
    services --enabled="sshd,waagent,NetworkManager"
    
    # System timezone
    timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org
    
    # Partition clearing information
    clearpart --all --initlabel
    
    # Clear the MBR
    zerombr
    
    # Disk partitioning information
    part /boot --fstype="xfs" --size=500
    part / --fstyp="xfs" --size=1 --grow --asprimary
    
    # System bootloader configuration
    bootloader --location=mbr
    
    # Firewall configuration
    firewall --disabled
    
    # Enable SELinux
    selinux --enforcing
    
    # Don't configure X
    skipx
    
    # Power down the machine after install
    poweroff
    
    %packages
    @base
    @console-internet
    chrony
    sudo
    parted
    -dracut-config-rescue
    
    %end
    
    %post --log=/var/log/anaconda/post-install.log
    
    #!/bin/bash
    
    # Register Red Hat Subscription
    subscription-manager register --username=XXX --password=XXX --auto-attach --force
    
    # Install latest repo update
    yum update -y
    
    # Enable extras repo
    subscription-manager repos --enable=rhel-7-server-extras-rpms
    
    # Install WALinuxAgent
    yum install -y WALinuxAgent
    
    # Unregister Red Hat subscription
    subscription-manager unregister
    
    # Enable waaagent at boot-up
    systemctl enable waagent
    
    # Install cloud-init
    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
    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
    
    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
    
    # Disable the root account
    usermod root -p '!!'
    
    # Disabke swap in WALinuxAgent
    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    
    # Configure swap using cloud-init
    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", "0", "0"]
    EOF
    
    # Set the cmdline
    sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300"/g' /etc/default/grub
    
    # Enable SSH keepalive
    sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config
    
    # Build the grub cfg
    grub2-mkconfig -o /boot/grub2/grub.cfg
    
    # Configure network
    cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    EOF
    
    # Deprovision and prepare for Azure if you are creating a generalized image
    sudo cloud-init clean --logs --seed
    sudo rm -rf /var/lib/cloud/
    sudo rm -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    
    sudo waagent -force -deprovision+user
    rm -f ~/.bash_history
    export HISTSIZE=0
    
    %end
    
  2. Yükleme sisteminin erişebileceği kickstart dosyasını yerleştirin.

  3. Hyper-V Yöneticisi 'nde yeni bir sanal makine oluşturun. Bağlan sanal sabit disk sayfasında, daha sonra bir sanal sabit disk ekle' yi seçin ve yeni sanal makine sihirbazı ' nı doldurun.

  4. Sanal makine ayarlarını açın:

    a. Sanal makineye yeni bir sanal sabit disk ekleyin. VHD biçimini ve sabit boyutu seçtiğinizden emin olun.

    b. Yükleme ISO dosyasını DVD sürücüsüne ekleyin.

    c. BIOS 'u CD 'den önyükleme olacak şekilde ayarlayın.

  5. Sanal makineyi başlatın. Yükleme Kılavuzu göründüğünde, önyükleme seçeneklerini yapılandırmak için Tab tuşuna basın.

  6. inst.ks=<the location of the kickstart file>Önyükleme seçeneklerinin sonuna yazın ve ENTER tuşuna basın.

  7. Yüklemenin bitmesini bekleyin. İşlem tamamlandığında, sanal makine otomatik olarak kapatılır. Linux VHD 'niz artık Azure 'a yüklenmeye hazırdır.

Bilinen sorunlar

Hyper-V sürücüsü, Hyper-V olmayan bir hiper yönetici kullanılırken ilk RAM diskine dahil edilemedi

Bazı durumlarda Linux yükleyicileri, Linux 'un Hyper-V ortamında çalıştığını algılayamadığı takdirde, ilk RAM diskindeki (ınitrd veya ınitramfs) Hyper-V sürücülerini içermeyebilir.

Linux görüntünüzü hazırlamak için farklı bir sanallaştırma sistemi (yani VirtualBox, Xen, vb.) kullanırken, ilk RAM diskinde en az hv_vmbus ve hv_storvsc çekirdek modüllerinin kullanılabilir olmasını sağlamak için ınitrd 'i yeniden oluşturmanız gerekebilir. Bu, en azından yukarı akış Red Hat dağıtımına dayalı olan sistemlerde bilinen bir sorundur.

Bu sorunu çözmek için, ınitramfs 'ye Hyper-V modülleri ekleyin ve yeniden oluşturun:

/etc/dracut.confAşağıdaki içeriği düzenleyin ve ekleyin:

add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "

Initramfs yeniden derle:

# dracut -f -v

Daha fazla ayrıntı için, ınitramfs'yi yeniden oluşturma hakkında bilgi için bkz..

Sonraki adımlar

  • artık Azure 'da yeni sanal makineler oluşturmak için Red Hat Enterprise Linux sanal sabit diskinizi kullanmaya hazırsınız. . Vhd dosyasını ilk kez Azure 'a yüklüyorsanız, bkz. özel bir diskten LINUX VM oluşturma.
  • Red Hat Enterprise Linux çalıştırılmak üzere sertifikalı hiper yöneticiler hakkında daha fazla ayrıntı için Red Hat web sitesinebakın.
  • Üretime Ready RHEL BYOS görüntülerini kullanma hakkında daha fazla bilgi edinmek için, KCG 'nin belgeler sayfasına gidin.