1993 yılında 170MB diskli ilk PC’imi aldığımda disk boyutunu duyan arkadaşlarım dehşete kapılmıştı. Bugün o verinin kat ve kat fazlasını 1 saniyede aktarabilen, arada sırada kullandığım 256 GB boyutunda bir flash disk çekmecemde duruyor.

Tabi bulut teknolojileri ve çok kullanıcılı sistemler geliştikçe saklanan veri miktarları da inanılmaz boyutta arttı. Bir blog için birkaç GB çok olsa bile, kullanıcı verisi ile sürekli büyüyen sistemler için Terrabyte’lar bile yetersiz kalıyor. Verinin sadece büyük olması değil, sürekli ve yüksek hızda ulaşılabilir olması, hata ve kayıplara karşı güvende olması, kendisine bağımlı sistemlerini çalışmasını sekteye uğratmaması da çok önemli.

Gluster FS nedir?

Tek bir fiziksel sunucu üzerinde, küçük bir sistem çalıştırırken farkına varmıyor olsak da, sunucu sayısı arttıkça dosya sistemi daha sorunlu ve daha önemli bir hal alıyor. Özellikle docker veya kubernetes gibi konteyner tabanlı uygulamalarda kalıcı depolamanın önemi de artıyor. Ben GlusterFS ile başka bir “Merhaba” serisine konu olacak Kubernetes Cluster denemelerim sırasında, kalıcı saklama alanı (persistent storage) ihtiyacı doğduğunda tanışmıştım.

Gluster ne değil ?

Gluster bir dosya sunucusu değil, gluster ağ tabanlı bir dosya sistemi.

Gluster FS binlerce istemci ve brontobytelarca (10^15 terabyte) veriye kadar genişleyebilen açık kaynak kodlu, ağ tabanlı, dağıtık bir dosya sistemi. Fiziksel depolama sunucu ve çözümlerini yazılımsal katmanda birleştirerek çok daha büyük depolama ağları oluşturmayı sağlayan bir çözüm.

Gluster hakkında geniş bilgi ve çok detaylı dokümantasyona Gluster web sitesinden ulaşabilirsiniz. Ben bu yazıda Gluster’ın en temel özelliklerinden bahsedeceğim.

Gluster’ın önemli özelliklerinden bazıları

  • Ölçekleme (scaling), çoğaltma (replication) ve hatta coğrafi çoğaltma
  • Yüksek kullanılabilirlik (high availability)
  • Kendini tamir edebilmesi (self healing)
  • Küme (cluster) yapısı

Gluster Hacim (Volume) Tipleri

Saklama tiplerini açıklamadan önce brick (köprü) ve node (düğüm) arasındaki farka kısaca değinmek gerekiyor. Node’lar gluster ağımzıdaki sunculara işaret ediyor, yani gluster havuzumuza dahil ettiğimiz sunucular birer node. Köprü ise node’lar üzerinde tanımlanan dizinler. Yani her sunucu bir node iken, o node üzerinde birden fazla brick olabilir.

  • Dağıtık (Distributed): Dosyalar köprüler arasında dağıtılır. Örneğin 1TB + 1TB iki köprü ile toplam 2 TB veri saklarsınız)
  • Replicated (Çoğaltılmış): Aynı dosyanın kopyaları birden fazla köprüde saklanır. Örneğin 1TB + 1TB iki köprüde 1TB verinin iki kopyasını tutarsınız
  • Parçalı (Striped): Dosyalar parçalara bölünerek her bir parçası bir köprüde saklanır. Örneğin 1TB x 3 köprünüz varsa 3TB’lık dosya 1TB’lık parçalara bölünerek saklanır. Yazma ve okuma performansı artmış olur
  • Dağıtık Çoğaltılmış (Distributed Replicated): En az 4 köprü gerekir. Örnğein dosyalar köprülerin yarısı arasında dağıtık olarak saklanırken, diğer köprülerde bu köprülerin birebir kopyası olur.
  • Dağıtık Parçalı (Distributed Striped): Dosyalar iki veya daha fazla düğüm arasında parçalı olarak dağtılır. Diğer yöntemlerden farkı dağıtım köprü değil düğümler arasındadır.

Hangi durumda hangi hacim türünü kullanmalıyım?

  • Ölçeklendirme önemli, fakat yedeklilik şart değil (veya başka yazılım veya donanım katmanları tarafından kontrol ediliyorsa) dağıtık hacimler kullanılmalıdır.
  • Yüksek güvenilirlikte ve kesintisiz ulaşılabilecek veriler saklayacaksanız çoğaltılmış hacimleri kullanılmalıdır.
  • Çok büyük ve anlık kullanım sayısı yüksek dosyalar olan ortamlarda parçalı hacimleri kullanılmalıdır.
  • Anlık kullanımı fazla, yüksek boyutlu dosyalar olan ve ölçeklendirme gerekecek sistemlerde dağıtılmış – parçalı hacimler kullanılmalıdır.
  • Yüksek güvenirlik ve ölçeklendirme ihtiyacı olan sistemlerde dağıtık çoğaltılmış hacimler kullanılmalıdır. Dağıtık çoğaltılmış hacimler çoğu durumda daha iyi okuma performansı sağlar

Gluster kurulumu

Gluster’ı üretim ortamında sadece dosya sunucusu olarak ayrılmış ayrı bir cluster’a kurmak ideal olsa da, geliştirme ve/veya öğrenme ortamlarında mevcut cluster’ınız üzerine kurmak da mümkün. Eğer proje bütçeniz çok düşük değilse işlemci ve hafıza kapasitesi görece daha düşük, disk erişim hızları ve kapasiteleri yüksek olan ayrı bir cluster kurmanızı öneririm.

Gluster kurulumu “Merhaba” içerikli bir yazının sınırları dışında kalıyor, fakat istek gelmesi halinde sanal makine veya AWS EC2 üzerinde Gluster kurulumunu anlatan bir yazı/video’da hazırlayabilirim.

Bu Yazıda Yapılan Değişiklikler
  • 11.05.2022: Yazı özeti düzenlendi.