Merhaba;

Bugün “Gluster” konusunda bir şeyler yazmaya karar verdim.

“Gluster”, ölçeklenebilir dağıtık bir dosya sistemidir. Birden fazla sunucunun disk alanı kaynaklarını birleştirerek global bir ad uzayı (“namespace”) oluşturur.

Özellikleri:

Açık kaynaktır.

Posix uyumludur.

Geleneksel donanım yapıları tarafından desteklenir (“commodity hardware”).

NFS, SMB/CIFS gibi endüstri standartı protokoller tarafından erişilebilirdir.

Replikasyon, coğrafi yedeklilik, kota, snapshot, bitrot algılama gibi pek çok özelliği destekler.

Farklı iş yükleri için optimizasyon yapılmasına imkan sağlar.

Organizasyonlar, herhangi bir üretici firmaya bağlı kalmadan bu yapı sayesinde ortamı istedikleri kapasiteye ölçekleyebilirler, performans artışı sağlayabilirler ve ortamın kullanılabilirliliğini, çalışırlılığının devamlılığını artırabilirler. Pek çok firma bu ürünün desteğini ve danışmanlığını sağlamaktadır. Red Hat Gluster Storage, “Gluster” tabanlı ticari bir depolama yazılım ürünüdür.

“Gluster”’ın mimarisi nasıl? “Volume”, “bricks” dediğimiz yapıların birleşiminden oluşur. “Gluster” dosya sistemi operasyonlarının pek çoğu, “volume” üzerinde yapılır. “Gluster” dosya sistemi ihtiyaca göre farklı “volume” türlerini destekler. Bazı “volume” türleri kapasite artırımı için elverişliyken, bazı “volume” türleri, performans ihtiyacı olan iş yükleri için uygundur. Bazı “volume” türleri ise, her iki ihtiyaca cevap verebilir.

“volume” oluştururken, “volume” türünü belirtmezseniz, “Distributed Glusterfs Volume” türü oluşturulacaktır. Bu “volume” türünde bir veri yedekliliği yoktur. Bu “volume” türünün amacı, hızlı ve kolay bir şekilde istenen “volume” büyüklüğünü oluşturmak ve “volume” e ihtiyaç duyan işimize bir an önce başlayabilmektir. Şekil 1.’de “File 1”, “Brick 1”’de depolanmıştır. Diğer sunucuda herhangi bir replikası yoktur. “Brick 1” herhangi bir nedenden ötürü düzeltilemez bir hata verirse, verinin bir replikası olmadığı için veriyi kaybederiz. Bu modelde, donanımın sağlamlığına sadece güvenmiş oluyoruz.

No alt text provided for this image

Şekil 1. “Distributed Glusterfs Volume”.

“Replicated Glusterfs Volume” türünde, verinin tüm kopyası, bütün “brick” lerde tutulur. “Volume” oluşturulurken, replika sayısı tanımlanır. İki replikaya sahip “volume” oluşturmak için en az 2 “brick” e ihtiyaç vardır. Üç replikaya sahip “volume” oluşturmak için en az üç “brick” e ihtiyacımız vardır. Bu “volume” türünde, “brick” lerin bir tanesi hata verse bile, veriye diğer “brick” üzerinden ulaşılabilir. Bu “volume” türü, güvenilirlik ve veri yedekliliği anlamında önceki türe göre daha avantajlıdır. Şekil 2’de, “File 1”, “Brick 1” ve “Brick 2” de mevcuttur. Aynı şekilde “File 2” de “Brick 1” ve “Brick 2” de mevcuttur.

No alt text provided for this image

Şekil 2. “Replicated Glusterfs Volume”.

“Distributed Replicated Glusterfs Volume” türünde, “brick” sayısı, replica sayısının katı olmalıdır. Komşu “brick” ler birbirinin replikası olur. Depolama biriminin ölçeklenebilir olması ve verinin yedekli olması isteniyorsa bu tür bir “volume” ün kullanılması önerilir. Örneğin, “brick” sayısı 8 ve replica sayısı 2 ise, ilk iki “brick” birbirinin replikası olur, sonra gelen ikili yine birbirinin replikası olur. Bu mantık 8 “brick” boyunca devam eder. Bu “volume”, 4×2 olarak tanımlanır. Örneğin 8 “brick” olsun ve replica sayısı 4 olsun. Bu durumda, 4 “brick” birbirinin replikası olur. Bu “volume”, 2×4 olarak tanımlanır.

No alt text provided for this image

Şekil 3. “Distributed Replicated Glusterfs Volume”

Bir ”brick” de istemciler tarafında aynı anda sıklıkla ulaşılan büyük bir dosya olduğunu düşünelim. Bu durumda, bir “brick” üzerinde çok yük oluşacaktır ve sonucu olarakta performans kaybına neden olacaktır. Büyük dosyanın küçük parçalara (“chunk”) ayrıldığını düşünelim. Her bir parçanında “brick” içinde tutulduğunu düşünelim. Bu durumda yükü dağıtmış oluruz ve istemciler, dosyaya daha hızlı bir zamanda ulaşır. Bu örnekte ama veri yedekliliği yoktur. Bu volume türü, “Striped Glusterfs Volume” olarak isimlendirilir (Şekil 4.).

