Vmware ESX üzerinde Database Sanallaştırma (SQL, Oracle)

Veritabanı sunucularında özellikle yazılımcıların yönlendirmesi nedeniyle sanallaştırmaya karşı olumsuz bir görüş vardır. Hatta yazılımcının yazdığı yazılımın veritabanı ve uygulama geliştirme platformu sanallaştırma ile ilgili uyumluluk makaleleri yazsa bile yazılımcı kişi/firma sanallaştırma önermiyoruz diyebilecek kadar ileri gidebiliyor.

Fiziksel sunucu tabiki sanallaştırılmış sunucudan biraz daha hızlı ama bu fark küçük ve orta ölçekli işletmeler için tolere edilebilir. O yüzden sanallaştırmanın getirdiği diğer avantajlar kesinlikle performans farkından daha önemli. Tabi sanallaştırılmış ortamlarda da bu yapıyı düzgün kullanabilmek için yapılması gereken birkaç ipucu var. Oracle ve MsSQL ile ilgili makaleleri derleyerek size yapılması gereken adımları açıklamak istiyorum. Altta belirtilen ayarlar her iki veritabanı için de geçerlidir. Sadece yapılması gereken adımları ufak açıklamalarla belirttim. Detaylı açıklama isteyenler alttaki linklerden indirip inceleyebilirler, kesinlikle öneririm.

SQL: http://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/solutions/sql-server-on-vmware-best-practices-guide.pdf
Oracle: http://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/solutions/vmware-oracle-databases-on-vmware-best-practices-guide.pdf

BIOS UEFI Ayarları

-İşlemcilerin tüm C durumları kapatılmalı (C1E Hata durumu dahil): C-State işlemcinin güç tasarrufu yaptığı durumdur. İşlemci kendini beklemeye aldığı için bu bekleme durumundan dönerken gecikmeye yol açar. Linkte hangi C durumunun hangi işe yaradığı açıklanmış. Hepsinin kapatılması kesinlikle öneriliyor.
-Mümkün olan en son firmware seviyesi kullanılmalı.
-Turbo Boost etkinleştirilmeli.
-Hyper-Threading etkinleştirilmeli.
-Gelişmiş CPU ayarları etkinleştirilmeli (VT-x/AMD-V, EPT, RVI)
-Sunucunun güç ayarları İşletim sistemi kontrol edecek şekilde ayarlanmalı (OS Controlled)

ESX ve VM Güç Ayarları
-ESX Ayarlarındaki güç seçeneği High Performance olarak ayarlanmalı
-DB sanal makinesinin Windows/Linux güç ayarları High Performance olarak ayarlanmalı.

VM İşlemci Ayarları
-Pek çok kişi sanal makinaya atadığı vCPU ve vCore arasındaki farkı bilmiyor. Örneğin SQL Server 2016 Standart Edition maksimum 4 vCPU ve maksimum 24 vCore adresleyebilir.

Yani sanal makineye 6 vCPU, 4 vCore atadığınızda 24 core atadığınızı düşünüyorsunuz ama SQL 4 vCPU üzerindeki 4 çekirdeği çarparak 16 core’u işleyebiliyor. O yüzden bu kural çok önemli.

-Bunun haricinde vNUMA denilen hangi işlemci çekirdeğine hangi iş yükünün gideceğini belirleyen bir kriter de mevcut. Vsphere 6.5 ve sonrasını kullanıyorsanız bu konuda hiçbir şey yapmanıza gerek yok kendisi otomatik en iyisi neyse hesaplayıp onu uyguluyor. ESX 6.5’den öncesini kullanıyorsanız VM’lere CPU atarken alttaki şekilde yapmanız gerekli.

ESX host’taki fiziksel işlemci sayısı: 2
ESX host’taki fiziksel işlemcinin core sayısı: 12
DB sanal makinama verilmesi istenen core sayısı: 16
DB sanal makinam da girilmesi gereken CPU ayarı: 2 vCPU, 8 vCore.

Sanal makineye atayacağım core sayısı fiziksel core sayısından fazla olamaz! Fiziksel core sayısından fazla vermek istiyorsam vCPU çarpanını arttırmam ve core sayısını düşürmem gerekli. Eğer DB sunucumuza 12 core’luk bir kaynak atamak isteseydim 1 vCPU, 12 vCore vermem gerekiyordu.

