Azure'da görüntüleme için Linux hazırlama

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Azure platform hizmet düzeyi sözleşmesi (SLA), Linux işletim sistemini çalıştıran sanal makineler (VM) için yalnızca onaylanan dağıtımlardan birini kullandığınızda geçerlidir. Onaylanan dağıtımlar için Azure Market önceden yapılandırılmış Linux görüntüleri sağlar. Daha fazla bilgi için bkz.

Topluluk tarafından desteklenen ve onaylanmamış dağıtımlar da dahil olmak üzere Azure'da çalışan diğer tüm dağıtımların bazı önkoşulları vardır.

Bu makale, Linux dağıtımınızı Azure'da çalıştırmaya yönelik genel yönergelere odaklanır. Her dağıtım farklı olduğundan bu makale kapsamlı olamaz. Bu makalede açıklanan tüm ölçütleri karşılasanız bile, linux sisteminizin düzgün çalışması için önemli ölçüde değişiklik yapmanız gerekebilir.

Genel Linux yükleme notları

Important

Bu makaledeki uzak NVMe hazırlama adımları isteğe bağlıdır. Bunları yalnızca uzak NVMe disk denetleyicisiyle dağıtmak istediğiniz bir görüntü oluşturuyorsanız tamamlayın. Hedef VM SCSI kullanıyorsa, uzak NVMe için etiketlenmiş her adımı atlayın ve standart ayarları koruyun. Uzak NVMe, bir Gen2 imajı ve desteklenen bir işletim sistemi sürümü gerektirir. Tam hedef VM boyutunun DiskControllerTypes özelliğini doğrulayın ve uzak NVMe için desteklenen işletim sistemi görüntülerini gözden geçirin. Denetleyici türünü yalnızca VM serisi oluşturma işleminden çıkarmayın.

  • Azure, Hyper-V sanal sabit disk (VHDX) biçimini desteklemez. Azure yalnızca sabit boyutlu VHD destekler. Hyper-V Yöneticisi'ni veya Convert-VHD cmdlet'ini kullanarak diski VHD biçimine dönüştürebilirsiniz. VirtualBox kullanıyorsanız, diski oluştururken varsayılan (Dinamik olarak ayrılmış) yerine Sabit boyut'a tıklayın.

  • Azure, Gen1 (BIOS önyüklemesi) ve Gen2 (UEFI önyüklemesi) sanal makineleri destekler.

  • Sanal dosya ayırma tablosu (VFAT) çekirdek modülü çekirdekte etkinleştirilmelidir.

  • VHD için izin verilen boyut üst sınırı 1.023 GB'tır.

  • Linux sistemini yüklerken Mantıksal Birim Yöneticisi (LVM) yerine standart bölümler kullanmanızı öneririz. LVM, birçok yükleme için varsayılandır.

    Standart bölümlerin kullanılması, özellikle bir işletim sistemi diski sorun giderme için başka bir özdeş VM'ye bağlıysa, kopyalanan VM'lerle LVM adı çakışmalarını önler. Veri disklerinde LVM veya RAID kullanabilirsiniz.

  • Kullanıcı tanımlı işlev (UDF) dosya sistemlerini bağlamak için çekirdek desteği gereklidir. Azure’da ilk önyükleme sırasında, tedarik yapılandırması, konuğa bağlanan UDF biçimli ortamlar aracılığıyla Linux sanal makinesine iletilir. Azure Linux aracısı, yapılandırmasını okumak ve VM'yi sağlamak için UDF dosya sistemini bağlamalıdır.

  • 2.6.37'den önceki Linux çekirdek sürümleri, daha büyük VM boyutlarına sahip Hyper-V üzerinde Tekdüzen Olmayan Bellek Erişimini (NUMA) desteklemez. Bu sorun öncelikli olarak yukarı akış Red Hat 2.6.32 çekirdeğini kullanan eski dağıtımları etkiler. Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504) ile düzeltildi.

    2.6.37'den eski özel çekirdekler veya 2.6.32-504'ten eski RHEL tabanlı çekirdekler çalıştıran sistemler, numa=off içindeki çekirdek komut satırında önyükleme parametresini ayarlamalıdır. Daha fazla bilgi için bkz . Red Hat KB 436883.

  • İşletim sistemi diskinde değiştirme bölümü yapılandırmayın. Linux aracısını, bu makalenin ilerleyen bölümlerinde açıklandığı gibi geçici kaynak diskinde bir takas dosyası oluşturacak şekilde yapılandırabilirsiniz.

  • Azure'da tüm VHD'lerin 1 MB (1024 x 1024 bayt) ile hizalanmış bir sanal boyutu olmalıdır. Ham diskten VHD'ye dönüştürürken, bu makalenin devamında açıklandığı gibi ham disk boyutunun dönüştürmeden önce 1 MB'ın katı olduğundan emin olun.

  • En güncel dağıtım sürümünü, paketleri ve yazılımları kullanın.

  • Kullanıcıları ve sistem hesaplarını, ortak anahtarları, hassas verileri, gereksiz yazılımları ve uygulamaları kaldırın.