No alt text provided for this image

Şekil 4. “Striped Glusterfs Volume”

“Distributed Striped Glusterfs Volume”, bir önceki “volume” e benzerlik gösterir. Tek farkı, “stripe” ların daha fazla “brick” üzerine dağıtılmasıdır. “Brick” sayısı, “stripe” sayısının çarpanı olmalıdır. Eğer “volume” büyüklüğünü artırmak istiyorsak, “stripe” sayısının çarpanı kadar “brick” eklenmelidir (Şekil 5.).

No alt text provided for this image

Şekil 5. “Distributed Striped Glusterfs Volume”

“Glusterfs”, “userspace” bir dosya sistemidir. Bu nedenle, “Glusterfs”, kernel VFS ile etkileşime girebilmek için FUSE (“File System in Userspace”) kullanır. FUSE kernel modülü, imtiyazlı olmayan kullanıcı uygulamalarının kernel VFS ile etkileşimini sağlar. FUSE’nin “userspace” den ulaşılabilir bir API’si vardır.

“Glusterfs”de “Translator” denilen bir kavram var. “Translator”, kullanıcıdan gelen istekleri, depolama birimi isteklerine çevirir. “Glusterfs” de pek çok “Translator” kategorisi olmakla beraber iki önemli “Translator” kategorisi, “Cluster” ve “Performance” dır. DHT (“Distribute Hash Table Translator”), “Cluster” kategorisi altındadır. DHT, “Glusterfs” in birden fazla sunucudan performansın ve kapasitenin toplanmasını sağlayan çekirdeğidir.

“Cluster Translator” içinde yer alan diğer “Translator”, “Automatic File Replication”’dır. Dosya operasyonlarını takip eder. “Brick” ler arasında verinin replikasyonunun yapılmasından sorumludur.

“Geo-Replication”, ayrık coğrafi lokasyonlar arası verinin asenkron replikasyonunu sağlar. Glusterfs 3.2 ile gelen bir özelliktir. “Geo-Replication”, “master-slave” modeli kullanır.

“Glusterfs” sunucu “node” üzerine yüklendiğinde glusterd ( “gluster management daemon”) oluşturulur. Bu “daemon”, “cluster” içinde olan tüm “node” lar üzerinde çalışmalıdır. “glusterd” başladıktan sonra, TSP (“trusted server pool”) oluşturulur. TSP, tüm depolama birimi sunucu “node” larından oluşur. “Bricks”, “Glusterfs” de en küçük depolama birimi bileşenidir.

Bir “volume” oluşturulduğu zaman, “volume” e dahil olan tüm “brick” lerde glusterfsd” prosesi çalışır. “vol” dosyaları olarak bilinen, konfigürasyon dosyaları, “/var/lib/glusterd/vols/” içinde oluşturulur. “Volume” içinde yer alan her “brick” için bir konfigürasyon dosyası olacaktır. Bu dosya, ilgili “brick” le ilgili tüm detayı içermektedir. İstemci prosesi içinde ihtiyaç duyulan konfigürasyon dosyası oluşturulacaktır. Bu noktadan sonra, dosya sistemi kullanıma hazır hale gelecektir.

“Glusterfs” in, “scale-out” bir dosya sistemi yapısı sunduğunu vurgulamak isterim. Size, kendi “NAS storage backend” nizi oluşturmak için çok kolay bir yöntem sunar. Yapınıza ihtiyaç duyduğunuza çok kolay yeni “node” lar ekleyebilirsiniz. Otomatik “failover” konfigürasyonu yapabilirsiniz. Bu durumda sunuculardan biri hata verdiğinde, veriye erişimi kaybetmezsiniz. “Glusterfs” pek çok unix dosya sistemi üzerinde çalışabilir. En popüler olanları, XFS ve ext4 dür. “Gluster Cluster, “Gluster CLI” ile yönetilebilir. ZFS’in üzerine “Gluster” yüklenebilir.

Genel olarak “Gluster” yapısından bahsetmeye çalıştım. Önerim, ürünü tanımak için kendi test ortamınızda kurulumlarına başlamanız olur. Gantek Teknoloji olarak, size Red Hat Gluster Storage için PoC çalışması yapabiliriz.

Asiye Yigit – 27 Ekim 2019 Pazar

Kaynakça:

https://docs.gluster.org/en/latest/Administrator%20Guide/GlusterFS%20Introduction/

https://docs.gluster.org/en/latest/Install-Guide/Overview/

https://access.redhat.com/documentation/en-us/red_hat_gluster_storage/3.1/html/administration_guide/chap-detecting_data_corruption

https://docs.gluster.org/en/latest/Administrator%20Guide/Gluster%20On%20ZFS/