CPU HotAdd/Plug özelliği devre dışı bırakılmalı: vNUMA’yı devre dışı bırakması nedeniyle işlemciye gidecek talepler düzgün işlenemediği için performans kaybı yaşatıyor. O yüzden bu özelliğin kesinlikle kapatılması isteniyor.

Sanal sunucuların işlemci istatistiklerinde de kaale alacağımız yer ESX’in göstergeleri olacak. Yapılan testlerde sanal sunucunun içinden %15 CPU kullandığını görsenize bile ESX bu değeri %25 olarak gösterebiliyor. Çünkü VM işlemciye veri gönderdiği anda diğer tüm sanal sunucuların performansını düşürüyor. Dolayısıyla ESX istatistikleri diğer sanal sunuculardan DB sanal sunucusuna kaymış işlemci gücünü de içerdiği için doğru veri ancak ESX üzerinden okunabiliyor.

VM Memory Ayarları
-Reserve all guest memory (All locked) işaretlenmeli
-Memory HotAdd tam olarak istenmese de çok iyi analiz edilen yapılarda etkileştirilebilir.

Sanal makinenin kullandığı rami ESX istatistiklerinden incelerken Active Memory istatistiği çok yanıltıcı olabiliyor. Database sunucularının ram erişimi ve cache’lemesi farklı olduğu için Active Memory istatistiği sanal sunucunun gerçekte ihtiyacı olduğu ram’i göstermiyor. Dolayısıyla DB sunucunuz ile ilgili performans analizi yapılacaksa bunu ESX yerine işletim sistemi içerisinden yapmak gerekli. 16 GB ram verilen sanal sunucuda Active Memory 2 GB gösterdiği halde veritabanınıza ram yetmiyor olabilir.

VM Depolama Ayarları
Oluşturulan VirtualDisk’ler Thick Provision Eager Zeroed ile oluşturulmalı. Thin Provision ve Lazy Zeroed’da ilk veri yazılmaya çalışıldığında storage üzerindeki alan talep edildiği için ufak bir yük biniyor. Eager Zeroed ile bu alan en baştan istendiği için bu yük binmiyor.

Sanal makine üzerinde OS, DB, LOG ve Backup Diski olmak üzere minimum 4 virtual disk oluşturulmalı ve bu 4 sanal disk farklı SCSI Controller’lar üzerinde çalışmalı. OS diski LSI Controller üzerinde çalıştırılabilir fakat diğer tüm disklerin Vmware Paravirtual SCSI Adapter üzerinde çalışması gerekiyor.

Paravirtual SCSI Adapter QueueDepth ayarı regedit’ten Windows Server maksimumu  olan 254 olarak ayarlanmalı. https://kb.vmware.com/s/article/2053145

REG ADD HKLM\SYSTEM\CurrentControlSet\services\pvscsi\Parameters\Device /v DriverParameter /t REG_SZ /d “RequestRingPages=32,MaxQueueDepth=254”

Depolama alanı olarak Raw Device Mapping ile storage üzerinden oluşturulan alanın direkt olarak sanal makineye map edildiği RDM diskler açıkçası eskisi kadar önerilmiyor. Çünkü bu konuda yapılan IO testlerinde Sequential 4k okuma testi haricinde arada nerdeyse hiçbir fark yok. Sequential 4k Okuma testinde de

RDM: 38.000 IOPS
VMFS: 35.000 IOPS

değeri sağlamış. %8’lik bir kayıp söz konusu. Bu testi 8k, 16k ile yaptıklarında neredeyse hiç fark yok.

Network Ayarları
VMXNET3 ayarı olan Receive Side Scaling etkinleştirilmeli
netsh interface tcp set global rss=enabled
Windows VMXNET adaptör ayarlarından enabled olarak seçilmeli.

Dökümanlarda NSX, VSAN, Virtual Volumes konularında da uygulanması gereken detaylardan bahsedilmiş fakat ben çok göz önünde olan ve kesinlikle her yerde uygulanması gereken net ayarlara dikkat çekmek istedim. Bu detayları uygulamak  her veritabanı sunucusu için kritik.

Vmware ESX üzerinde Database Sanallaştırma (SQL, Oracle)” üzerine 3 yorum

  1. Geri bildirim: Sanal veritabanı fiziksele göre yavaş mı çalışır? | Sanallaştırma | İş Sürekliliği | Veri Koruma Yöntemleri

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.