2012-05-29 9 views
53

Jak stabilny jest s3fs do zamontowania wiadra Amazon S3 jako lokalnego katalogu w systemie Linux? Czy jest zalecany/stabilny w środowiskach produkcyjnych o wysokim popycie?Jak stabilny jest s3fs do montażu wiadra Amazon S3 jako lokalnego katalogu?

Czy istnieją jakieś lepsze/podobne rozwiązania?

Aktualizacja: Czy byłoby lepiej użyć EBS i zamontować go przez NFS do wszystkich innych AMI?

+16

To wstyd, pytania takie jak ten koniec są zamknięte. ale przynajmniej nie są usuwane ... – arod

+4

Tak, daj nam sekcję z opiniami, czy coś w tym stylu. Czasami potrzebujesz opinii ... –

+1

Znów dobre pytania zamknięte ... To tak jakby "zamknięte" to tag na dobre pytanie! – nemo

Odpowiedz

75

There's a good article on s3fs here, który po przeczytaniu odwołałem się do udziału EBS.

Podkreśla kilka ważnych aspektów podczas korzystania s3fs, a mianowicie związane z nieodłącznych ograniczeń S3:

  • plik nie może być ponad 5GB
  • nie można częściowo zaktualizować plik więc zmiana pojedyncza bajt ponownie prześle cały plik.
  • operacja na wielu małych plikach jest bardzo wydajna (każdy jest oddzielnym obiektem S3), ale duże pliki są bardzo nieefektywne.
  • Chociaż S3 obsługuje częściowe/fragmentowe pobieranie, s3fs nie wykorzystuje tego, więc jeśli chcesz aby przeczytać tylko jeden bajt pliku 1 GB, musisz pobrać cały GB.

Zależy to od tego, co przechowujesz, czy s3fs jest wykonalną opcją. Jeśli przechowujesz powiedzmy, zdjęcia, gdzie chcesz napisać cały plik lub przeczytać cały plik, nigdy nie zmieniaj stopniowo pliku, to dobrze, choć można zapytać, jeśli robisz to, to dlaczego nie używać tylko S3 API bezpośrednio?

Jeśli mówisz o danych aplikacji, (na przykład pliki bazy danych, pliki rejestrowania), gdzie chcesz dokonać drobnych zmian, to zdecydowanie nie - S3 Po prostu nie działa w ten sposób, nie możesz stopniowo zmieniać plik.

Wymieniony wyżej artykuł mówi o podobnej aplikacji - s3backer - która omija problemy z wydajnością, wdrażając wirtualny system plików na S3. To staje się wokół problemów z wydajnością, ale sam ma kilka problemów własnych:

  • wysokie ryzyko utraty danych, ze względu na opóźniony pisze
  • zbyt małe rozmiary blokowe (np domyślne 4K) można dodać znaczący dodatkowe koszty (np. 130 USD za 50 GB z 4K bloków o wartości pamięci)
  • zbyt duże rozmiary bloków mogą znacznie zwiększyć opłaty za przesyłanie danych i ich przechowywanie .
  • użycie pamięci może być trudne: domyślnie buforuje 1000 bloków.
    Przy domyślnym rozmiarze bloku 4K nie stanowi to problemu, ale większość użytkowników
    prawdopodobnie będzie chciała zwiększyć rozmiar bloku.

Korzystałem z dysków montowanych EBS udostępnionych z instancji EC2. Ale powinieneś wiedzieć, że chociaż jest to najbardziej wydajna opcja, ma jeden duży problem. EBS Mounted NFS Share ma swoje własne problemy - pojedynczy punkt awarii; jeśli komputer, który udostępnia Wolumin EBS, przestanie działać, utracisz dostęp do wszystkich komputerów uzyskujących dostęp do udziału.

Jest to ryzyko, z którym mogłem żyć i było opcją, którą wybrałem w końcu. Mam nadzieję, że to pomoże.

+0

odpowiadając na pytanie: "jeśli to robisz, to dlaczego nie użyć interfejsu API S3 bezpośrednio?" Będę używał interfejsu API S3, ale potrzebuję szybkiego rozwiązania, w którym przesyłanie mojej aplikacji działającej w jednym serwerze jest możliwe przy użyciu przezroczystego S3. Nie mogę żyć z jednym punktem awarii (EBS). Czy jest on przezroczysty dla s3fs, jeśli S3 nie działa, a inny jest automatycznie montowany przez Amazon? Nie jestem pewien, jak to działa ... – arod

+0

W takim przypadku prawdopodobnie zostałby zapisany na twardym dysku serwera w folderze tymczasowym. W przeciwnym razie skutecznie ładujesz dwa razy do S3 !! Umieszczenie pliku na folderze tymczasowym opartym na S3 potrwa tak długo, jak użycie API do przesłania do S3 bezpośrednio – reach4thelasers

+0

co mam na myśli to, że w najbliższej przyszłości przestanę używać s3fs i zacznę używać API S3; w międzyczasie użyję s3fs, aby uruchomić system ... dziękuję bardzo ... – arod

14

To jest stare pytanie, więc podzielę się swoim doświadczeniem w ciągu ostatniego roku z S3FS.

Początkowo miał wiele błędów i wycieków pamięci (miałem zadanie cron, aby ponownie uruchomić co 2 godziny), ale z najnowszą wersją 1.73 był bardzo stabilny.

Najlepszą rzeczą w S3FS jest to, że masz o co mniej martwić się i uzyskać korzyści wydajnościowe za darmo.

Większość twoich żądań S3 będzie miała postać PUT (~ 5%) i GET (~ 95%). Jeśli nie potrzebujesz żadnego przetwarzania końcowego (na przykład tworzenie miniatur). Jeśli nie potrzebujesz żadnego przetwarzania końcowego, nie powinieneś uderzać w serwer WWW i przesyłać bezpośrednio do S3 (używając CORS).

Zakładając, że uderzasz na serwerze prawdopodobnie oznacza to, że musisz wykonać pewne przetwarzanie zdjęć. Dzięki interfejsowi API S3 będziesz przesyłać na serwer, a następnie przesyłać do S3. Jeśli użytkownik chce przyciąć, musisz pobrać ponownie z S3, a następnie ponownie przesłać na serwer, przyciąć, a następnie przesłać do S3. Po włączeniu S3FS i lokalnej pamięci podręcznej ta orkiestracja jest zajęta i zapisuje pobieranie plików z S3.

Po zapisaniu w pamięci podręcznej, jeśli przechowujesz pamięć podręczną w efemerycznym trybie EC2, uzyskujesz korzyści wydajnościowe, które są dostarczane bez możliwości czyszczenia pamięci podręcznej bez obawy o nic. O ile zabraknie miejsca na dysku, nie powinieneś mieć powodu do czyszczenia pamięci podręcznej. Dzięki temu operacje przesuwania, takie jak wyszukiwanie i filtrowanie, są znacznie łatwiejsze.

Jedną rzeczą, którą chciałbym mieć była pełna synchronizacja z S3 (styl RSync). To sprawi, że będzie to korporacyjna wersja DropBox lub Google Drive dla S3, ale bez konieczności rywalizowania z kwotami i opłatami, które mu towarzyszą.

+0

jeśli chodzi o "pełną synchronizację", czy masz na myśli coś takiego jak [ to] (http://s3tools.org/s3cmd-sync) (http://s3tools.org/s3cmd-sync) zintegrowane z S3FS? – ylluminate