Ceph SSD/NVME Disk Seçimi
Ceph SSD/NVME Disk Seçimi
Dağıtık mimaride çalışan Ceph depolama sisteminin en karakteristik özelliği, yüksek performanslı ve genelde SSD veya NVME tabanlı journal diskler ile depolama kümesine yazılan veriyi sıralı (sequential) hale getirmesi, böylece mekanik disklere yazma ve bu disklerden okuma hızını arttırmasıdır. Mekanik disklerdeki sorun, verinin diske yazılırken rastgele farklı bölgelere yayılması ve bunu sağlamak için okuma/yazma kafası denilen mekanizmanın ileri/geri hareket etmesinden kaynaklanan gecikmenin oldukça fazla olmasıdır. Depolama dünyasında bu problem SSD disklerin üretilmesi ve NAND flash yongaların kullanılması ile aşılmıştır. SSD disklerde mekanik bileşen bulunmaması gecikmelerin çok düşük seviyelere indirilmesine ve disk performansının ciddi oranda artmasına imkan vermektedir. Özellikle rastgele yazma hızları mekanik disklere oranla çok yüksektir. SSD disklerde veri yazılacak adrese elektriksel olarak doğrudan gönderilir. Mekanik disklerdeki gibi motor ve okuma/yazma kafası olmadığından SSD diskler oldukça sessiz çalışırlar, fazla ısınmazlar ve daha az enerji tüketirler. Doğal olarak bu avantajlar ile birlikte fiyatları da mekanik disklere göre daha yüksektir. Burada bahsi geçen bir çok avantajdan ötürü SSD diskler her geçen gün mekanik disklerin yerini almakta ve hızla yaygınlaşmaktadır.
Depolama Mekanizması Seçimi
Ceph uzun zamandır “filestore” adı verilen ve verinin öncelikli “journal” denilen ve daha hızlı disklere yazılarak sıralı hale gelmesi felsefesine dayanan depolama mekanizmasını kullanmaktadır. Bu mekanizmada veriler önce journal disklere yazıldığı için yazma işlemi iki defa yapılmaktadır. Luminous sürümü ile birlikte duyurulan “bluestore” mekanizmasında ise tasarım tamamen değişmiş ve aradaki XFS dosya sistemi aradan çıkartırılarak verinin doğrudan diske erişmesi sağlanmıştır. Alt katmanda BlueFS adı verilen dosya sistemi benzeri bir adaptör ve RocksDB adı verilen metadanın tutulduğu bir veritabanı bulunmaktadır. Bluestore ile ilgili detaylı bilgi için daha önce yayınlanan yazıya göz atabilirsiniz.
Her ne kadar daha yeni ve daha verimli bir teknoloji olsa da, yukarıda görüleceği üzere bluestore bu yazının hazırlanma tarihi itibariyle henüz Ceph’i bünyesinde barındıran Redhat tarafından üretim (production) ortamlarında kullanılacak seviyede kabul edilmemektedir. Topluluk sürümünde varsayılan olarak bluestore geliyor olsa da, buradaki amaç topluluk içerisinde kullanılması ve ortaya çıkabilecek hataların ayıklanarak daha kararlı hale gelmesidir. Tüm geliştirmeler ve yeni özellikler bluestore tarafına eklendiği için nihayetinde en bluestore’a geçiş yapılacağı açıktır. Ancak bu geçiş için doğru zaman beklenmeli, aksi halde ortaya çıkabilecek hatalarda sistemin etkilenebileceği göz ardı edilmemelidir. Bu yazıda seçim kriterleri ağırlıklı olarak filestore kullanılması durumu için ele alınacak, ancak ilerleyen zamanlarda bluestore’a geçişte nelere dikkat edilmesi gerektiğine ayrıca değinilecektir.
Disk Seçimini Etkileyen Diğer Faktörler
Daha önce bahsedildiği gibi Ceph, journal denilen daha yüksek performansa sahip diskler ile kümeye yapılan yazma ve okuma işlemlerini daha verimli hale getirmekte, kullandığı eşsiz CRUSH algoritması ve dağıtık mimarisi sayesinde büyük ölçeklerde yüksek performanslara çıkabilmektedir. Ceph için SSD veya NVME disk seçebilmek için öncelikle çalışan sistemin gereksinimleri, kümedeki OSD sunucu sayısı, OSD sayısı, sistemin kapasitesi, ağ altyapısı gibi bazı özellikleri bilmek ve uygun diski buna göre belirlemek gerekmektedir.
Her journal disk belli bir mekanik disk grubunun önünde çalışarak bu disklere yapılan I/O işlemlerinde kullanılmaktadır. Bununla birlikte herhangi bir OSD sunucuda var olan disk sayısına göre bir ya da daha fazla journal disk kullanmak gerekebilir. Aynı zamanda istemcilerden gelecek veri miktarında ağ bağlantısının kapasitesi de etkili olacaktır. Örneğin istemcilerden gelen isteklerin alındığı ağ adaptörü gigabit hızında çalışıyorsa alabileceği maksimum veri miktarı ağın bant genişliği ile sınırlıdır ve OSD sunucu üzerindeki disk sayısı buna göre belirlenmelidir. Standart bir mekanik diskin (NL-SAS veya SATA 7200 rpm) teoride plakanın en dıştaki sektörlerine yazarken maksimum yazma hızı 100-120 MB/s, yine I/O miktarı da 100 IOPS civarındadır. Bu durum göz önüne alındığında 1 gigabitlik bir ağ bağlantısı yaklaşık 125 MB/s hıza karşılık geldiğinden tam kapasite kullanımda sadece bir mekanik diski sature olmadan destekleyebilmektedir. Mekanik disklerdeki plakalarda içeri doğru yazıldıkça yazma hızı düşse bile ağın kapasitesini belirlerken disklerin tam performans ile çalışması durumu göz önüne alınması gerekir. Bir OSD sunucuya 10-12 adet mekanik disk takıp ağ bağlantısı gigabit hızında çalışırsa mekanik diskler hiç bir zaman kapasitelerinde kullanılmayacaktır. Bu nedenle disk sayısı ve ağ bağlantısı seçimi birbirine bağlı yapılmalıdır.
Ceph Journal Disk Seçimi
Ceph için journal disk olarak SSD kullanılması gerektiği belirtilmiş olmasına rağmen herhangi bir SSD diskin istenilen sonucu vermeyeceği bilinmektedir. SSD diskler arasında üretim kriterleri ve performans açısından birbiriyle kıyaslanamayacak kadar önemli farklar bulunmaktadır. Journal disk, Ceph kümesinin çalışmasındaki en kritik bileşenlerden olup seçiminde dikkat edilmesi gereken dört çok önemli teknik parametre bulunmaktadır. Journal disk sisteme yazma aşamasında önemli role sahip olduğu için diskin desteklediği yazma performansı (throughput ve IOPS), yazma gecikme değeri (latency), diskin kapasitesi ve yazma ömrü (endurance) en önemli olanlarıdır. Bununla birlikte seçilecek arayüz tipi (SAS, NVMe gibi) ve form factor gibi kriterler de atlanmamalıdır. NVMe disklerin daha yüksek performanslara çıkabildikleri bilinmekle birlikte SAS ile bağlanan ve PCI-e ile bağlanan çeşitleri mevcuttur. Çalışan sunucu üzerindeki boş olan yuvalar göz önüne alınarak arayüz seçimi yapılmalıdır.
En kritik teknik veriler olarak belirtilen rastgele yazma performansı (throughput ve IOPS cinsinden), disk kapasitesi ve disk yazma ömrü (endurance) ayrı ayrı açıklanarak örnekler ile aşağıda detaylandırılmıştır.
Rastgele Yazma Hızı (Throughput)
Diskin genellikle daha büyük blok büyüklüklerinde (örneğin 1 MB) rastgele yazma kapasitesini ifade eder. İki diski birbiriyle karşılaştırmak için aynı blok büyüklüklerindeki performansları ele alınmalıdır. Bazı üreticiler teknik verileri yayınlarken standarda uyarken bir kısmı daha büyük blok büyüklüğü için performans değeri yayınlamakta, bu durum diskleri karşılaştırırken kafa karıştırmaktadır.
Sistemde kullanılacak diskin sahip olması gereken throughput cinsinden yazma hızını belirlerken diskin kullanılacağı sunucudaki mekanik disk sayısı ve bu disklerden kaç tanesine karşılık bu diskin kullanılacağı bilinmelidir. Teoride mekanik (SATA veya NL-SAS 7200 rpm) bir diskin en yüksek rastgele yazma hızı 120 MB/s seviyelerindedir. Örneğin sunucu üzerinde 10 adet mekanik disk bulunuyorsa bu disklerin tam kullanımda ulaşabileceği maksimum hız toplamda 10 x 120 = 1200 MB/s civarında olacaktır. Eğer tüm disklerin önüne tek bir journal disk konulacaksa bu diskin minimum 1200 MB/s rastgele yazma hızına, eğer iki adet journal kullanılacaksa (10/2) x 120 = 600 MB/s rastgele yazma hızına sahip olması gerekmektedir. Eğer iki adet journal disk kullanılacaksa, Ceph kurulumu sırasında mekanik disklerden yarısının bir journal diske, diğer yarısının ise ikinci journal diske bağlanması gerekmektedir.
Rastgele Yazma I/O Kapasitesi (IOPS)
Diskin genellikle küçük blok büyüklüklerinde (örneğin 4 kB) rastgele yazma sırasındaki yapabileceği I/O işlemi miktarını ifade eder. Benzer şekilde burada da diskleri karşılaştırırken aynı blok büyüklüklerindeki performans olmasına dikkat edilmelidir. Sıralı yazma ile rastgele yazma performansları karıştırılmamalıdır. Bazı üreticiler bu değerleri 512 Byte blok büyüklüğü için vermekte, bu da karışıklığa sebep olmaktadır.Üretici tarafından teknik değerlerin yayınlandığı disk dokümanında belirtilen performans değerinin hangi blok büyüklüğünde elde edildiği mutlaka dipnot olarak belirtilmektedir.
Sistem için gerekli rastgele I/O yazma kapasitesini belirlerken benzer şekilde sunucu üzerinde bulunan mekanik disk sayısına ve kullanılacak diskin kaç adet mekanik diske karşılık kullanılacağına bakılması gerekir. Standart mekanik diskler (SATA veya NL-SAS) yazma sırasında optimum durumda en fazla 100 IOPS civarında performansa ulaşabilmektedir. Buna göre eğer 10 adet mekanik disk kullanılan bir sunucuda toplamda yaklaşık 1000 IOPS yazma performansı ihtiyacı ortaya çıkacaktır. Eğer sunucuda bir adet journal disk varsa minimum 1000 IOPS, iki adet journal disk varsa minimum 500 IOPS yazma değerine sahip olmalıdır.
Yazma Gecikme Değeri
Her SSD/NVMe diskin yazma ve okuma için ayrı ayrı belirtilen ve işlemin diskte gerçekleşmesi sırasında geçen süreyi ifade eden gecikme değerleri bulunmaktadır. Yazma gecikme değeri, diske bir yazma işleminin gerçekleşmesi sırasında geçen zamanı ifade eder ve genelde mikro saniyeler (µs) cinsinden ifade edilir. Seçilecek diskin gecikmesi ne kadar düşük olursa sistem performansı o derece yüksek olacaktır.
Disk Kapasitesi
Sistemde kullanılacak diskin kapasitesini doğrudan belirleyen iki önemli faktör vardır. Bunlar bu journal diske kaç adet mekanik disk bağlanacağı ve Ceph konfigürasyon da yer alan “journal size” parametresidir.
Diske kaç adet mekanik disk bağlanacağı, sunucuda bulunan mekanik disk sayısına ve journal disk sayısına göre belirlenir. Mekanik diskler journal disklere kapasiteleri ile orantılı olarak dağıtılır.
İkinci faktör olan “journal size” parametresi ise her mekanik diske journal üzerinde ne kadar alan ayrılacağını belirler. “journal size” ise aşağıdaki formül ile hesaplanır:
1 |
journal size = (2 * (expected bandwidth throughput * filestore max sync interval)) |
Burada bahsi geçen “expected bandwidth throughput” parametresi, ağ üzerinden istemcilerden gelebilecek maksimum veri miktarını belirtmektedir. Bu değer ağ kapasitesine göre (örneğin 10 GbE veya 40 GbE gibi) değişiklik göstermektedir. İkinci parametre olan “filestore max sync interval” ise istemcilerden gelen verilerin journal diskten hangi sıklıkla mekanik disklere yazılacağını belirler. Daha önce bahsedildiği üzere journal disk istemcilerden gelen rastgele yazma verisini sıralı hale getirerek mekanik disklere yazar. Buradaki zaman aralığı ne kadar süre ile journal diskte cache’lenerek mekanik disklere yazılacağını belirtir. Bu değerler mevcut altyapıya göre hesap edilerek ortaya çıkan “journal size” Ceph konfigürasyonuna eklenir. Böylece her mekanik disk için bu büyüklükte bir bölüm (partition) açılarak ilgili mekanik disk buraya bağlanır. Örneğin 10 GbE bir ağda verilerin 10 saniyede bir mekanik disklere yazılması istendiğinde “journal size” hesabı aşağıdaki gibi olacaktır.
1 |
journal size = 2 x (1.25 GB/s) x 10s = 25 GB |
Bu durumda her mekanik diske 25 GB’lık bir alan gerekmektedir. Örneğin sunucuda toplam 10 adet mekanik disk varsa ve bir journal kullanılıyorsa toplamda 10 x 25 = 250 GB büyüklüğünde bir disk seçilmelidir. Ancak dikkat edilmesi gereken başka bir husus, istenilen disk yazma ömrü (endurance) değerini sağlamak için bu kapasite daha yüksek seçilebilir. Örneğin 1 DWPD değerindeki bir diski 3 DWPD gibi kullanmak istiyorsanız kapasiteyi 3 katı fazla seçerek (buradaki örnekte 750 GB) istenilen değerler yakalanabilir.
Disk kapasitesini belirleyen bir diğer faktör, “bluestore” kullanılması halinde ortaya çıkmaktadır. Bu durum ilgili başlıkta ilerleyen bölümlerde ele alınmıştır.
Yazma Ömrü (Endurance)
Flash tabanlı disklere özgü bir üretim parametresi olan yazma ömrü genellikle DWPD (drive write per day) birimi ile ifade edilir. Mekanik olmayan disklerde kullanılan flash yongalarda tüm belleklerin belli sayıda yazma ömrü bulunmaktadır. Örneğin bir milyar adet yazma ömrü olan bir disk, bu sayıya ulaştıktan sonra kullanılamaz hale gelecek ve değiştirilmesi gerekecektir.
Yazma ömrü parametresi, genellikle bir diskin tüm kapasitesini dolduracak büyüklükte yazma işleminin 5 yıl bounca günde kaç kez tekrarlanacağını ifade eden DWPD (drive write per day) ile ifade edilir. Burada tüm üreticiler bu değeri 5 yıl için ifade eder ve bu değer sabittir. Daha anlaşılır olması açısından, örneğin 300 GB büyüklüğünde 1 DWPD değerine sahip bir diskin yazma ömrü bu diske her gün toplamda tam kapasite yani 300 GB veri yazılması halinde 5 yıl süresince kullanılabilir anlamına gelmektedir. Eğer diske yazılan günlük veri 300 yerine 600 GB olursa diskin ömrü 2,5 yıla düşecektir. Benzer şekilde günlük 100 GB toplam veri yazılırsa aynı diskin kullanım ömrü 15 yıla çıkacaktır. Başka bir açıdan bakıldığında DWPD değeri 5 olan bir disk, tüm kapasite büyüklüğünde günde 5 kez yazma işlemi yapıldığında ömrü 5 yılda dolması gereken disktir. Disk büyüklüğünde yazma işlemi günde 5 yerine 3 kez gerçekleşirse aynı diskin ömrü 5 x 5 /3 = 8.33 yıl olacaktır.
Günümüzde genellikle 0.3, 1, 3, 5, 10, 15 ve 25 DWPD değerlerine sahip diskler üretilmektedir. Düşük DWPD değerine sahip diskler genellikle okuma ağırlıklı (read intensive), orta büyüklükteki DWPD değerlerine sahip olan diskler karma kullanım (mixed use) ve nispeten büyük DWPD değerine sahip diskler yazma ağırlıklı (write intensive) olarak sınıfılandırılmakta ve üreticiler tarafında farklı kategorilerde satışa sunulmaktadır. Ceph üzerinde kullanılan journal diskler sürekli ağırlıklı yazma işlemi yapacağı için yüksek DWPD değerine sahip “high endurance” veya “write intensive” diye nitelendirilen disklerden seçmek uygun olacaktır.
Sistemde kullanılacak diskin yazma ömrünü belirleyebilmek açısından sisteme yapılacak günlük yazma miktarını belirlemek ve disk kapasitesine göre bu değeri hesaplamak gerekecektir. Bir önceki başlıkta incelenen disk kapasitesi değeri ile yazma ömrü aslında birbirine bağlı değerlerdir. Örnek vermek gerekirse, 500 GB kapasite ihtiyacı olan bir sistemde yüksek yazma ömrüne, örneğin 15 DWPD değerine sahip disk bulunamaması halinde 1.5 TB kapasiteli 5 DWPD değerine sahip olan disk benzer amaca hizmet edecektir. Journal disklerde kullanılan bölümler mantıksal olarak sınırlandırıldığı için 500 GB kapasite gereken bir sistemde 1.5 TB kapasiteli bir diskin tam yazılma süresi üç katına çıkacaktır. Böylece bu disklerin kullanım ömrü benzer sürede sonlanacaktır.
Bluestore için Öneriler
Buraya kadar ele alınan konularda disk seçimi “filestore” kullanıldığı durumlar için ele alınmıştır. Ancak her ne kadar henüz resmi olarak üretime hazır olarak ilan edilmese de gerek yeni bir teknoloji olması, gerekse günümüz ihtiyaçlarına göre bir çok ekstra özellik ve performans artışı sağlaması sebebiyle daha önce belirtildiği üzere “bluestore” mekanizmasına geçmek kaçınılmaz olacaktır. Bu nedenle disk seçiminde bluestore kullanılması durumunda da bazı kriterlere dikkat edilmesi faydalı olacaktır.
Bluestore ilgili yazıda detaylıca anlatıldığı üzere, bluestore main device, DB device ve WAL device olmak üzere 3 ayrı disk tipi kullanabilmektedir. Main device adından anlaşılabileceği gibi mekanik diskler için tanımlanmış disk tipidir. DB device ise daha hızlı çalışan SSD/NVMe tipindeki disklerdir. WAL device ise genelde daha küçük boyutlu ancak mümkünse DB disklerden daha hızlı çalışması tercih edilen disklerdir. Eğer farklı tipte disk seçeneği yoksa DB device ve WAL device aynı disk olarak kullanılabilir.
Bluestore kullanımında önerilen yöntem, hızlı olan SSD/NVMe diskler üzerinde her mekanik disk için olabildiğince büyük bir alan ayırarak bunu RocksDB (DB device) kullanmaktır. Eğer daha hızlı bir disk seçeneği yoksa WAL device olarak da aynı SSD/NVMe disk kullanılır. Bu durumda WAL device için ayrı bir partition açmaya gerek kalmaz, Ceph bunu Bluestore ile kendisi yönetir.
Ceph konfigürasyonunda aksi belirtilmediği sürece DB device için Ceph, varsayılan olarak mekanik disk büyüklüğünün %1’i büyüklüğünde bir alan açarak ilgili disk ile ilişkilendirir. Örneğin 8 TB’lık bir NL-SAS disk için DB device olarak kullanılmak üzere 80 GB’lık bir bölüm açılarak ilgili diske bağlanır. Ancak yapılan testler ve “best practice” uygulamalarında mekanik disk büyüklüğünün %4’ü büyüklüğünde bölüm oluşturulması önerilmektedir. Dolayısıyla SSD/NVMe disk seçiminde sunucuda bulunan mekanik disk sayısının yanı sıra disk büyüklükleri de göz önüne alınmalıdır.
SSD/NVMe Disk Performans Ölçümü
Disk seçiminde üretici tarafından sağlanan dokümanlardan faydalanabileceğiniz gibi bu değerleri gerçek ortamda test etmek veya dokümanları elde edemediğiniz durumda disk performanslarını belirlemek mümkündür. Bu yazıyı daha fazla uzatmamak amacıyla bu konu farklı bir yazıda ele alınacaktır.
Dr. Hüseyin Çotuk, 15 yılı aşkın süredir IT alanında farklı kademelerde birçok görevde bulunmuş kıdemli bir bilişim uzmanıdır. Üniversite, kamu ve özel sektörde Ar-Ge mühendisliği, yazılım mühendisliği, ağ ve sistem yöneticiliği, bilgi işlem yöneticiliği dahil birçok pozisyonda tecrübeye sahiptir. Özellikle Linux, Solaris, Free BSD işletim sistemlerinde hatırı sayılır deneyime sahip olan Hüseyin, kendisini açık kaynak kodlu ve özgür yazılımlar konusunda geliştirmiş, bu alanda uzmanlaşmıştır. Doktora derecesini 2013 yılında TOBB Ekonomi ve Teknoloji Üniversitesi Bilgisayar Mühendisliği’nden birincilikle alan Hüseyin, yüksek lisans eğitimini yine aynı üniversitede ve bölümde 2008 yılında yine birincilikle tamamlamıştır. Son yıllarda çalışmalarını bulut teknolojileri ve dağıtık depolama sistemleri üzerine yoğunlaştırmış ve bu konuda ciddi tecrübe edinmiştir. Hüseyin, 2016 yılından beri, OpenStack Foundation tarafından verilen “Certified OpenStack Administrator – COA” sertifikasına sahiptir. Dağıtık depolama teknolojilerinde özellikle Ceph tarafında kendisini geliştirmiş ve bu alanda söz sahibi olmuştur. Özel sektörde farklı coğrafik bölgelerde çalışan bir çok OpenStack ve Ceph kümesini yönetmektedir. Güncel ilgi alanları arasında bulut teknolojileri, büyük veri, yapay zeka ve container teknolojileri bulunmaktadır. Hüseyin, ülkemizde açık kaynaklı ve özgür yazılımların kullanımını yaygınlaştırmak ve bu konudaki bilgi birikimini artırmak üzere gönüllü olarak farklı etkinliklerde bilgi paylaşımında bulunmaktadır.