Mengoptimalkan VM Linux Anda di Azure

Membuat komputer virtual Linux (VM) mudah dilakukan dari baris perintah atau dari portal. Tutorial ini menunjukkan kepada Anda cara memastikan Anda telah menyiapkannya untuk mengoptimalkan performanya di platform Microsoft Azure. Topik ini menggunakan VM Ubuntu Server, tetapi Anda juga dapat membuat komputer virtual Linux menggunakan gambar Anda sendiri sebagai templat.

Prasyarat

Topik ini mengasumsikan Anda sudah memiliki langganan Azure yang berfungsi (pendaftaran uji coba gratis) dan telah menyediakan VM ke dalam langganan Azure Anda. Pastikan Anda memiliki Azure CLI terbaru yang terinstal dan masuk ke langganan Azure Anda dengan az login sebelum Anda membuat VM.

Azure OS Disk

Setelah Anda membuat VM Linux di Azure, ia memiliki dua disk yang terkait dengannya. /dev/sda adalah disk OS Anda, /dev/sdb adalah disk sementara Anda. Jangan gunakan disk OS utama (/dev/sda) untuk apa pun kecuali sistem operasi karena dioptimalkan untuk waktu boot VM yang cepat dan tidak memberikan performa yang baik untuk beban kerja Anda. Anda ingin melampirkan satu atau beberapa disk ke VM Anda untuk mendapatkan penyimpanan persisten dan dioptimalkan untuk data Anda.

Menambahkan Disk untuk target Ukuran dan Performa

Berdasarkan ukuran VM, Anda dapat melampirkan hingga 16 disk tambahan pada Seri A, 32 disk pada Seri D dan 64 disk pada komputer Seri G - masing-masing berukuran hingga 32 TB. Anda menambahkan disk tambahan sesuai kebutuhan sesuai ruang dan persyaratan IOps Anda. Setiap disk memiliki target performa 500 IOps untuk Penyimpanan Standar dan hingga 20.000 IOps per disk untuk Penyimpanan Premium.

Untuk mencapai IOps tertinggi pada disk Premium Storage di mana pengaturan cache mereka telah diatur ke ReadOnly atau None, Anda harus menonaktifkan penghalang saat memasang sistem file di Linux. Anda tidak memerlukan penghalang karena penulisan ke disk yang didukung Premium Storage tahan lama untuk pengaturan cache ini.

  • Jika Anda menggunakan reiserFS, nonaktifkan barrier menggunakan opsi pemasangan barrier=none (Untuk mengaktifkan barrier, gunakan barrier=flush)
  • Jika Anda menggunakan ext3/ext4, nonaktifkan barrier menggunakan opsi pemasangan barrier=0 (Untuk mengaktifkan barrier, gunakan barrier=1)
  • Jika Anda menggunakan XFS, nonaktifkan barrier menggunakan opsi pemasangan nobarrier (Untuk mengaktifkan barrier, gunakan opsi barrier)

Pertimbangan akun penyimpanan yang tidak dikelola

Tindakan default saat Anda membuat VM dengan Azure CLI adalah menggunakan Azure Managed Disks. Disk ini ditangani oleh platform Azure dan tidak memerlukan persiapan atau lokasi apa pun untuk menyimpannya. Disk yang tidak dikelola memerlukan akun penyimpanan dan memiliki beberapa pertimbangan performa tambahan. Untuk informasi selengkapnya tentang disk terkelola, lihat Gambaran umum Azure Managed Disks. Bagian berikut menguraikan pertimbangan performa hanya saat Anda menggunakan disk yang tidak dikelola. Sekali lagi, solusi penyimpanan default dan yang direkomendasikan adalah menggunakan disk terkelola.

Jika Anda membuat VM dengan disk yang tidak dikelola, pastikan Anda melampirkan disk dari akun penyimpanan yang berada di wilayah yang sama dengan VM Anda untuk memastikan kedekatan dan meminimalkan latensi jaringan. Setiap akun penyimpanan Standar memiliki maksimum 20k IOps dan kapasitas ukuran 500 TB. Batas ini berjumlah sekitar 40 disk yang digunakan secara intensif, termasuk disk OS dan disk data apa pun yang Anda buat. Untuk akun Penyimpanan Premium, tidak ada batas IOps Maksimum tetapi ada batas ukuran 32 TB.

