Aracılığıyla paylaş


Azure’da Linux VM’nizi iyileştirme

Bir Linux sanal makinesi (VM) oluşturmak, komut satırından veya portaldan kolayca yapılır. bu öğreticide, Microsoft Azure platformunda performansını en iyi duruma getirecek şekilde ayarlamış olduğunuzdan emin olmanız gösterilmektedir. Bu konu, Ubuntu sunucu sanal makinesini kullanır, ancak aynı zamanda kendi görüntülerinizi şablon olarakkullanarak Linux sanal makinesi de oluşturabilirsiniz.

Önkoşullar

Bu konu, zaten çalışan bir Azure aboneliğiniz olduğunu varsayar (ücretsiz deneme kaydı) ve Azure aboneliğinizde zaten bir VM sağladınız. VMoluşturmadan önce az oturum açma ile Azure ABONELIĞINIZDE en son Azure CLI 'nın yüklü olduğundan ve oturum açmış olduğunuzdan emin olun.

Azure işletim sistemi diski

Azure 'da bir Linux VM oluşturduktan sonra, onunla ilişkili iki disk vardır. /dev/sda , işletim sistemi diskinizdeki /dev/sdb geçici diskdedir. Ana IŞLETIM sistemi diski (/dev/sda), hızlı VM önyükleme süresi için en iyi duruma getirilmiş ve iş yükleriniz için iyi performans sağlamayan bir şey için kullanmayın. Verilerinize yönelik kalıcı ve iyileştirilmiş depolama alanı almak için sanal makinenize bir veya daha fazla disk eklemek istiyorsunuz.

Boyut ve performans hedefleri için disk ekleme

VM boyutuna bağlı olarak, bir G serisi makinede bir D serisi ve 64 disk üzerinde 16 ' ya kadar ek disk, her biri boyut olarak 32 TB 'a kadar olan bir G serisi makinede 32 diske ekleyebilirsiniz. Alanınız ve IOPS gereksinimlerinize göre gereken sayıda ek disk eklersiniz. her diskin standart Depolama için 500 ıops ve Premium Depolama için disk başına 20.000 ıops performans hedefi vardır.

önbellek ayarlarının ReadOnly veya Noneolarak ayarlandığı Premium Depolama disklerinde en yüksek ıops elde etmek için, dosya sistemini Linux 'a bağlama sırasında engelleri devre dışı bırakmanız gerekir. Premium Depolama desteklenen disklere yazma işlemleri bu önbellek ayarları için dayanıklı olduğundan, engelleri gerekmez.

  • Reıfskullanıyorsanız, bağlama seçeneğini barrier=none kullanarak engelleri devre dışı bırakın (engelleri etkinleştirmek için kullanın barrier=flush )
  • Ext3/ext4kullanırsanız, bağlama seçeneğini barrier=0 kullanarak engelleri devre dışı bırakın (engelleri etkinleştirmek için, kullanın barrier=1 )
  • XFSkullanıyorsanız, bağlama seçeneğini nobarrier kullanarak engelleri devre dışı bırakın (engelleri etkinleştirmek için seçeneğini barrier kullanın)

Yönetilmeyen depolama hesabı konuları

azure clı ile bir VM oluşturduğunuzda varsayılan eylem azure Yönetilen Diskler kullanmaktır. Bu diskler Azure platformu tarafından işlenir ve bunları depolamak için herhangi bir hazırlık veya konum gerektirmez. Yönetilmeyen diskler için bir depolama hesabı gerekir ve bazı ek performans konuları vardır. Yönetilen diskler hakkında daha fazla bilgi için bkz. Azure Yönetilen Disklere genel bakış. Aşağıdaki bölümde, yalnızca yönetilmeyen diskleri kullandığınızda performans konuları özetlenmektedir. Yine, varsayılan ve önerilen depolama çözümü yönetilen diskleri kullanmaktır.

Yönetilmeyen diskler içeren bir sanal makine oluşturursanız, yakınlık kapanışını sağlamak ve ağ gecikmesini en aza indirmek için VM 'niz ile aynı bölgede bulunan depolama hesaplarından disk iliştirdiğinizden emin olun. Her standart depolama hesabında en fazla 20 k IOPS ve 500 TB boyutunda kapasite vardır. Bu sınır, hem işletim sistemi diski hem de oluşturduğunuz tüm veri diskleri dahil olmak üzere yaklaşık 40 fazla kullanılan disk için geçerlidir. Premium Depolama hesapları için maksimum ıops sınırı yoktur, ancak 32 TB boyutunda bir sınır vardır.

yüksek ıops iş yükleri ile ilgilenirken ve diskleriniz için standart Depolama seçtiyseniz, standart Depolama hesapları için 20.000 ıops sınırına ulaştığınızdan emin olmak için diskleri birden çok depolama hesabında bölmeniz gerekebilir. VM 'niz, en iyi yapılandırmanızı elde etmek için farklı depolama hesapları ve depolama hesabı türlerindeki disklerin bir karışımını içerebilir.

