Bulut ve Sanallaştırma

Bloguma hoş geldiniz umarım benim yazarken keyif aldığım kadar sizde okurken alırsınız.  Burada başlıca bulut bilişim ve sanallaştırma üzerine tecrübelerimi paylaşacağım.

IOPS ve Throughput Nedir?

Hiçbir son kullanıcı ne kadar teknoloji harikası olursa olsun yavaş, sürekli çöken ve bir işlemlerin yarısında kapanan yazılımlarla çalışmak istemezler. Doğal olarak bir sistem veya proje planlarken performans bizim için önemli bir etkendir. Sunucu ve servislerde oluşan dar boğazları incelediğiniz zaman büyük bir kısmının yetersiz kaynak atamasından dolayı oluştuğunu görürsünüz, hal böyleyken sorunun çözümü kolay gibi gözükmektedir. Memory yetmiyorsa Ram artırımı işlemci yetmiyorsa CPU artırımına gidilir. Sanallaştırma sayesinde minimum kesintiyle hatta çoğu durumda kesintiye bile ihtiyacımız olmadan kaynakları değiştirebiliriz ama durum her zaman böyle olmayabilir. Özellikle disk performansında oluşan sorunların çözümü bu kadar kolay olmuyor. Bunun için mimariyi oluştururken ilk seferde üzerinde çalışacak servisleri ve yükü doğru tahmin etmeli ve buna göre sistemler hazırlamalıyız.

Birçok sistem yöneticisi bir servisi veya sistemi devreye alırken disk’le ilgili ihtiyaçlarını düşünürken sadece kapasite öngörüsünde bulunurlar. Doğal olarak orta ve uzun vadede yük artıkça dar boğazlar oluşmaya ve performans kaybı gözlemlenir. Bunun yegane sebebi sistemin ihtiyaç duyacağı toplam IOPS ve Throughput doğru öngörülememesi veya hiç hesaba katılmamasıdır.

Peki nedir bu değerler ve ne işe yararlar. IOPS(Input/output operations per second) adından da anlaşılacağı gibi bir diskin saniyede yapabileceği maksimum yazma veya okuma sayısıdır. Throughput is belli bir zaman aralığında yapılan işi temsil eder storage için konuşursak 1 saniyede kaç MB yazdığı veya okuyabildiği değerdir. Genelde insanlar IOPS’a odaklanır ve Throughput’u önemsemez veya aynı şey olduğunu düşünür. Durum maalesef böyle değil ve size iki farklı senaryoyla durumu anlatmak istiyorum. İlk senaryoda kullanıcıların arşiv olarak kullandıkları bir dosya sunucusunun throughput’unu hesaplarken ikinci senaryoda aynı diskler ile bir yoğun yazma oranına sahip bir log arşivininkini hesaplayacağız.

Öncelikle  Throughput hesaplama formülümüz tek disk için şudur.

MB/s = IOPS * <KB per IO> / 1024

Burada ki “KB per IO” disk üzerindeki block size’larıdır.Her iki örnek içinde 128KB olarak aldım.

İlk önce dosya sunucumuzu ele alalım. Bu sunucunun toplam iş yükünün %80’i okuma, %20’si yazma olsun ve güvenlik sebebiyle de RAID-5 yapalım. 4 adet 175IOPS’a sahip disk takalım.

Öncelikle toplam IOPS’u hesaplamamız gerekiyor.

Toplam IOPS = 4 * 175

Raid yaptığımız için Raid’den kaynaklı bir “IO penalty” bulunmaktadır. Bunun sebebi Raid 0 haricinde tüm Raid yapılarında verinin birden fazla diske yazılmasıdır. Yazının sonunda “raid penalty” tablosunu bulabilirsiniz.Raid 5 için bu değer “4”.

Fonksiyonal IOPS’u hesaplarsak

Fonksiyonal IOPS = ((Toplam IOPS *yazma yüzdesi)/(Raid penalty ))+(Toplam IOPS*okuma yüzdesi)

Dosya sunucusunun fonksiyonal IOPS ve Throughput’u
Yazma için 35 IOPS ve Throughput’u yaklaşık olarak 4,5MB/s
Okumak içinse 560 IOPS ve Throughput’u yaklaşık olarak 70MB/s

Logları tuttuğumuz sunucu Raid-6 ile kurulmuş olsun. Geri kalan tüm özellikleri bire bir aynı olduğunu varsayalım. Raid-6’nın penalty değeri 6’dır. Bu durumda,

Yazma için yaklaşık IOPS 94 ve Throughput’u yaklaşık olarak 11,75 MB/s
Okumak içinse yaklaşık IOPS 140 ve Throughput’u yaklaşık olarak 17,5 MB/s

