Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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ı
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=offiç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:
Mevcut initrd görüntüsünü yedekleyin:
cd /boot sudo cp initrd-`uname -r`.img initrd-`uname -r`.img.bakhv_vmbusvehv_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.
qemu-imgveyavbox-managegibi 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.rawSanal 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 infokullanı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"kullanarak
$rounded_sizeham diski yeniden boyutlandırın:sudo qemu-img resize MyLinuxVM.raw $rounded_sizeHam 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.vhdVeya 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.
- ata_piix: Diskleri varsayılan olarak Hyper-V sürücülerine erteleme
- storvsc: RESET yolundaki aktarım içi paketlerin hesabı
- storvsc: WRITE_SAME kullanımından kaçının
- storvsc: RAID ve sanal konak bağdaştırıcısı sürücüleri için WRITE SAME özelliğini devre dışı bırakma
- storvsc: NULL işaretçi başvurma hatasının düzeltilmesi
- storvsc: halka arabelleği hataları G/Ç donmasına neden olabilir
- scsi_sysfs: __scsi_remove_device öğesinin iki kez çalıştırılmasına karşı koru
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-pyasn1modü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'ı
waagentpaketiyle ç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
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=autoGrafik ö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./etc/default/grub düzenlemesini tamamladıktan sonra GRUB yapılandırmasını yeniden oluşturmak için aşağıdaki komutu çalıştırın:
sudo grub2-mkconfig -o /boot/grub2/grub.cfginitramfs için Hyper-V modülünü
dracutkullanarak ekleyin: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" sudo grub-mkconfig -o /boot/grub/grub.cfg sudo grub2-mkconfig -o /boot/grub2/grub.cfginitrd için Hyper-V modülünü
mkinitramfskullanarak ekleyin: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 sudo update-grubSSH 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.
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
WALinuxAgentveyawalinuxagentolarak adlandırılır. Azure Linux Aracısı kılavuzundaki adımları izleyerek aracıyı el ile de yükleyebilirsiniz.Not
udfvevfatmodü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.Aşağıdaki komutlardan birini çalıştırarak Azure Linux Aracısı'nı, cloud-init'i ve diğer gerekli yardımcı programları yükleyin.
Red Hat veya CentOS için şu komutu kullanın:
sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemonsUbuntu/Debian için şu komutu kullanın:
sudo apt install walinuxagent cloud-init cloud-utils-growpart gdisk hyperv-daemonsSUSE için şu komutu kullanın:
sudo zypper install python-azure-agent cloud-init cloud-utils-growpart gdisk hyperv-daemonsArdı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İş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. Bu kaynak diski, Azure'da sağlandıktan sonra VM'ye eklenir. Yerel kaynak diski geçici bir disktir ve VM'nin yetkisi kaldırıldığında boşaltılabilir. Aşağıdaki bloklar, bu swap’in nasıl yapılandırılacağını gösterir.
Azure Linux Aracısı'nı seçerseniz /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.cloud-init'i seçerseniz, sağlamayı işlemek için cloud-init'i 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.confCloud-init'i takas alanını biçimlendirecek ve oluşturacak şekilde yapılandırmak için iki seçeneğiniz vardır:
-
customdataaracılığıyla her VM oluşturduğunuzda bir cloud-init yapılandırması belirtin. Bu yöntemi öneririz. - VM her oluşturulduğunda takas alanını yapılandırmak için imajda bir cloud-init yönergesi kullanın.
Cloud-init kullanarak takas alanını yapılandırmak 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-
Sağlamayı işlemek için cloud-init'i yapılandırın:
cloud-init için
waagentyapı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.confBelirli bir sanal makineyi taşıyorsanız ve genelleştirilmiş bir görüntü oluşturmak istemiyorsanız,
Provisioning.Agent=disabledyapılandırmasında olarak ayarlayın.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.cfgAzure 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 EOFBirini 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 fiCloud-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
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=0VirtualBox'ta, çalıştırdıktan
waagent -force -deprovisionsonra şunu belirten[Errno 5] Input/output errorbir hata iletisi görebilirsiniz: . Bu hata iletisi kritik değildir; yok sayabilirsiniz.Sanal makineyi kapatın ve VHD'yi Azure'a yükleyin.