Not

Cloud-init sürüm 21.2 veya üzeri UDF gereksinimini kaldırır. Ancak udf modülü etkinleştirilmeden, CD-ROM sağlama işlemi sırasında bağlanmaz; bu da özel verilerin uygulanmasını engeller. Geçici çözüm, kullanıcı verilerini uygulamaktır. Ancak, özel verilerden farklı olarak kullanıcı verileri şifrelenmez. Daha fazla bilgi için cloud-init belgelerindeki Kullanıcı veri biçimleri bölümüne bakın.

Hyper-V olmadan çekirdek modülleri yükleme

Azure, Hyper-V hiper yöneticisi üzerinde çalıştığından Linux için Azure'da belirli çekirdek modüllerinin çalıştırılması gerekir. Hyper-V dışında oluşturulmuş bir VM'niz varsa, Vm bir Hyper-V ortamında çalıştığını algılamadığı sürece, Linux yükleyicileri ilk RAM diskinde (initrd veya initramfs) Hyper-V sürücülerini içermeyebilir.

Linux görüntünüzü hazırlamak için farklı bir sanallaştırma sistemi (VirtualBox veya KVM gibi) kullanıyorsanız, başlangıç RAM diskinde en azından hv_vmbus ve hv_storvsc çekirdek modüllerinin kullanılabilir olması için initrd'yi yeniden oluşturmanız gerekebilir. Bu bilinen sorun yukarı akış Red Hat dağıtımına dayalı sistemlere ve büyük olasılıkla diğer sistemlere yöneliktir.

initrd veya initramfs görüntüsünü yeniden oluşturma mekanizması, dağıtıma bağlı olarak değişebilir. Uygun prosedür için dağıtımınızın belgelerine veya destek hizmetine başvurun. mkinitrd yardımcı programını kullanarak initrd'ı yeniden oluşturmak için bir örnek:

  1. Mevcut initrd görüntüsünü yedekleyin:

    cd /boot
    sudo cp initrd-`uname -r`.img  initrd-`uname -r`.img.bak
    
  2. hv_vmbus ve hv_storvsc çekirdek modüllerini kullanarak initrd'yi yeniden oluşturun:

    sudo mkinitrd --preload=hv_storvsc --preload=hv_vmbus -v -f initrd-`uname -r`.img `uname -r`
    

VHD'leri yeniden boyutlandırma

Azure'da VHD görüntülerinin 1 MB'a hizalanmış bir sanal boyutu olmalıdır. Normalde, Hyper-V aracılığıyla oluşturulan VHD'ler doğru hizalanır. VHD doğru hizalanmamışsa, VHD'nizden bir görüntü oluşturmaya çalıştığınızda aşağıdaki örneğe benzer bir hata iletisi alabilirsiniz:

The VHD http://<mystorageaccount>.blob.core.windows.net/vhds/MyLinuxVM.vhd has an unsupported virtual size of 21475270656 bytes. The size must be a whole number (in MBs).