VM geçici sürücünüz

Varsayılan olarak, bir VM oluşturduğunuzda, Azure size bir işletim sistemi diski (/dev/sda) ve geçici bir disk (/dev/sdb) sağlar. Eklediğiniz tüm ek diskler /dev/SDC, /dev/sdd, /dev/SDE vb. olarak gösterilir. Geçici diskinizdeki tüm veriler (/dev/sdb) dayanıklı değildir ve VM yeniden boyutlandırma, yeniden dağıtma veya bakım gibi belırlı olaylar sanal makinenizin yeniden başlatılmasını zorlarsa kaybolabilir. Geçici diskinizin boyutu ve türü, dağıtım zamanında seçtiğiniz VM boyutuyla ilgilidir. Tüm Premium boyut sanal makineleri (DS, G ve DS_V2 serisi) geçici sürücü, 48k IOPS 'nin ek performansı için yerel bir SSD tarafından desteklenir.

Linux takas bölümü

Azure VM 'niz bir Ubuntu veya CoreOS görüntüsünden ise, CustomData kullanarak Cloud-init ' e Cloud-config gönderebilirsiniz. Cloud-init kullanan özel bir Linux görüntüsünü karşıya yüklediyseniz, Cloud-init kullanarak takas bölümlerini de yapılandırırsınız.

Cloud-init tarafından sağlanan ve desteklenen tüm görüntüler için değiştirmeyi yönetmek üzere /etc/waagent.exe dosyasını kullanamazsınız. Görüntülerin tam listesi için bkz. Cloud-Init kullanma.

Bu görüntüler için değiştirmeyi yönetmenin en kolay yolu, aşağıdaki adımları tamamlardır:

  1. /Var/lib/Cloud/Scripts/per-Boot klasöründe create_swapfile. shadlı bir dosya oluşturun:

    $ sudo Touch/var/lib/Cloud/Scripts/per-Boot/create_swapfile. sh

  2. Dosyasına aşağıdaki satırları ekleyin:

    $ sudo vi/var/lib/Cloud/Scripts/per-Boot/create_swapfile. sh

    #!/bin/sh
    if [ ! -f '/mnt/swapfile' ]; then
    fallocate --length 2GiB /mnt/swapfile
    chmod 600 /mnt/swapfile
    mkswap /mnt/swapfile
    swapon /mnt/swapfile
    swapon -a ; fi
    

    Not

    Değeri gereksinimlerinize göre değiştirebilir ve kaynak diskinizdeki kullanılabilir alana bağlı olarak, kullanılan VM boyutuna göre farklılık gösterir.

  3. Dosyayı yürütülebilir yapın:

    $ sudo chmod + x/var/lib/Cloud/Scripts/per-Boot/create_swapfile. sh

  4. Swapfile 'ı oluşturmak için, son adımdan sonra betiği çalıştırın:

    $ sudo/var/lib/Cloud/Scripts/per-Boot/.exe/create_swapfile. sh

cloud-init desteği olmayan görüntüler için, Azure Market dağıtılan vm görüntülerinin işletim sistemiyle tümleştirilmiş bir vm Linux aracısı vardır. Bu aracı, sanal makinenin çeşitli Azure hizmetleriyle etkileşime geçmesini sağlar. Azure Market standart bir görüntü dağıttığınız varsayılarak, Linux takas dosyası ayarlarınızı doğru şekilde yapılandırmak için aşağıdakileri yapmanız gerekir:

/Etc/waagent.exe dosyasındaki iki girişi bulun ve değiştirin. Özel bir takas dosyasının ve takas dosyasının boyutunun varlığını denetler. Doğrulamanız gereken parametreler şunlardır ResourceDisk.EnableSwap ve ResourceDisk.SwapSizeMB

Düzgün şekilde etkinleştirilmiş bir diski ve bağlı takas dosyasını etkinleştirmek için, parametrelerin aşağıdaki ayarlara sahip olduğundan emin olun:

  • ResourceDisk. EnableSwap = Y
  • ResourceDisk. SwapSizeMB = {gereksinimlerinizi karşılayacak şekilde MB olarak boyut}

Değişikliği yaptıktan sonra, bu değişiklikleri yansıtmak için waagent 'ı yeniden başlatmanız veya Linux VM 'nizi yeniden başlatmanız gerekir. Bu değişikliklerin uygulandığını ve boş alanı görüntülemek için komutunu kullandığınızda free bir takas dosyası oluşturulduğunu bilirsiniz. Aşağıdaki örnekte, waagent. conf dosyasını değiştirmenin sonucu olarak bir 512MB takas dosyası oluşturuldu:

azuseruser@myVM:~$ free
            total       used       free     shared    buffers     cached