Gördüğünüz üzere aynı diskler farklı raid yapıları ve okuma ve yazma oranlarıyla tamamen farklı sonuçlar vermektedir. Tasarımınızı yaparken mutlaka ihtiyacınızı iyicene analiz edip karar verin. Peki kullanıcı sayınızı ve her kullanıcının yaklaşık olarak yaratacağı yükü biliyorsunuz diyelim. Bu durumda

Gerekli Disk Sayısı = ((Read IOPS) + (Write IOPS*Raid Penalty))/ Disk IOPS

Formülünü kullanarak ihtiyacınız olan disk sayısını bulabilirsiniz. Gereken minimum disk sayısını bilmek performansın yanında kapasite planlaması yaparken de size yardımcı olacaktır.

Yazımı bitirmeden önce küçük bir tiyo vermek istiyorum : Diskin block size’ını değiştirerek throughput’da artış sağlayabilirsiniz ama bu deduption oranınızı ciddi anlamda etkileyecektir.

raidpenalties

Share on LinkedInTweet about this on TwitterShare on FacebookShare on StumbleUponDigg this

Maksimum Snapshot Sayısı

Snapshot’lar hakkında yazımı okuduysanız çok sayıda snapshot almanın performans üzerine etkisini okumuşsunuzdur. Bu sebepten dolayı bazı işgüzar veya bu konudan habersiz arkadaşların aşırı sayıda snapshot almanızı engellemek isteyebileceğinizi düşündüm ve bu yazıyı hazırladım.

Vmware’in ön tanımlı olarak snapshot sayısı 32’idir ama bu sayı isteğe bağlı olarak azaltılabilir veya çoğaltılabilir(neden?)

vSphere Client’ınızı kullanarak öncelikle vCenter veya host’unuza bağlanın.

Değişiklik yapmak istediğiniz Vm’in mutlaka kapalı durumda olması gerekmektedir bu sebepten dolayı kapalı duruma getiriniz.

Sağ tıklayıp edit settings->Options yaptığınız zaman aşağıda ki gibi bir ekranla karşılaşacaksınız.

makssnapshot-1

Bu ekran görüntüsünde göstermiş olduğum “Configuration Parameters’a” basarsanız. Vm’in vmx dosyasını düzenlemeniz için parametreler sıralanacaktır. Eğer gelen parametre listesinde neyin ne işe yaradığını bilmiyorsanız değerlerle oynamanızı tavsiye etmem. Listede snapshot.maxSnapshots = “x” şekilde bir satır varsa “x” yerine istediğiniz maksimum snapshot sayısını yazabilirsiniz. Eğer böyle bir satır yoksa “Add row’a” basarak ekleyebilirsiniz.

 

Share on LinkedInTweet about this on TwitterShare on FacebookShare on StumbleUponDigg this

Snapshot Bir Yedekleme Türü müdür?

Sanallaştırma, biz sistem yöneticilerinin hayatını kolaylaştıran bir çok yöntem ve aracıda beraberinde getirdi. Bu araçlardan biri olan snapshot ise tam bir hayat kurtarıcıdır. Düşünsenize bir fabrikanın erp sisteminde güncelleme yapmanız gerekiyor ve size verdikleri kesinti süresi maksimum 30 dakika, bu süre zarfında ilgili sunucuların güncellenmesi, gerekiyorsa yeniden başlatılması ve servislerin tekrardan çalışır duruma getirilmesi gerekmektedir. Bir çok şirket kritik servislerinde size düzenli olarak bir “maintaince window” veremeyebilir, bu durumda sisteme geçmeniz gereken güncellemelerin sayısı ve boyutu artar ve size verdikleri kısacık sürede ancak yüklemeleri yapar ve sunucuyu yeniden başlatırsınız. Eğer şans sizden yanaysa servisler sorunsuz olarak yeniden başlar ve tüm kullanıcılar hayatlarına kaldıkları yerden devam ederler sizde sıcak yatağınıza dönebilirsiniz. Peki ya servisler çalışmazsa? Sorunu çözmeniz tahminen saatler sürecektir veya en güncel yedekten dönemiz gerekir ki bu durumda da bir veri kaybınız olacaktır. Servisin saatlerce cevap vermemesinin yanında birde yaşadığınız stres ve prestij kaybını da eklerseniz sizin için hoş bir tecrübe olmayacağına emin olabilirsiniz.

İşte tam bu noktada snapshotlar devreye girmektedir. Eğer çalışma öncesi elinizde VM’in snapshot’ını almışsanız bir kriz durumunda çok hızlı bir şekilde (yaklaşık olarak 1-2 dakika) VM’i tekrar çalışma öncesi duruma döndürebilirsiniz. Belki yapmanız gereken işlemleri yapamamışızdır ama en azından servis kesintisine veya veri kaybına sebep olmamışsınızdır. Sizi uykusuz başka bir gece beklese de en azından huzurlusunuz.

Peki bu mucizevi snapshot nedir? Nasıl çalışır ve en önemlisi bu yazının konusu olarak snapshot bir backup yöntemi olarak ne kadar mantıklıdır?

Snapshot bir sanal sunucu diskinin t anında fotoğrafını çekip daha sonra disk üzerinde oluşan tüm değişiklerin bir başka dosyaya(delta file) yazılmasıdır. Bu konuyu biraz daha açmam gerekirse siz snapshot aldığınızda yaptığınız değişiklikler artık sanal hard disk’i temsil eden dosyaya(.vmdk) işlenmez bunun yerine değişikliklerin tutulduğu başka bir dosyaya yazılmaya başlar.Siz sanal sunucu üzerinde işlem yaptıkça Delta dosyası büyümeye başlar; Delta dosyalarının ulaşabileceği maksimum boyut orijinal disk boyutunun biraz üstündedir bunun sebebi teknik bir sınırlamadan  kaynaklı değildir.Delta blok seviyesinde değişiklikleri tuttuğu için siz orijinal disk üzerindeki tüm verileri değiştirirseniz oluşacak deltanın boyutu toplam değişiklik kadardır, disk üzerinde ki blokları kaç kere değiştirdiğinizin bir önemi yoktur önemli olan son durumudur. Snapshotların büyüme hızıysa tamamen göreceli bir kavramdır. Eğer snapshot’ını aldığınız disk üzerinde sürekli yazma işlemi gerçekleştiriliyorsa hızla büyüyecektir.

Eğer birden fazla snapshot alırsanız eski snapshotlar read-only olarak kalıcak ve değişiklikler son oluşturduğunuz delta file’a yazılacaktır. Eğer snapshotları silmek isterseniz tüm değişiklikleri orijinal diske işleyip read-only olan modu’nu tekrar yazılabilir hale getirilecektir.

Sanırım bu kadar teori yeter.Bunların anlatmamın sebebi snapshot’ı bir yedekleme çözümü olarak konumlandırmadan önce nasıl çalıştığını bilmenizin önemidir. Ben açıkçası snapshotların bir yedekleme çözümü olarak kullanılmasına karşıyım. Sadece ve sadece yukarıda bahsettiğim şekilde senaryolar için ideal bir çözümdür.

Peki neden? Öncelikle yukarıda anlattığım gibi snapshot aldığınız anda bir adet delta file oluşacaktır ve bu delta file büyümeye başlayacaktır. Genelde Tier 1 ve Tier 2 sunucuların snapshot’ını aldığımızı düşünürsek aslında gayet değerli olan SAS ve SSD disk alanlarımızı backup almak için kullanmaya başlıyoruz ki buda aslında bizim için istenmeyen bir maliyettir.  Aynı zamanda snapshot’ların kontrolsüz olarak büyümesi datastore’un hızla dolmasına ve daha ciddi sorunların oluşmasına sebep olabilir.

Vmware Delta file’ları başka bir datastore içerisinde saklamanıza izin verse de ben bu yöntemi ciddi performans kaybına sebep olacağı için önermiyorum. Son olarak snapshot almanın sanal diskin performasına negatif bir etkisi bulunmaktadır.  Ne zaman ESXI disk üzerinde ki bir disk bloguna erişmek istese önce orijinal vmdk üzerine daha sonrada değişikliklerin tutulduğu delta dosyasına bakmak zorunda kalır. IOPS değeri sabit kalsa bile artık verinin değişip değişmediğini kontrol etmesi gerekmektedir ve genel bir performans düşüşü hissedilir.

Bu sebeplerden dolayıdır ki Vmware snapshotların 72 saatten fazla tutulmaması(benim önerim önemli bir durum yoksa 24 saat idealdir)  ve  maksimum snapshot sayısı ön tanımlı olarak 32 olsa da performansa olan etkisinden dolayı 2 veya 3 adet snapshottan fazlasını almanızı önermez.

Tekrar ve tekrar üstüne basarak söylemek istiyorum snapshot hayat kurtarıcıdır ama operasyonal sebeplerin yanında günlük veya haftalık backup politikanızın bir parçası olmamalıdır.

Share on LinkedInTweet about this on TwitterShare on FacebookShare on StumbleUponDigg this