Bu durumda Hyper-V Yöneticisi konsolunu veya Resize-VHD PowerShell cmdlet'ini kullanarak VM'yi yeniden boyutlandırın. Windows ortamında çalışmıyorsanız, VHD'yi dönüştürmek (gerekirse) ve yeniden boyutlandırmak için kullanmanızı qemu-img öneririz.

Not

qemu-img içindeki bilinen bir hata, QEMU'nun 2.2.1 sürümünde ve bazı sonraki sürümlerinde, uygunsuz biçimde biçimlendirilmiş bir VHD'ye neden olur. Sorun QEMU 2.6'da düzeltildi. 2.2.0 veya önceki bir sürümü veya 2.6 veya sonraki bir sürümü kullanmanızı öneririz.

  1. qemu-img veya vbox-manage gibi araçlar kullanılarak VHD’nin doğrudan yeniden boyutlandırılması, önyüklenemez bir VHD’ye neden olabilir. Önce aşağıdaki kodu kullanarak VHD'yi ham disk görüntüsüne dönüştürmenizi öneririz.

    VM görüntüsü ham disk görüntüsü olarak oluşturulduysa bu adımı atlayabilirsiniz. VM görüntüsünü ham disk görüntüsü olarak oluşturmak, KVM gibi bazı hiper yöneticilerde varsayılan değerdir.

    sudo qemu-img convert -f vpc -O raw MyLinuxVM.vhd MyLinuxVM.raw
    
  2. Sanal boyutun 1 MB'a hizalanması için disk görüntüsünün gerekli boyutunu hesaplayın. Aşağıdaki Bash kabuk betiği, disk görüntüsünün sanal boyutunu belirlemek için qemu-img info kullanır ve ardından boyutu bir sonraki 1 MB'a hesaplar:

    rawdisk="MyLinuxVM.raw"
    vhddisk="MyLinuxVM.vhd"
    
    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "$rawdisk" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    
    rounded_size=$(((($size+$MB-1)/$MB)*$MB))
    
    echo "Rounded Size = $rounded_size"
    
  3. kullanarak $rounded_sizeham diski yeniden boyutlandırın:

    sudo qemu-img resize MyLinuxVM.raw $rounded_size
    
  4. Ham diski sabit boyutlu bir VHD'ye geri dönüştürün:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc MyLinuxVM.raw MyLinuxVM.vhd
    

    Veya 2.6'nın önceki QEMU sürümleriyle force_size şu seçeneği kaldırın:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc MyLinuxVM.raw MyLinuxVM.vhd
    

Linux çekirdek gereksinimleri

Hyper-V ve Azure için Linux Integration Services (LIS) sürücüleri doğrudan yukarı akış Linux çekirdeğine katkıda bulunur. En son Linux çekirdek sürümünü (örneğin 3.x) içeren birçok dağıtımda bu sürücüler zaten kullanılabilir veya bu sürücülerin geri aktarılan sürümlerini kendi çekirdekleriyle birlikte sağlar.

LIS sürücüleri yeni düzeltmeler ve özelliklerle yukarı akış çekirdeğinde sürekli güncelleştiriliyor. Mümkün olduğunda, bu düzeltmeleri ve güncelleştirmeleri içeren onaylı bir dağıtım çalıştırmanızı öneririz.

RHEL sürüm 6.0 ile 6.3 arasında bir değişken çalıştırıyorsanız, Hyper-V için en son LIS sürücülerini yüklemeniz gerekir. RHEL 6.4+ (ve türevleri) ile başlayarak, LIS sürücüleri çekirdekte zaten bulunur, bu nedenle ek yükleme paketlerine ihtiyacınız yoktur.

Özel çekirdek gerekiyorsa, yeni bir çekirdek sürümü (örneğin, 3.8+) öneririz. Kendi çekirdeğini koruyan dağıtımlar veya satıcılar için LIS sürücülerini düzenli olarak yukarı akış çekirdeğinden özel çekirdeğinize geri aktarmanız gerekir.