Mem:       3525156     804168    2720988        408       8428     633192
-/+ buffers/cache:     162548    3362608
Swap:       524284          0     524284

Premium Depolama için g/ç zamanlama algoritması

2.6.18 Linux çekirdeğiyle, varsayılan g/ç zamanlama algoritması son tarihten sonra CFQ (tamamen dengeli kuyruk algoritması) olarak değiştirilmiştir. Rastgele erişim g/ç desenleri için, CFQ ve son tarih arasındaki performans farklılıklarına göz ardı edilebilir bir farklılık vardır. Disk g/ç deseninin ağırlıklı sıralı olduğu SSD tabanlı diskler için, NOOP veya son tarih algoritmasına geri dönmek daha iyi g/ç performansı elde edebilir.

Geçerli g/ç zamanlayıcısını görüntüleme

Aşağıdaki komutu kullanın:

cat /sys/block/sda/queue/scheduler

Geçerli zamanlayıcıyı belirten aşağıdaki çıktıyı görürsünüz.

noop [deadline] cfq

G/ç zamanlama algoritmasının geçerli cihazını (/dev/sda) değiştirin

Aşağıdaki komutları kullanın:

azureuser@myVM:~$ sudo su -
root@myVM:~# echo "noop" >/sys/block/sda/queue/scheduler
root@myVM:~# sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"/g' /etc/default/grub
root@myVM:~# update-grub

Not

Bu ayarın tek başına /dev/sda için uygulanması yararlı değildir. Sıralı g/ç 'nin g/ç düzenlerini birbirinden ayıran tüm veri disklerinde ayarlanır.

Grub. cfg dosyasının başarıyla yeniden yapıldığını ve varsayılan ZAMANLAYıCıNıN noop olarak güncelleştirildiğini belirten aşağıdaki çıktıyı görmeniz gerekir.

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.13.0-34-generic
Found initrd image: /boot/initrd.img-3.13.0-34-generic
Found linux image: /boot/vmlinuz-3.13.0-32-generic
Found initrd image: /boot/initrd.img-3.13.0-32-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
done

Red Hat dağıtım ailesi için yalnızca aşağıdaki komuta ihtiyacınız vardır:

echo 'echo noop >/sys/block/sda/queue/scheduler' >> /etc/rc.local

Azure tarafından ayarlanmış çekirdekte Ubuntu 18,04, çok kuyruğu olan g/ç zamanlayıcılar kullanır. Bu senaryoda, none yerine noop uygun seçim vardır. Daha fazla bilgi için bkz. Ubuntu ı/O zamanlayıcılar.

Daha yüksek g/Ops elde etmek için yazılım RAID kullanma

İş yükleriniz tek bir diskin sağlayabileceğinden daha fazla IOPS gerektiriyorsa, birden çok diskin yazılım RAID yapılandırmasını kullanmanız gerekir. Azure, yerel yapı katmanında zaten disk esnekliği gerçekleştirdiğinden, RAID-0 dizme yapılandırmasından en yüksek düzeyde performans elde edersiniz. Azure ortamında diskler sağlayın ve oluşturun ve sürücüleri bölümlemeden, biçimlendirmeden ve bağlamadan önce Linux sanal makinenize ekleyin. Azure 'da Linux sanal makinenizde yazılım RAID kurulumunu yapılandırma hakkında daha fazla bilgi için, Linux 'Ta yazılım yapılandırma belgesinde bulunabilir.

Geleneksel RAID yapılandırmasına alternatif olarak, bir dizi fiziksel diski tek bir şeritli mantıksal depolama biriminde yapılandırmak için mantıksal birim Yöneticisi 'Ni (LVM) yüklemeyi de tercih edebilirsiniz. Bu yapılandırmada, okuma ve yazma işlemleri, birim grubunda bulunan birden çok diske dağıtılır (RAID0 benzer). Performans nedenleriyle, büyük olasılıkla mantıksal birimlerinizi, okuma ve yazma işlemlerinin tüm ekli veri disklerinizi kullanmasını sağlayacak şekilde eklemek isteyeceksiniz. Azure 'daki Linux VM 'niz üzerinde bir şeritli mantıksal birim yapılandırma hakkında daha fazla ayrıntı, Azure belgesindeki bir LINUX sanal makinesinde bulunan LVM yapılandırma bölümünde bulunabilir.

Sonraki Adımlar

Tüm iyileştirme tartışmalarında olduğu gibi, değişikliğin etkisini ölçmek için her değişiklikten önce ve sonra testler gerçekleştirmeniz gerektiğini unutmayın. İyileştirme, ortamınızdaki farklı makinelerde farklı sonuçlar içeren adım adım bir işlemdir. Bir yapılandırma için ne işe yarar, diğerleri için çalışmayabilir.

Ek kaynaklara yönelik bazı yararlı bağlantılar: