vSphere Storage DRS Kullanımı
Daha önce ki bir yazımda vSphere’in yük dağıtımı için kullandığı bir özellik olarak DRS’den bahsetmiştim. DRS, fiziksel sunucular arasında VM’lerin yarattığı memory ve işlemci yüklerini homojen olarak dağıtabilmemizi sağlarken, VM’in performansını doğrudan etkileyen başka önemli parametreler olan IO latency ve Datastore içerisinde bulunan boş alanı dengeleyemez. Bunun için vSphere’in sDRS(Storage DRS) denilen başka bir özelliğini kullanmamız gereklidir.
sDRS’in aynen DRS’de olduğu gibi VM’lerin ve Datastore’ların yaptıkları IO ve kapasite değişimlerini düzenli olarak izler ve gerekli olduğu durumlarda VM’in vmdk disklerini daha uygun bir datastore’a taşır(storage vMotion).
sDRS’ı kullanabilmeniz için vSphere Enterprise veya üstü bir lisansa sahip olmanız, sunucuların vCenter tarafından yönetilmesi ve “datastore cluster” kurabiliyor olmamız gerekmektedir.Bunun yanında storage DRS; aşağıda ki yapıları desteklememektedir.
- ISO
- Template
- Linked Clone
- FT VM
Ek olarak bir datastore cluster içerisinde ki 32 adet datastore bulunabilir.
Storager DRS’in Yararları:
Eğer storage DRS kullanmazsak aşağıda ki işlemleri manüel olarak yapmamız gerekmektedir.
- DS’lerin latency değerlerini düzenli olarak gözlemleyip dengelemek
- DS’lerin boş alanlarını düzenli olarak gözlemleyip mümkün olduğunca dolulardan boş olanlara doğru VM’leri kaydırmak
- Özellikle HA çalışan servislerin VM’lerinin aynı datastore’a denk gelmediğinden emin olmak
sDRS bunların hepsini yüzde yüz çözmese de mümkün olduğunca bizim günlük operasyon yükümüzü oldukça azaltır ve sunduğu öneriler sayesinde hızlı aksiyon almamızı sağlar.
Storage DRS Nasıl Çalışır:
Aynen DRS’de olduğu gibi storage DRS’de yük dengelemek için iki farklı yöntem kullanır. Bunlardan biri VM ilk yaratılırken veya başka bir VM’den kopyalanırken DS cluster içerisinden uygun bir DS’e otomatik yerleştirmektir.
Öbür seçenek ise çalışır durumda ki VM’lerin datastore’lar üzerinde yaptıkları IO değeleri ve DS’ların güncel kapasite durumunu inceleyerek yükü dengelemektedir. Yük dengelerken tamamen bizim daha önceden belirttiğimiz eşik değerlerine göre hareket eder. Kararlar anlık değerlere göre değil belli bir süre boyunca toplanmış verilerin ortalama değerlerine göre belirlenir.
Storage DRS Nasıl Kullanılır:
Başlarken ilk önce vCenter’a giriş yapalım ve “Datastores and Datastore clusters” ekranına geçelim. Eğer mevcut bir datastore cluster’ımız varsa ona sağ tıklayarak “edit settings’e” girelim yoksa veri merkezi adınızın üzerine gelip sağ tıkladığınızda çıkan “new datastore cluster” seçeneği yardımıyla bir tane yaratabilirsiniz. Kurulum adımları esnasında sDRS ile ilgili seçenekleri karşınıza çıkacaktır. Ben bu yazımda mevcut bir datastore cluster üzerinden anlattım ama ilk kurulum esnasında da yapılan ayarlar aynıdır.
Karşınıza gelen ilk ekranda cluster’ın adını değiştirebilir veya “Turn on Storage DRS” seçeneğini seçerek sDRS’i aktifleştirebilirsiniz. Unutmayın sDRS’in etkin şekilde çalışabilmesi için belli bir süre veri toplaması gerekmektedir bu yüzden aktife eder etmez bir sonuç alamayacaksınız.
Eğer devam ederseniz bir aşağıda(veya bir sonraki adımda) “SDRS Automation” kısmını göreceksiniz. Bu aynen DRS’de olduğu gibi sDRS’in bir karar aldıktan sonra otomatik olarak kararları uygulamaya başlaması mı veya sadece size mevcut durumu dengelemek için yapılması gereken aksiyonları öneri olarak sunması mı gerektiğini belirler.
- Fully Automated: Bir karar alındıktan sonra otomatik olarak uygulanır.
- No Automation: Bir karar alır ama uygulamaz size bunu öneri olarak sunar.
“SDRS Runtime Rules” ekranındaysa Storage DRS’in hangi kurallara göre çalışacağını belirleriz. “IO Metrics Inclusion” seçeneğini seçtiğimiz zaman yük dengelemesi için sDRS sadece latency değerine değil aynı zamanda toplam IO değerini de göz önüne almaya başlar. Aynı zaman VM’i ilk yarattığımız zaman yaptığı önerilerde sadece datastore’ların boş alanını temel alırken bu seçim sayesinde artık size daha az yapan datastore’larıda önermeye başlayacaktır. Küçük bir not eklemek istiyorum eğer bu seçeneği aktive ettiğiniz bir datastore’u unmount etmeden önce mutlaka kapatın, aksi takdirde geri almanıza izin vermeyecektir.
“Storage DRS Thresholds” kısmındaysa sDRS’in hangi değerlerden sonra aksiyon alacağını seçiyoruz. Burada iki adet seçenek vardır.
- Utilized Space: Datastore içerisinde ki ne kadar alanın boş bırakılmaya çalışacağını belirliyor. Mesela 1000GB’lık bir datastore’un threshold’unu %80 yaparsak boş alan 200GB altına düştüğü durumda içerisinden bazı VM’leri taşıyacaktır.
- IO Latency: Datastore’un io latency değerinin kaç ms olması gerektiğini belirtiriz. Bu değerin üzerine çıkıldığında sDRS bir aksiyon alacaktır.
“Advanced Options’a” altındaysa daha çok storage DRS’in veri toplama aralığını ve tolerans ayalarını değiştirebilirsiniz
İlk seçeneğimizde bir VM’in mevcut datastore’undan başka datastore’a taşınabilmesi için iki datastore arasında ki IO latency ve/veya Utilized Space farkının yüzde kaç olduğuna bakıyor. Yukarda ki datastore örneğimi devam ettirirsem datastore’un boş alanı 195GB’a düştüğü zaman bir VM’i başka bir yere storage vMotion ile taşıması gerekiyor ama eğer clusterda ki diğer datastore’lar 200GB civarındaysa arada ki fark %5’den az olduğundan öneride bulunmayacaktır.
Bir altında ki “Check imbalances every:” seçeneği kaç saatte bir çalışacağını belirler. Bu süre boyunca sDRS çalışmaz ama veri toplar ve ilgili saat geldiğinde elinde ki verilerin ortalama değerlerine göre aksiyon alır. Son seçenek olan “IO imbalance threshold” seçeneğiyse datastorelar üzerinde yapılan IO’nun ne kadar homojen dağıtılacağıdır. Benim tavsiyem bu değeri çok agresif yapmamanızdır.
Bir sonraki seçeneğimizse “SDRS Scheduling” bu aslında oldukça önemli bir özellik. Eğer “Full Automation” seçtiyseniz gün ortasında VM’lerinizin sağa sola gitmesini istemezsiniz veya günün belli saatlerinde(yedeklemenin veya antivirüs taramasının olduğu gibi) daha farklı threshold’lar vermek isteyebilirsiniz. Mesela çalışma saatleri içerisinde Automation seviyesini Manuel yapıp sadece size önerilerde bulunmasını sağlarken mesai saatleri dışında otomatik olarak ve daha agresif bir şekilde davranmasını ayarlayabiliriz.
“Rules” ekranıysa aslında DRS’den hatırlayacağımız “Affinity/Anti-Affinity” kurallarının aynısıdır. Tek fark storage DRS için sadece anti-affinity kuralı tanımlayabilmemizdir. Normal şartlar altında sDRS mümkün olduğunca VM’lerin vmdk’larını aynı datastore üzerinde tutmaya özen gösterir ama bu her zaman istenen bir durum değildir. Mesela bir sunucunun data ve sistem disklerini beraber tutmak isterken yedeklerinin olduğu diskleri başka bir datastore’da tutmak isteyebiliriz veya aynı servise hizmet eden iki VM’i HA gerekçesiyle de ayrı yerlerde tutmak istenebilir.
- Vmdk anti-affinity: Seçtiğimiz VMDK’leri ayrı datastore’larda tutar
- VM anti-affinity: Seçtiğimiz VM’leri ayrı datastore’larda tutar
En son kısım olan “Virtual Machine Settings’e” gelirsek. Buradan VM bazında sDRS ayarlarını değiştirebiliriz. Automation seviyle oynayabileceğimiz gibi “Keep vmdks together” seçeneğini kapatarak(ön tanımlı olarak seçili gelir) VM’in her vmdk’inin başka datastore’lara dağıtılabilmesine de izin veririz. Benim tavsiyem mümkün olduğunca VM’lerin disklerini beraber taşımanızdır.
Yazımı bitirmeden önce bazı tavsiyelerde bulunmak istiyorum. Mutlaka SDRS Scheduling’i kullanınız bunun başlıca sebebi IO’nun çok yüksek olduğu gün ve saatlerde yoğun bir taşıma trafigi ciddi anlamda operasyona zarar verecektir. SDRS Runtime Rules içerisinde bulunana sDRS’in çalışma sıklığını çok düşürmenizi de önermem bunun sebebiyse kararlar bu süre içerisinde toplanan değerlerinki ortalamasına göre verilmektedir. Çok kısa süreli veri toplanmasından dolayı doğru kararların çıkma olasılığı daha düşüktür. Eğer depolama seviyesinde Auto-Tiering özelliği kullanıyorsanız “IO Metrics” özelliğini kullanmayınız bu ikisi aslında bir birine benzer işler yaparlar sadece yöntemleri farklıdır.sDRS sadece datastore seviyesinde ki işlemlere bakar ve VM’leri ona göre taşır eğer taşıdığı datastore VM’in bulunduğu hostu görmüyorsa sorun yaşatabilir ve en önemli tavsiyem “Fully Automated” seviyesinde çalıştırmadan uzunca bir süre Manuel olarak çalıştırıp verdiği uyarı ve önerileri inceleyiniz.