Jak znaleźć igłę w terabajcie siana Marcin Sochacki
Skala działania Biorąc pod uwagę tylko WWW: miliardy zindeksowanych stron średnio 10 KB/stronę efekt: setki terabajtów Trudne zadanie, ale wykonalne: potrzebujemy dużo komputerów i dysków i sieci i oprogramowania
Kluczowe wymagania stabilność pracy skalowalność szybkość odpowiedzi rozsądny koszt
Przechowywanie danych Dyski IDE są tanie ale awaryjne Nawet największa macierz RAID to za mało Rozwiązanie: Google File System (GFS) – replikacja danych na wiele maszyn (do kilku tysięcy/klaster, Linux + ext2ext4) Wiele petabajtów, duża odporność na awarie Transfer rzędu 100 GB/s i więcej
Sprzęt Wiele serwerowni na całym świecie Routery, switche, load balancery Racki z maszynami Dwa switche GigE w każdym racku Komponenty PC głównie z Dalekiego Wschodu, robione na zamówienie 100% Linux
Sprzęt (1997)
Sprzęt (1999)
Dublin nocą (2005)
Sprzęt (2009)
Dalles, OR
Założenia GFS Częste awarie sprzętu Relatywnie ”mało” dużych plików kilka milionów, >100 MB Pliki są rzadko tworzone, często dopisywane zwykle równolegle (logi, kolejki)! Duże ciągłe odczyty Duża przepustowość ważniejsza od niskich opóźnień
Google File System (GFS) Master zarządza metadanymi (w RAM) Transfer danych odbywa się bezpośrednio między klientem a chunkserwerem Pliki podzielone są na kawałki (chunks) – zwykle do 64 MB Kawałki są przechowywane zwykle w trzech kopiach na różnych maszynach
Wnętrzności GFS Brak cache'owania danych Log transakcyjny przechowywany na masterze i replikowany, checkpointy Zapobieganie awariom, replikacja metadanych, sumy kontrolne Zapis tylko przez głównego mastera (blokady plików) Odczyt również poprzez repliki Chunkserwery można współdzielić z innymi funkcjami
Wnętrzności GFS (c.d.) Sprytne klonowanie i balansowanie danych Algorytm klienta wykorzystuje info o lokalizacji Integralność danych: sumy kontrolne co 64KB Garbage collection Snapshoty, quota Kodowanie Reed-Solomon Wady: słaba wydajność dla małych plików
GFS dla użytkownika tool ls -l /gfs/xx/home/wanted API do C++, Python, Java hackowany moduł do FuSE spore zależności od reszty infrastruktury, np. Chubby lock & name service optymalizacje dla BigTable i innych
Wpadki... ”no chunk left behind” wredny switch... sumy kontrolne w TCP sumy kontrolne w GFS (Adler-32) książki papa...
Konkurencja Global File System (GFS/GFS2) od Red Hata wymaga SAN/iSCSI Lustre 15/30 na top500 serwer metadanych (MDS) w trybie active/standby brak wbudowanej redundancji TASK 2009/04, 520 TB, 10 GB/s InterMezzo, Coda, AFS, GlusterFS, Ceph, GPFS, MogileFS
That's all folks Pytania?