Zaten nispeten yeni bir çekirdek sürümü çalıştırıyor olsanız bile, LIS sürücülerindeki tüm yukarı akış düzeltmelerini izlemenizi ve gerektiğinde bunları geri aktarmanızı kesinlikle öneririz. LIS sürücüsü kaynak dosyalarının konumları Linux çekirdek kaynak ağacındaki MAINTAINERS dosyasında belirtilir:

    F:    arch/x86/include/asm/mshyperv.h
    F:    arch/x86/include/uapi/asm/hyperv.h
    F:    arch/x86/kernel/cpu/mshyperv.c
    F:    drivers/hid/hid-hyperv.c
    F:    drivers/hv/
    F:    drivers/input/serio/hyperv-keyboard.c
    F:    drivers/net/hyperv/
    F:    drivers/scsi/storvsc_drv.c
    F:    drivers/video/fbdev/hyperv_fb.c
    F:    include/linux/hyperv.h
    F:    tools/hv/

VM'nin etkin çekirdeği aşağıdaki düzeltme eklerini içermelidir. Bu liste tüm dağıtımlar için tamamlanamaz.

Azure Linux Aracısı

Azure Linux Aracısı (waagent), Azure'da bir Linux sanal makinesi sağlar. Linux Aracısı GitHub deposunda en son sürümü alabilir, sorunları bildirebilir veya çekme istekleri gönderebilirsiniz.

Azure Linux Aracısı'nı kullanma konusunda dikkat edilmesi gereken bazı noktalar şunlardır:

  • Linux aracısı Apache 2.0 lisansı altında yayınlanır. Birçok dağıtım zaten aracı için .rpm veya .deb paketleri sağlar. Bu paketleri kolayca yükleyebilir ve güncelleştirebilirsiniz.
  • Azure Linux Aracısı için Python v2.6+ gerekir.
  • Aracı ayrıca python-pyasn1 modülünü gerektirir. Çoğu dağıtım, bu modülü yüklenecek ayrı bir paket olarak sağlar.
  • Bazı durumlarda Azure Linux Aracısı NetworkManager ile uyumlu olmayabilir. Dağıtımlar tarafından sağlanan paketlerin (.rpm veya .deb) çoğu, NetworkManager'ı waagent paketiyle çakışacak şekilde yapılandırır. Bu durumlarda, Linux aracı paketini yüklediğinizde aracı NetworkManager'ı kaldıracaktır.
  • Azure Linux Aracısı desteklenen en düşük sürümde veya daha yüksek bir sürümde olmalıdır.

Not

udf ve vfat modüllerinin etkinleştirildiğinden emin olun. Modülün udf devre dışı bırakılması sağlama hatasına neden olur. Modülün vfat devre dışı bırakılması hem sağlama hem de önyükleme hatalarına neden olur. Cloud-init sürüm 21.2 veya üzeri, bu koşulların her ikisi de varsa UDF gerektirmeden VM'ler sağlayabilir:

  • VM'yi parolaları değil SSH ortak anahtarlarını kullanarak oluşturdunuz.
  • Özel veri sağlamadınız.

