System plików rozproszonego przechowywania - Który / Czy jest gotowy do użycia produkt?


31

Z Hadoop i CouchDB na blogach i pokrewnych wiadomościach, co to właściwie jest rozproszona pamięć (silnik) odporna na awarie.

  • CouchDB tak naprawdę nie ma wbudowanych żadnych funkcji dystrybucji, o ile wiem, po prostu brakuje kleju do automatycznej dystrybucji wpisów, a nawet całych baz danych.
  • Hadoop wydaje się być bardzo szeroko stosowany - przynajmniej zyskuje dobrą prasę, ale wciąż ma jeden punkt awarii: NameNode. Ponadto można go zamontować tylko za pomocą FUSE, rozumiem, że HDFS nie jest tak naprawdę głównym celem Hadoop
  • GlusterFS ma wspólną koncepcję niczego, ale ostatnio przeczytałem kilka postów, które doprowadziły mnie do opinii, że nie jest tak stabilna
  • Luster ma również jeden punkt awarii, ponieważ wykorzystuje dedykowany serwer metadanych
  • Ceph wydaje się być graczem z wyboru, ale strona główna twierdzi, że wciąż jest w fazie alfa.

Pytanie brzmi, który rozproszony system plików ma następujący zestaw funkcji (bez określonej kolejności):

  • Kompatybilny z POSIX
  • łatwe dodawanie / usuwanie węzłów
  • koncepcja „nic wspólnego”
  • działa na tanim sprzęcie (procesory klasy AMD Geode lub VIA Eden)
  • wbudowane uwierzytelnianie / autoryzacja
  • sieciowy system plików (chciałbym móc montować go jednocześnie na różnych hostach)

Miło jest mieć:

  • pliki dostępne lokalnie: mogę zdjąć węzeł z partycji za pomocą standardowego lokalnego systemu plików (ext3 / xfs / cokolwiek ...) i nadal uzyskiwać dostęp do plików

Ja nie szukam aplikacji hostowanych, a raczej coś, co pozwoli mi wziąć powiedzieć 10GB każdy z naszych skrzynek sprzętowych i mają że przechowywanie dostępne w naszej sieci, łatwo montowany na wielu hostach.


Więc z czym skończyłeś? Byłoby ciekawie usłyszeć o twojej obecnej konfiguracji.
MattBianco

Wygląda na to, że Luster dodał aktywne / pasywne MDS, odkąd to napisałeś, więc może potrzebować innego wyglądu.
pjz

Z mojego doświadczenia wynika, że ​​GlusterFS jest stabilny, ale wydajność jest dość niska. Aby uzyskać lepszą wydajność, potrzebujesz naprawdę wysokiej klasy sprzętu - w zasadzie RDMA. Ważne jest opóźnienie między wszystkimi serwerami a maszyną klienta GlusterFS.
Mikko Rantalainen,

Odpowiedzi:


9

Myślę, że będziesz musiał zrezygnować z wymogu POSIX, bardzo niewiele systemów to implementuje - w rzeczywistości nawet NFS tak naprawdę (myśl blokuje itp.) I nie ma nadmiarowości.

Każdy system korzystający z replikacji synchronicznej będzie działał wolno; każdy system, który ma asynchroniczną replikację (lub „ostateczną spójność”) narusza reguły POSIX i nie będzie zachowywał się jak „konwencjonalny” system plików.


Czy znasz jakieś systemy plików, które obsługują zarówno ostateczną spójność, jak i ścisłą spójność, być może można by ją dostroić i stworzyć 2 podłączenia?
CMCDragonkai

16

Nie mogę rozmawiać z resztą, ale wydaje się, że jesteś zdezorientowany między „silnikiem pamięci rozproszonej” a „rozproszonym systemem plików”. Nie są tym samym, nie należy ich mylić z tym samym i nigdy nie będą tym samym. System plików to sposób na śledzenie położenia rzeczy na dysku twardym. Mechanizm pamięci, taki jak hadoop, jest sposobem na śledzenie fragmentu danych identyfikowanych przez klucz. Pod względem koncepcyjnym niewielka różnica. Problem polega na tym, że system plików jest zależny od silnika pamięci masowej ... w końcu potrzebuje sposobu zapisu na urządzeniu blokowym, prawda?

