Projekt Fstorage www.fstorage.pl Łukasz Podkalicki Bartosz Kropiewnicki
Konspekt 1. Problemy związane ze składowaniem plików 2. Dostępne darmowe technologie 3. Opis najczęściej stosowanej technologii 4. Opis rozwiązania Fstorage 5. Mała demonstracja (jak się uda) 7. Zastosowanie 8. Ścieżka rozwoju
Problemy związane ze składowaniem plików 1.Brak prostych, wygodnych do wdrożenia, darmowych mechanizmów 2.Tworzenie rozwiązań dedykowanych 3.Skalowalność (obciążenia, przestrzeni dyskowej, prosta decentralizacja) 4.Potrzeba rozwiązania wysokiej dostępności 5.Kopie zapasowe 6.Uniwersalność i autonomiczność rozwiązania 7.Koszty utrzymania i konserwacji
Dostępne darmowe technologie 1. MogileFS 2. GlusterFS 3. Google File System (GFS) 4. Lustre 5. XtreemFS 6. MooseFS Gemius S.A. 7. Ceph utrzymywany przez Uniwersytet Kalifornijski, Santa Cruz
Opis najczęściej stosowanej technologii MogileFS stworzony przez Danga Interactive, jest jedną z najczęściej stosowanych rozwiązań przez developerów Replikacja plików odbywa się pomiędzy różnymi węzłami Niezależny od lokalnego systemu plików na serwerze Pliki identyfikowane są przez klucze w globalnej przestrzeni nazw Rozproszona architektura (składowiska, trakery i bazy trakerów) Działa w warstwie aplikacyjnej (brak modułu kernela) Wymaga bazy danych do składowania metadanych plików Liniowe skalowanie (nowe pliki przesyłane są do nowo dostawionego serwera)
Opis najczęściej stosowanej technologii Schemat obrazujący działanie MogileFS:
Opis najczęściej stosowanej technologii MogileFS przykład wykorzystania API modułu PHP
Opis rozwiązania Fstorage Czym jest Fstorage? System klasy Content Server System klasy Media Server Serwer cache'y
Opis rozwiązania Fstorage Uproszczony schemat działania:
Opis rozwiązania Fstorage Serwer programowy, Fstoraged zaimplementowany w ANSI C (c99) przygotowany dla Linux oraz BSD lekki i szybki (obecnie ~ 450 KB kodu, czas odpowiedzi ~4ms) obsługa równocześnie dwóch protokołów na jednym porcie (FSTP oraz HTTP) Replikowanie plików (dwa typy replikacji, zdefiniowana ilość kopii lub automatyczna) Jednowątkowy silnik do obsługi zdarzeniowej synchronizacji operacji na plikach (regulowany efekt pruningu, zlecanie replikacji, inc/dec cachy liczbowych, etc). Rozproszona architektura (każdy fstoraged jest węzłem w sieci fstorage'owej, bootstraping z jednego IP, wymiana kontaktów między węzłami, węzły są sobie równe brak podziału na węzły GOD, master/slave czy tracker) Składowanie oraz serwowanie plików statycznych (FSTP, HTTP) Składowanie oraz strumieniowanie plików multimedialnych (FSTP, HTTP) Składowanie oraz serwowanie cache'y (FSTP) Prosta autoryzacja połączeń (Allowed IP)
Opis rozwiązania Fstorage Serwer programowy, Fstoraged Aplikacja niezależny od lokalnego systemu plików globalna przestrzeń nazw dla kluczy (w przypadku metod HTTP, GET oraz DELETE wymagane jest podanie skrótu crc16 z klucza zapisanego w 45'wym systemie liczbowym pozycyjnym, służy do tego statyczna funkcja/metoda API, hash) Pliki na serwerze rozpraszane są w 256 katalogach (hash z klucza decyduje do którego katalogu trafi plik) Content Metadata zapisywane są w specjalnych plikach z roz..hdr (w tym statystyki o pliku: ilość pobrań, czas utworzenia, czas ważności, mimetype, flagi, etc). serwer nie wymaga żadnej bazy danych (wykorzystuje swoje własne mechanizmy metakatalogowej bazy plikowej, X.500) Obsługiwane Protokoły: FSTP (dedykowana, binarna warstwa transportowa, File Storage Transfer Protocol) HTTP (dostępne metody: HEAD, GET, PUT, DELETE)
Opis rozwiązania Fstorage Serwer programowy, Fstoraged
Opis rozwiązania Fstorage Serwer programowy, Fstoraged Instalacja: Uruchomienie:
Fstorage Client/API Opis rozwiązania Fstorage Aktualnie dostępne Implementacje są w językach ANSI C (c99), C++ (gnu+ +98), Python (v >= 2.5), PHP (v >= 5.0.1) Po instalacji fstoraged mamy gotowe do użycia implementacje klienckie dla ANSI C oraz C++ (fstorage.h, fstorage++.h; -lfstorage, -lfstorage++; FSTP) Aby użyć Fstorage w PHP należy zainstalować moduł PHP, phpfstorage wymaga biblioteki -lfstorage++ (FSTP) Aby użyć Fstorage w Python'nie należy zainstalować Python package, pyfstorage wymaga biblioteki -lfstorage (FSTP) Dodatkowo, klientem serwera fstorage może być każda aplikacja korzystająca z protokołu HTTP (wget, przeglądarka, etc.)
Opis rozwiązania Fstorage Fstorage Client/API Prosty interfejs Różnorodność zastosowań
Fstorage Client/API Opis rozwiązania Fstorage Instalacja modułu PHP wygląda standardowo: Edycja php.ini dodanie lini, extension=fstorage.so Sprawdzenie:
Opis rozwiązania Fstorage Przykład wykorzystania klienta PHP:
Ścieżka rozwoju Zastąpienie mechanizmów proxy reaktywnym protokołem routingowym na poziomie kernela (kmodfstorage). Realizacja cache'y pamięciowych dla popularnych plików (ograniczenia I/O dysków) Obsługa SSL Obsługa IPv6
Dziękujemy za uwagę lukasz@fstorage.pl