Genel Linux sistem gereksinimleri

  1. GRUB veya GRUB2'deki çekirdek önyükleme satırını, tüm konsol iletilerinin ilk seri bağlantı noktasına gönderilmesi için aşağıdaki parametreleri içerecek şekilde değiştirin. Bu iletiler, Azure destek ekibinin herhangi bir sorunun hata ayıklanmasına yardımcı olabilir.

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

    Varsa aşağıdaki parametreleri kaldırmanızı da öneririz:

    rhgb quiet crashkernel=auto
    

    Grafik önyükleme ve sessiz önyükleme, tüm günlüklerin seri porta gönderilmesini istediğiniz bir bulut ortamında kullanışlı değildir. Gerekirse seçeneği yapılandırılmış olarak bırakabilirsiniz crashkernel , ancak bu parametre VM'deki kullanılabilir bellek miktarını en az 128 MB azaltır. Kullanılabilir belleği azaltmak, daha küçük VM boyutları için sorunlu olabilir.

  2. /etc/default/grub düzenlemesini tamamladıktan sonra GRUB yapılandırmasını yeniden oluşturun. Yalnızca dağıtımınız için uygun komutu çalıştırın.

    Debian veya Ubuntu tabanlı dağıtımlar için şunu çalıştırın:

    sudo update-grub
    

    RHEL, Oracle Linux ve SUSE gibi sağlayan grub2-mkconfigdağıtımlar için şunu çalıştırın:

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

    Bunun yerine grub-mkconfig sağlayan dağıtımlarda şunu çalıştırın:

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

    GRUB yapılandırma yolu UEFI yüklemeleri için farklılık gösterebilir. Dağıtımınız başka bir yol kullanıyorsa, bu dağıtım için belgelenen yolu kullanın.

  3. Hyper-V modüllerini ilk RAM diskine ekleyin. Yalnızca dağıtımınız tarafından kullanılan araçlarla eşleşen yordamı çalıştırın.

    1. Dracut tabanlı dağıtım için şunu çalıştırın:
    cd /boot
    sudo cp initramfs-<kernel-version>.img <kernel-version>.img.bak
    sudo dracut -f -v initramfs-<kernel-version>.img <kernel-version> --add-drivers "hv_vmbus hv_netvsc hv_storvsc"
    
    1. mkinitramfs kullanan bir dağıtım için dracut yordamı yerine aşağıdaki yordamı çalıştırın:
    cd /boot
    sudo cp initrd.img-<kernel-version> initrd.img-<kernel-version>.bak
    sudo mkinitramfs -o initrd.img-<kernel-version> <kernel-version> --with=hv_vmbus,hv_netvsc,hv_storvsc
    
  4. Yalnızca uzak bir NVMe disk denetleyicisi için bir görüntü oluşturuyorsanız, NVMe önyükleme desteğini yapılandırın ve doğrulayın. Aksi takdirde bu adımı atlayın. Tam komutlar dağıtıma göre farklılık gösterebilir.

    1. Dağıtımınıza uygun yöntemi kullanarak initramfs'ı NVMe sürücüleriyle yeniden oluşturun.

      Dracut tabanlı bir dağıtım için NVMe sürücülerini gelecekteki initramfs görüntülerinde kalıcı hale getirin ve geçerli initramfs'ı yeniden oluşturun:

      sudo mkdir -p /etc/dracut.conf.d
      printf '%s\n' 'add_drivers+=" nvme nvme_core "' | sudo tee /etc/dracut.conf.d/azure-nvme.conf
      sudo dracut --force
      

      Initramfs-tools tabanlı dağıtım için NVMe sürücülerini kalıcı hale getirin ve initramfs'ı yeniden oluşturun:

      printf '%s\n' nvme nvme_core | sudo tee -a /etc/initramfs-tools/modules
      sudo update-initramfs -u -k all
      
    2. nvme_core.io_timeout=240 içindeki mevcut çekirdek komut satırına /etc/default/grub ekleyin ve ardından dağıtımınıza uygun komutu kullanarak GRUB yapılandırmasını yeniden oluşturun.

    3. Her iki NVMe sürücü modülünün de sistemde kullanılabilir olduğunu doğrulayın. Her iki komutu da çalıştırın:

      modinfo nvme
      modinfo nvme_core
      

      Her komutun modülü hakkında bilgi döndürmesi gerekir. Modüllerden biri bulunamazsa, devam etmeden önce dağıtımınızın belgelerini izleyerek modülü yükleyin veya etkinleştirin.

    4. Her iki NVMe sürücüsünün de initramfs'a dahil olduğunu doğrulayın. Yalnızca dağıtımınız için komutunu çalıştırın.

      Dracut tabanlı dağıtım için şunu çalıştırın:

      sudo lsinitrd /boot/initramfs-$(uname -r).img | grep -E 'nvme(_core)?\.ko'
      

      Initramfs-tools tabanlı dağıtım için şunu çalıştırın:

      sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep -E 'nvme(_core)?\.ko'
      

      Çıkış, hem nvme hem de nvme_core sürücülerini göstermelidir. Aksi takdirde, devam etmeden önce dağıtımınızın belgelerine başvurun ve ilk RAM diskini yeniden oluşturun.

  5. SSH sunucusunun yüklendiğinden ve önyükleme zamanında başlatacak şekilde yapılandırıldığından emin olun. Bu yapılandırma genellikle varsayılandır.

  6. Azure Linux Aracısı'nı yükleyin.

    Azure'da Linux görüntüsü sağlamak için Azure Linux Aracısı gereklidir. Birçok dağıtım aracıyı .rpm veya .deb paketi olarak sağlar. Paket genellikle WALinuxAgent veya walinuxagent olarak adlandırılır. Azure Linux Aracısı kılavuzundaki adımları izleyerek aracıyı el ile de yükleyebilirsiniz.

    Not

    udf ve vfat modüllerinin etkinleştirildiğinden emin olun. Bunları kaldırmak veya devre dışı bırakmak, sağlama veya önyükleme hatasına neden olur. Cloud-init sürüm 21.2 veya üzeri UDF gereksinimini kaldırır.

    Azure Linux Aracısını, cloud-init'i ve diğer gerekli yardımcı programları yükleyin. Yalnızca sisteminizde kullanılabilen paket yöneticisi için komutunu çalıştırın.

    için dnfkomutunu çalıştırın:

     sudo dnf install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Sisteminiz yum yerine dnf sağlıyorsa, önceki komutta yum yerine dnf kullanın.

    için aptkomutunu çalıştırın:

    sudo apt install walinuxagent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    için zypperkomutunu çalıştırın:

    sudo zypper install python-azure-agent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Ardından aracıyı ve cloud-init'i tüm dağıtımlarda etkinleştirin:

    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  7. İşletim sistemi diskinde değiştirme alanı oluşturmayın.

    Yerel kaynak diski aracılığıyla takas alanını yapılandırmak için Azure Linux Aracısı'nı veya cloud-init'i kullanabilirsiniz. Azure bu kaynak diskini sağlamadan sonra VM'ye ekler. Yerel kaynak diski geçicidir ve VM'nin yetkisi kaldırıldığında boşaltılabilir.

    Important

    Bu yönergeler, uzak disk denetleyicisinin SCSI veya NVMe olup olmadığını uygular. Yerel geçici kaynak diski içeren bir VM boyutu gerektirir. Uzak disk denetleyicisi türü, bir kaynak diskin kullanılabilir olup olmadığını belirlemez.

    1. Takas alanını yönetmek için bir yöntem seçin ve yapılandırın.

      Azure Linux Aracısı'nı kullanmak için /etc/waagent.conf dosyasında aşağıdaki parametreleri değiştirin:

      ResourceDisk.Format=y
      ResourceDisk.Filesystem=ext4
      ResourceDisk.MountPoint=/mnt/resource
      ResourceDisk.EnableSwap=y
      ResourceDisk.SwapSizeMB=2048    ## NOTE: Set this to your desired size.
      

      Bunun yerine cloud-init kullanmak için cloud-init'i sağlamayı işleyecek şekilde yapılandırın ve Azure Linux Aracısı'nın kaynak diskini biçimlendirmesini veya takas alanı oluşturmasını engelleyin:

      sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/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
      
    2. cloud-init’i seçtiyseniz, swap yapılandırmasının nasıl sağlanacağını seçin.

      Her VM oluşturduğunuzda cloud-init yapılandırmasını customdata aracılığıyla iletebilirsiniz. Bu yöntemi kullanın.

      Alternatif olarak, imaja bir cloud-init yönergesi ekleyin; böylece her VM oluşturulduğunda takas alanı yapılandırılır. Bu yöntemi kullanmak için bir .cfg dosyası oluşturun:

      echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' | sudo tee -a /etc/systemd/system.conf
      cat << EOF | sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg
      #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/resource"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  8. Sağlamayı işlemek için cloud-init'i yapılandırın:

    1. cloud-init için waagent yapılandırın:

      sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/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
      

      Belirli bir sanal makineyi taşıyorsanız ve genelleştirilmiş bir görüntü oluşturmak istemiyorsanız, Provisioning.Agent=disabled yapılandırmasında olarak ayarlayın.

    2. Bağlantı noktalarını yapılandırın:

      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
      
      
    3. Azure veri kaynağını yapılandırın:

      echo "Allow only Azure datasource, disable fetching network setting via IMDS"
      cat << EOF | sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg
      datasource_list: [ Azure ]
      datasource:
         Azure:
           apply_network_config: False
      EOF
      
    4. Birini yapılandırdıysanız mevcut takas dosyasını kaldırın:

      if [[ -f /mnt/resource/swapfile ]]; then
      echo "Removing swapfile" #RHEL uses a swap file by default
      swapoff /mnt/resource/swapfile
      rm /mnt/resource/swapfile -f
      fi
      
    5. Cloud-init günlüğünü yapılandırma:

      echo "Add console log file"
      cat << EOF | sudo tee -a /etc/cloud/cloud.cfg.d/05_logging.cfg
      
      # 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
      
  9. Sanal makinenin kaynaklarını kaldırmadan önce disk bağlama yapılandırmasını doğrulayın. Bu doğrulama hem SCSI hem de uzak NVMe görüntüleri için geçerlidir.

    1. /etc/fstab öğesini gözden geçirin. Veya gibi /dev/sd*/dev/nvme*cihaz adlarını kullanmayın çünkü cihaz adları yeniden başlatmalar arasında veya disk denetleyicisi değiştiğinde değişebilir. Bunun yerine dosya sistemi UUID'lerini veya diğer kalıcı tanımlayıcıları kullanın.

      /etc/fstab içindeki girdilerle karşılaştırabilmeniz için blok cihazlarını ve kalıcı tanımlayıcılarını listeleyin:

      sudo blkid
      
    2. /etc/fstab içinde söz dizimi hatalarını, geçersiz bağlama seçeneklerini ve çözümlenemeyen referansları denetleyin:

      sudo findmnt --verify --verbose
      
    3. Yalnızca uzak NVMe disk denetleyicisi için görüntü oluşturuyorsanız, yapılandırılan G/Ç zaman aşımını doğrulayın. Kaynak VM şu anda NVMe kullanıyorsa şunu çalıştırın:

      cat /sys/module/nvme_core/parameters/io_timeout
      

      Değer olmalıdır 240. SCSI kaynak VM'leri bu çalışma zamanı parametresini kullanıma sunmayabilir; bu durumda, GRUB yapılandırmasında mevcut nvme_core.io_timeout=240 olduğunu ve yeniden oluşturulmuş yapılandırmanın bunu içerdiğini doğrulayın.

  10. Sanal makineyi kullanımdan çıkarmak için aşağıdaki komutları çalıştırın.

    Dikkat

    Belirli bir sanal makineyi taşıyorsanız ve genelleştirilmiş bir görüntü oluşturmak istemiyorsanız deprovisioning adımını atlayın. komutu waagent -force -deprovision+user çalıştırılırsa kaynak makine kullanılamaz duruma gelir. Bu adım yalnızca genelleştirilmiş bir görüntü oluşturmaya yöneliktir.

    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
    

    VirtualBox'ta, çalıştırdıktan waagent -force -deprovision sonra şunu belirten [Errno 5] Input/output errorbir hata iletisi görebilirsiniz: . Bu hata iletisi kritik değildir; yok sayabilirsiniz.

  11. Sanal makineyi kapatın ve VHD'yi Azure'a yükleyin.

Sonraki adımlar

Azure CLI kullanarak özel diskten Linux VM oluşturma

SCSI'den NVMe'ye taşımanız gereken mevcut bir Azure VM için Linux ve Windows VM'lerini SCSI'den NVMe'ye dönüştürme seçeneğini kullanın. Mimari ve destek bilgileri için bkz. NVMe'ye genel bakış.