Saat berhadapan dengan beban kerja IOps tinggi dan Anda telah memilih Penyimpanan Standar untuk disk Anda, Anda mungkin perlu membagi disk di beberapa akun penyimpanan untuk memastikan Anda belum mencapai batas 20.000 IOps untuk akun Penyimpanan Standar. VM Anda dapat berisi campuran disk dari berbagai akun penyimpanan dan jenis akun penyimpanan untuk mencapai konfigurasi optimal Anda.

Drive Sementara VM Anda

Secara default saat Anda membuat VM, Azure memberi Anda disk OS (/dev/sda) dan disk sementara (/dev/sdb). Semua disk tambahan yang Anda tambahkan muncul sebagai /dev/sdc, /dev/sdd, /dev/sde dan sebagainya. Semua data pada disk sementara Anda (/dev/sdb) tidak tahan lama, dan dapat hilang jika peristiwa tertentu seperti Pengubahan Ukuran VM, penyebaran ulang, atau pemeliharaan memaksa menghidupkan ulang VM Anda. Ukuran dan jenis disk sementara Anda terkait dengan ukuran VM yang Anda pilih pada waktu penyebaran. Semua VM ukuran premium (seri DS, G, dan DS_V2) memiliki drive sementara yang didukung oleh SSD lokal untuk memberikan performa tambahan hingga 48k IOPS.

Partisi Pertukaran Linux

Jika Azure VM Anda berasal dari gambar Ubuntu atau CoreOS, maka Anda dapat menggunakan CustomData untuk mengirim konfigurasi cloud ke cloud-init. Jika Anda mengunggah gambar Linux kustom yang menggunakan cloud-init, Anda juga mengonfigurasi partisi pertukaran menggunakan cloud-init.

Anda tidak dapat menggunakan file /etc/waagent.conf untuk mengelola pertukaran untuk semua gambar yang disediakan dan didukung oleh cloud-init. Untuk daftar lengkap gambar, lihat Menggunakan cloud-init.

Cara term mudah untuk mengelola pertukaran untuk gambar-gambar ini adalah dengan menyelesaikan langkah-langkah berikut:

  1. Di folder /var/lib/cloud/scripts/per-boot , buat file yang disebut create_swapfile.sh:

    $ sudo touch /var/lib/cloud/scripts/per-boot/create_swapfile.sh

  2. Tambahkan baris berikut ke file :

    $ 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
    

    Nota

    Anda dapat mengubah nilai sesuai dengan kebutuhan Anda dan berdasarkan ruang yang tersedia di disk sumber daya Anda, yang bervariasi berdasarkan ukuran VM yang digunakan.

  3. Buat file dapat dieksekusi:

    $ sudo chmod +x /var/lib/cloud/scripts/per-boot/create_swapfile.sh

  4. Untuk membuat swapfile, jalankan skrip tepat setelah langkah terakhir:

    $ sudo /var/lib/cloud/scripts/per-boot/./create_swapfile.sh

Untuk image tanpa dukungan cloud-init, image VM yang disebarkan dari Azure Marketplace memiliki Agen Linux VM yang terintegrasi dengan OS. Agen ini memungkinkan VM berinteraksi dengan berbagai layanan Azure. Dengan asumsi Anda telah menyebarkan gambar standar dari Marketplace Azure, Anda harus melakukan hal berikut untuk mengonfigurasi pengaturan file pertukaran Linux Anda dengan benar:

Temukan dan ubah dua entri dalam file /etc/waagent.conf . Mereka mengontrol keberadaan file pertukaran khusus dan ukuran file pertukaran. Parameter yang perlu Anda verifikasi adalah ResourceDisk.EnableSwap dan ResourceDisk.SwapSizeMB

Untuk mengaktifkan disk yang aktif dan file swap yang dipasang, pastikan parameter memiliki pengaturan berikut:

  • ResourceDisk.EnableSwap=Y
  • ResourceDisk.SwapSizeMB={ukuran dalam MB sesuai kebutuhan Anda}