Poza tym mogę mówić o użyciu ocfs2 jako rozproszonego systemu plików w środowisku produkcyjnym. Jeśli nie chcesz drobnych szczegółów, przestań czytać po tym wierszu: To trochę fajne, ale może oznaczać więcej przestojów, niż myślisz.

Od kilku lat działamy w systemie ocfs2 w środowisku produkcyjnym. Jest OK, ale nie nadaje się do wielu aplikacji. Naprawdę powinieneś spojrzeć na swoje wymagania i dowiedzieć się, jakie one są - może się okazać, że masz dużo więcej swobody na błędy niż się spodziewałeś.

Na przykład ocfs2 ma dziennik dla każdej maszyny w klastrze, która ma zamontować partycję. Powiedzmy, że masz cztery maszyny sieciowe, a kiedy tworzysz tę partycję za pomocą mkfs.ocfs2, określasz, że będzie ich sześć, aby dać sobie trochę miejsca na rozwój. Każdy z tych czasopism zajmuje miejsce, co zmniejsza ilość danych, które można przechowywać na dyskach. Powiedzmy, że musisz skalować do siedmiu maszyn. W tej sytuacji musisz zdjąć całośćklaster (tzn. odmontuj wszystkie partycje ocfs2) i użyj narzędzia tunefs.ocfs2, aby utworzyć dodatkowy dziennik, pod warunkiem, że jest dostępne miejsce. Wtedy i tylko wtedy możesz dodać siódmą maszynę do klastra (co wymaga dystrybucji pliku tekstowego do reszty klastra, chyba że używasz narzędzia), przywróć wszystko, a następnie zamontuj partycję na wszystkich siedmiu maszyny

Widzisz co mam na myśli? Ma to być wysoka dostępność, co powinno oznaczać „zawsze online”, ale właśnie tam masz mnóstwo przestojów ... i niech Bóg cię zatłoczony dla miejsca na dysku. Nie chcesz zobaczyć, co się stanie, gdy zatłoczysz się o ocfs2.

Należy pamiętać, że evms, który był kiedyś „preferowanym” sposobem zarządzania klastrami ocfs2, przeszedł drogę ptakowi dodo na korzyść clvmd i lvm2. (I dobra wściekłość na evms.) Również bicie serca szybko zamieni się w projekt zombie na korzyść stosu openais / rozrusznika serca. (Poza tym: Podczas wykonywania początkowej konfiguracji klastra dla ocfs2 możesz określić „pcmk” jako silnik klastra zamiast bicia serca. Nie, nie jest to udokumentowane.)

Za to, co jest warte, wróciliśmy do NFS zarządzanych przez rozrusznik serca, ponieważ kilka sekund przestoju lub kilka upuszczonych pakietów Tcp, gdy pacemaker migruje udział NFS na inną maszynę, jest trywialny w porównaniu do ilości przestojów, które widzieliśmy dla podstawowego współużytkowane operacje przechowywania, takie jak dodawanie komputerów podczas korzystania z ocfs2.


2
Chciałem tylko skomentować, że to jest dokładnie moje doświadczenie z OCFS2 / Pacemaker vs. NFS. Po wypróbowaniu OCFS2 jako klastrowego magazynu danych przez pewien czas bardzo mi brakowało. Tymczasem nasz system HA NFS działa jak urok.
Kamil Kisiel

1
OCFS2 zdecydowanie nie jest tym, na co patrzę. Przez rozproszone nie mam na myśli czegoś z centralną instancją pamięci, ale raczej coś, w którym mogę łatwo dodawać / usuwać węzły, które zapewniają pamięć, jednocześnie pozostając przy reszcie „klastra”
serverhorror

2
Ponieważ wciąż otrzymuję pozytywne opinie na temat tej odpowiedzi, powinienem dodać, że teraz używamy GlusterFS w produkcji jako zamiennika NFS. Jednak NIE przechowujemy obrazów dysków VM, plików pamięci bazy danych (sqlite lub myisam itp.), Ani innych plików, które często zmieniają się na glusterfs, ponieważ powoduje to zawieszenie replikacji. Te, które przechowujemy lokalnie na hostach VM w LVM i używają DRBD do dystrybucji do witryn przełączania awaryjnego lub wykorzystują wbudowaną replikację.
Karl Katzke




3

Co powiesz na Xtreemfs ? wersja 1.4 (listopad 2012 r.) jest uważana za Jakość produkcji.

Jest kompatybilny z POSIX i ma wyjątkową automatyczną odporność na uszkodzenia.


2

Luster pozwala na przechowywanie wielu metadanych w konfiguracji aktywnej / pasywnej w celu zapewnienia redundancji, więc nie ma pojedynczego punktu awarii.

Warto również przyjrzeć się OCFS2.

Należy pamiętać, że wyeliminowanie wymogu jednoczesnego dostępu do wielu sieci umożliwia przełączenie na coś takiego jak iSCSI, a nawet cifs lub nfs. Minusem jest to, że musisz „wykroić” kawałki swojego uberArray w kęsy dla każdego serwera, który potrzebuje miejsca.


2

O ile nie jest to do celów akademickich / rozwojowych, do tego rodzaju rzeczy należy podchodzić od ogólnych wymagań dotyczących projektu. Większość rozproszonych systemów plików nie jest wystarczająco dojrzała do poważnego wdrożenia - na przykład, co robisz, jeśli całość się powiedzie. Jeśli jest to do celów akademickich / rozwojowych, to jest to naprawdę dobra rzecz, ponieważ możesz się wiele nauczyć i naprawić wiele błędów.

Komentarz kwestionujący, czy naprawdę potrzebujesz semantyki POSIX, jest dobrym początkiem. Semantyka systemu plików innego niż POSIX może być o wiele bardziej elastyczna, co prowadzi do znacznie bardziej niezawodnych systemów.

Jeśli jest to starsza aplikacja, naprawdę zastanawiam się, dlaczego nowoczesny rozproszony system plików można uznać za najlepsze rozwiązanie.

Nie zrozum mnie źle - to niezwykle zabawne zabawki. Po prostu nie chciałbym być odpowiedzialny za złożone, współzależne rozwiązanie, które nie jest powszechnie stosowane i byłoby bardzo trudne do naprawienia, gdy się rozwinie.


1

Czy naprawdę, absolutnie pozytywnie potrzebujesz semantyki POSIX? Życie staje się znacznie łatwiejsze, jeśli możesz użyć niestandardowego magazynu danych. Mamy wewnętrznie zapisany magazyn danych, który jest w rzeczywistości bardzo dużym rozproszonym magazynem kluczy i wartości. Przechowujesz w nim plik i odzyskujesz token. Jeśli chcesz odzyskać plik, podaj mu token, który otrzymałeś wcześniej. Jest rozproszony, nie jest udostępniany, dane są replikowane trzykrotnie, węzły można dowolnie dodawać i usuwać, zarówno serwery pamięci, jak i serwery sterujące.


Niestety naprawdę potrzebuję semantyki POSIX. Mamy wiele „starszych aplikacji”, które przechowują dane w lokalnym systemie plików. Przepisanie tego wszystkiego zdecydowanie nie mieści się w budżecie
horror serwera

Podejrzewam, że będziesz musiał zrezygnować z niektórych innych wymagań. Patrzyłbym na GlusterFS, Luster, OCFS2, GFS, ale wątpię, byś znalazł taki, który nie ma nic wspólnego.
David Pashley,

en.wikipedia.org/wiki/… zawiera listę rozproszonych systemów plików, ale bardzo niewiele z nich to POSIX.
David Pashley,

Eony temu korzystałem z wariantu AFS (obecnie OpenAFS). Działało, ale było skomplikowane i miało własny zestaw dziwactw.
Jauder Ho

1

Luster ma również jeden punkt awarii, ponieważ wykorzystuje dedykowany serwer metadanych

Luster jest zaprojektowany do obsługi przełączania awaryjnego, a MDS / MDT / OSS może mieć wiele adresów, z którymi można się skontaktować, a pulsu można użyć do migracji usługi.

Należy pamiętać, że niektóre najnowsze wersje miały problemy, w których odmontowywanie wydaje się działać, ale nadal istnieją dane w locie na dysk, jednak ochrona podwójnego montażu powinna była pomóc (oprócz interesujących problemów, które miały) ...


1

Polecam używać MooseFS (odporny na awarie, skalowanie w górę, rozproszony system plików w sieci). Jest zgodny z POSIX, a od wersji 1.6 MooseFS oferuje proste uwierzytelnianie / autoryzację podobne do NFS. Zobacz także wymagania sprzętowe .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.