Optimalkan VM Linux Anda di Azure
Membuat mesin virtual Linux (VM) mudah dilakukan dari baris perintah atau dari portal. Tutorial ini menunjukkan kepada Anda cara memastikan Anda telah mengaturnya untuk mengoptimalkan kinerjanya di platform Microsoft Azure. Topik ini menggunakan VM Ubuntu Server, tetapi Anda juga dapat membuat mesin 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 langganan Azure Anda. Pastikan Anda menginstal Dan masuk ke langganan Azure Anda dengan login az sebelum 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 kinerja yang baik untuk beban kerja Anda. Anda ingin melampirkan satu atau beberapa disk ke VM Anda untuk mendapatkan penyimpanan yang persisten dan dioptimalkan untuk data Anda.
Menambahkan Disk untuk target Ukuran dan Performa
Berdasarkan ukuran VM, Anda dapat melampirkan hingga 16 disk tambahan pada A-Series, 32 disk pada D-Series dan 64 disk pada mesin G-Series - masing-masing berukuran hingga 32 TB. Anda menambahkan disk tambahan sesuai kebutuhan ruang dan persyaratan IOps Anda. Setiap disk memiliki target kinerja 500 iOps untuk Storage Standar dan hingga 20.000 iOps per disk untuk Premium Storage.
Untuk mencapai IOps tertinggi pada Premium Storage disk di mana pengaturan cache mereka telah diatur ke ReadOnly atau None, Anda harus menonaktifkan hambatan saat memasang sistem file di Linux. Anda tidak perlu hambatan karena menulis ke Premium Storage disk yang didukung tahan lama untuk pengaturan cache ini.
- Jika Anda menggunakan reiserFS, nonaktifkan penghalang menggunakan opsi
barrier=none
mount (Untuk mengaktifkan penghalang, gunakanbarrier=flush
) - Jika Anda menggunakan ext3/ext4, nonaktifkan penghalang menggunakan opsi
barrier=0
mount (Untuk mengaktifkan penghalang, gunakanbarrier=1
) - Jika Anda menggunakan XFS, nonaktifkan penghalang menggunakan opsi
nobarrier
mount (Untuk mengaktifkan penghalang, gunakan opsibarrier
)
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 untuk menyimpannya. Disk yang tidak dikelola memerlukan akun penyimpanan dan memiliki beberapa pertimbangan kinerja tambahan. Untuk informasi selengkapnya tentang disk terkelola, lihat Gambaran umum Azure Managed Disks . Bagian berikut menguraikan pertimbangan kinerja hanya ketika 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 iOps maksimum 20k dan kapasitas ukuran 500 TB. Batas ini bekerja untuk sekitar 40 disk yang banyak digunakan termasuk disk OS dan disk data apa pun yang Anda buat. Untuk akun Premium Storage, tidak ada batas IOps Maksimum tetapi ada batas ukuran 32 TB.
Saat berhadapan dengan beban kerja IOps yang tinggi dan Anda telah memilih Storage Standar untuk disk Anda, Anda mungkin perlu membagi disk di beberapa akun penyimpanan untuk memastikan Anda belum mencapai batas 20.000 IOps untuk akun Storage Standar. VM Anda dapat berisi campuran disk dari berbagai akun penyimpanan dan jenis akun penyimpanan untuk mencapai konfigurasi optimal Anda.
Kandar 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 Perubahan Ukuran VM, pemindahan, atau pemeliharaan memaksa restart 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) drive sementara didukung oleh SSD lokal untuk kinerja tambahan hingga 48k IOps.
Partisi Swap 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 swap menggunakan cloud-init.
Anda tidak dapat menggunakan file /etc/waagent.conf untuk mengelola swap untuk semua gambar yang disediakan dan didukung oleh cloud-init. Untuk daftar lengkap gambar, lihat Menggunakan cloud-init.
Cara termudah untuk mengelola swap untuk gambar-gambar ini adalah dengan menyelesaikan langkah-langkah berikut:
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
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
Catatan
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.
Buat file dapat dieksekusi:
$ sudo chmod + x /var/lib/cloud/scripts/per-boot/create_swapfile.sh
Untuk membuat swapfile, jalankan skrip tepat setelah langkah terakhir:
$ sudo /var/lib/cloud/scripts/per-boot/./create_swapfile.sh
Untuk gambar tanpa dukungan cloud-init, gambar VM yang disebarkan dari Marketplace Azure memiliki Agen VM Linux yang terintegrasi dengan OS. Agen ini memungkinkan VM untuk berinteraksi dengan berbagai layanan Azure. Dengan asumsi Anda telah menyebarkan gambar standar dari Marketplace Azure, Anda perlu melakukan hal berikut untuk mengonfigurasi pengaturan file swap Linux Anda dengan benar:
Temukan dan modifikasi dua entri dalam file /etc/waagent.conf . Mereka mengontrol keberadaan file swap khusus dan ukuran file swap. Parameter yang perlu Anda verifikasi adalah ResourceDisk.EnableSwap
dan ResourceDisk.SwapSizeMB
Untuk mengaktifkan disk yang diaktifkan dengan benar dan file swap yang dipasang, pastikan parameter memiliki pengaturan berikut:
- ResourceDisk.EnableSwap=Y
- ResourceDisk.SwapSizeMB={size in MB untuk memenuhi kebutuhan Anda}
Setelah Anda membuat perubahan, Anda perlu me-restart waagent atau me-restart VM Linux Anda untuk mencerminkan perubahan tersebut. Anda tahu perubahan telah diimplementasikan dan file swap telah dibuat ketika 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 Premium Storage
Dengan kernel Linux 2.6.18, algoritma penjadwalan I /O default diubah dari Deadline ke CFQ (Algoritma antrian yang benar-benar adil). Untuk pola I/O akses acak, ada perbedaan yang dapat diabaikan dalam perbedaan kinerja antara CFQ dan Deadline. Untuk disk berbasis SSD di mana pola I/O disk sebagian besar berurutan, beralih kembali ke noop atau algoritma Deadline dapat mencapai kinerja I/O yang lebih baik.
Lihat 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
Mengubah perangkat saat ini (/dev/sda) dari algoritma penjadwalan I/O
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
Catatan
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 perlu perintah berikut:
echo 'echo noop >/sys/block/sda/queue/scheduler' >> /etc/rc.local
Ubuntu 18.04 dengan kernel yang disetel Azure menggunakan penjadwal I/O multi-antrian. Dalam skenario itu, none
adalah pilihan yang tepat, bukan noop
. Untuk informasi selengkapnya, lihat Penjadwal Ubuntu I/O.
Menggunakan RAID Perangkat Lunak untuk mencapai I/Ops yang lebih tinggi
Jika beban kerja Anda memerlukan lebih banyak IOps daripada yang dapat disediakan oleh satu disk, Anda perlu menggunakan konfigurasi RAID perangkat lunak dari beberapa disk. Karena Azure sudah melakukan ketahanan disk pada lapisan kain lokal, Anda mencapai tingkat kinerja tertinggi dari konfigurasi striping RAID-0. Sediakan dan buat disk di lingkungan Azure dan lampirkan ke VM Linux Anda sebelum mempartisi, memformat, dan memasang drive. Detail lebih lanjut tentang mengonfigurasi pengaturan RAID perangkat lunak pada VM Linux Anda di azure dapat ditemukan di Configuring Software RAID pada dokumen Linux .
Sebagai alternatif dari konfigurasi RAID tradisional, Anda juga dapat memilih untuk menginstal Logical Volume Manager (LVM) untuk mengkonfigurasi sejumlah disk fisik menjadi satu volume penyimpanan logis bergaris. Dalam konfigurasi ini, pembacaan dan penulisan didistribusikan ke beberapa disk yang terdapat dalam grup volume (mirip dengan RAID0). Untuk alasan kinerja, kemungkinan Anda akan ingin melangskan 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 Configure LVM pada VM Linux di dokumen Azure .
Langkah berikutnya
Ingat, seperti halnya semua diskusi pengoptimalan, Anda perlu melakukan tes sebelum dan sesudah setiap perubahan untuk mengukur dampak perubahan. Optimasi adalah proses langkah demi langkah yang memiliki hasil berbeda di berbagai mesin di lingkungan Anda. Apa yang berfungsi untuk satu konfigurasi mungkin tidak berfungsi untuk orang lain.
Beberapa tautan berguna ke sumber daya tambahan: