Ceph™ jest otwartoźródłowym rozwiązaniem typu SDS opartym o ideę przechowywania danych jako obiekty. Nie należy jednak traktować obiektów Ceph™ jako obiekty w rozumieniu obiektowych baz danych, języków programowania czy obiektów w rozumieniu RGW (p. Glosariusz). Obiekt w Ceph™ składa się z ID obiektu, danych binarnych oraz metadanych przechowywanych w parach klucz-wartość. Co istotne ID obiektu jest unikatowe w całym klastrze.
Sam Ceph™ implementuje dwie rewolucyjne idee, które należy pokrótce przedstawić:
- CRUSH – Controlled Replication Under Scalable Hashing. Jest to algorytm pozwalający na umieszczenie poszczególnych obiektów w wyliczanych miejscach (w przypadku Ceph™ w OSD, czyli „dysku” [funkcje OSD może pełnić dysk, LVM, BlueStore lub nawet zwyczajny plik]). Dzięki takiemu podejściu klient znający stan (mapę) klastra jest w stanie samodzielnie wyliczyć, gdzie znajduje się zadany obiekt. Pozwala to uniknąć wąskiego gardła w postaci serwisu/serwera wyszukiwania (ang. lookup service/server)
- RADOS – Reliable Autonomic Distributed Object Storage. Jest to zbiór algorytmów oraz podejście całościowe do takich tematów jak dostęp do danych, redundancja danych, wykrywanie awarii i odzyskiwanie danych (ang. recovery – termin ten ma w języku angielskim szersze znaczenie. Można go tłumaczyć także jako „doprowadzenie klastra do zdrowego stanu” np. odpowiedniej redundancji). RADOS może operować na klastrach zawierających tysiące urządzeń i hostów.
Do najważniejszych funkcji RADOS należą:
- wykorzystanie algorytmu CRUSH do wyboru miejsca (OSD) przechowującego obiekty
- bezpośrednia komunikacja między klientem a serwerem (OSD) przechowującym zadany obiekt
- równoległe niezależne operacje na wszystkich „dyskach” (OSD)
- niezależny równoległy dostęp dla wielu klientów
- automatyczna ochrona danych
- brak serwera/usługi przechowywania metadanych
- brak scentralizowanego serwera/usługi wyszukiwania
- automatyczne, autonomiczne (samodzielne) reakcje na zmianę stanu klastra, także na jego awarie.
Wyjątkową cechą Ceph™ jest możliwość dostarczania kilku różnych typów pamięci masowej. Ponadto różne typy pamięci masowej mogą być dostarczane równocześnie przez jeden klaster.
Pierwszym z nich jest urządzenie blokowe, czyli typ urządzenia o swobodnym dostępie (w komendzie ls -l
urządzenia blokowe są oznaczane literą b). Do typowych urządzeń blokowych należą dyski (zarówno jako urządzenia fizyczne, jak i zwirtualizowane). Urządzenia blokowe używane przez Ceph™ mogą być użyte zarówno przez sterownik jądra, jak i sterownik FUSE. W terminologii Ceph™ tak dostarczone urządzenie blokowe to RBD (Rados Block Device).
Drugim popularnym zastosowaniem klastra Ceph™ jest użycie go jako pamięć masowa dla obiektów (w uproszczeniu plików) przez zastosowanie protokołu Swift lub protokołu kompatybilnego z Amazon™ S3. W ten sposób Ceph™ służy jako backend (zaplecze) do przechowywania obiektów udostępnianych przez usługę działającą na protokole HTTP. Takie wykorzystanie Ceph™ nazywa się Ceph™ Object Gateway, Rados Gateway, RADOSGW lub RGW.
Warto tutaj zwrócić uwagę na pewien problem z protokołem Amazon™ S3. Pomimo bycia bezspornie standardem wśród deweloperów, nie posiada on swojego standardu, tj. nie został opisany w żadnym RFC ani innym tego typu dokumencie. Na dodatek jego wewnętrzne mechanizmy nie są publicznie znane. Ceph™, naśladując więc zachowanie, metody dostępu, funkcje S3, działa głównie na publicznie znanych założeniach, które Amazon™ może dowolnie modyfikować.
Przedostatnim typem dostępu do Ceph™ jest użycie go jako montowany, współdzielony system plików. Metoda ta nazywa się po prostu CephFS (Ceph™ FileSystem). Klaster, który ma obsługiwać system plików w ten sposób, musi mieć uruchomioną dodatkową usługę, która odpowiada za przetrzymywanie metadanych plików. Warto pamiętać też o tym, iż CephFS w niewielkim stopniu odbiega od standardu POSIX.
Ostatnim sposobem na wykorzystanie klastra Ceph™, jest użycie biblioteki librados, która pozwala aplikacjom na bezpośredni dostęp do RADOS. Ze względu na konieczność pisania aplikacji, z myślą o bezpośrednim zastosowaniu rozproszonej, skalowalnej, wydajnej obiektowej pamięci masowej, jest to opcja najrzadziej stosowana. Niemniej jest to też metoda, która potencjalnie pozwala osiągnąć najwyższą wydajność. Rozwiązania dostarczające RBD i RGW korzystają między innymi z librados.
Na sam koniec należy podkreślić, iż klaster Ceph™ może wspierać wszystkie 4 typy dostępu na raz. Istnieje w nim bowiem pojęcie puli (ang. pool), zatem z reguły każde z zastosowań posiada swoją własną / swoje własne pule.
Więcej o projekcie Ceph znajdziesz w dokumentacji https://en.euro-linux.com/docs/ceph/.