Setelah membuat perubahan, Anda perlu menghidupkan ulang waagent atau menghidupkan ulang VM Linux Anda untuk mencerminkan perubahan tersebut. Anda tahu perubahan telah diimplementasikan dan file swap telah dibuat saat Anda menggunakan free perintah untuk melihat ruang kosong. Contoh berikut memiliki file swap 512MB yang dibuat sebagai hasil dari memodifikasi file waagent.conf :

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

Algoritma penjadwalan I/O untuk Penyimpanan Premium

Dengan kernel Linux 2.6.18, algoritma penjadwalan I/O default diubah dari Deadline ke CFQ (Algoritma antrean yang sepenuhnya adil). Untuk pola I/O akses acak, ada perbedaan performa yang dapat diabaikan antara CFQ dan Deadline. Untuk disk berbasis SSD di mana pola I/O disk sebagian besar berurutan, beralih kembali ke algoritma NOOP atau Tenggat Waktu dapat mencapai performa I/O yang lebih baik.

Menampilkan penjadwal I/O saat ini

Gunakan perintah berikut:

cat /sys/block/sda/queue/scheduler

Anda melihat output berikut, yang menunjukkan penjadwal saat ini.

noop [deadline] cfq

Mengganti algoritma penjadwalan I/O untuk perangkat saat ini (/dev/sda)

Gunakan perintah berikut:

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

Nota

Menerapkan pengaturan ini untuk /dev/sda saja tidak berguna. Atur pada semua disk data di mana I/O berurutan mendominasi pola I/O.

Anda akan melihat output berikut, menunjukkan bahwa grub.cfg telah berhasil dibangun kembali dan bahwa penjadwal default telah diperbarui ke NOOP.

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

Untuk keluarga distribusi Red Hat, Anda hanya memerlukan perintah berikut:

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

Ubuntu 18.04 dengan kernel yang dioptimalkan untuk Azure menggunakan penjadwal I/O multi-antrean. Dalam skenario itu, none adalah pilihan yang sesuai alih-alih noop. Untuk informasi selengkapnya, lihat Penjadwal I/O Ubuntu.

Menggunakan Software RAID untuk mencapai I/Ops yang lebih tinggi

Jika beban kerja Anda memerlukan lebih banyak IOps daripada satu disk yang dapat disediakan, Anda perlu menggunakan konfigurasi RAID perangkat lunak dari beberapa disk. Karena Azure sudah melakukan ketahanan disk pada lapisan fabric lokal, Anda mencapai tingkat performa tertinggi dari konfigurasi striping RAID-0. Provisikan dan buat disk di lingkungan Azure dan lampirkan ke VM Linux Anda sebelum mempartisi, memformat, dan memasang drive. Detail selengkapnya tentang mengonfigurasi penyiapan RAID perangkat lunak pada VM Linux Anda di azure dapat ditemukan di dokumen Mengonfigurasi RAID Perangkat Lunak di Linux .

Sebagai alternatif untuk konfigurasi RAID tradisional, Anda juga dapat memilih untuk menginstal Logical Volume Manager (LVM) untuk mengonfigurasi sejumlah disk fisik ke dalam satu volume penyimpanan logis bergaris. Dalam konfigurasi ini, baca dan tulis didistribusikan ke beberapa disk yang terkandung dalam grup volume (mirip dengan RAID0). Untuk alasan performa, kemungkinan Anda ingin menghapus volume logis Anda sehingga membaca dan menulis menggunakan semua disk data terlampir Anda. Detail selengkapnya tentang mengonfigurasi volume logis bergaris pada VM Linux Anda di Azure dapat ditemukan di dokumen Konfigurasikan LVM pada Linux VM di Azure .

Langkah Selanjutnya

Ingat, seperti semua diskusi pengoptimalan, Anda perlu melakukan pengujian sebelum dan sesudah setiap perubahan untuk mengukur dampak perubahan. Pengoptimalan adalah proses langkah demi langkah yang memiliki hasil yang berbeda di berbagai komputer di lingkungan Anda. Apa yang berfungsi untuk satu konfigurasi mungkin tidak berfungsi untuk orang lain.

Beberapa tautan yang berguna ke sumber daya tambahan: