Ceph Distributed File System¶
On 12 grudnia, 2021 by adminCeph jest rozproszonym sieciowym systemem plików zaprojektowanym w celu zapewnienia dobrej wydajno¶ci, niezawodno¶ci i skalowalno¶ci.
Podstawowe cechy obejmują:
- Semantykę POSIX
- Bezproblemowe skalowanie od 1 do wielu tysięcy węzłów
- Wysoką dostępność i niezawodność. Brak pojedynczego punktu awarii.
- N-way replication of data across storage nodes
- Fast recovery from node failures
- Automatic rebalancing of data on node addition/removal
- Easy deployment: większość komponentów FS to daemony przestrzeni użytkownika
Również,
- Elastyczne snapshoty (na dowolnym katalogu)
- Rekursywne księgowanie (zagnieżdżone pliki, katalogi, bajtów)
W przeciwieństwie do klastrowych systemów plików, takich jak GFS, OCFS2 i GPFS, które polegają na symetrycznym dostępie wszystkich klientów do współdzielonych urządzeń blokowych, Ceph rozdziela zarządzanie danymi i metadanymi na niezależne klastry serwerów, podobnie jak Lustre. Jednak w przeciwieństwie do Lustre, węzły metadanych i magazynowe działają całkowicie jako demony przestrzeni użytkownika. Dane w plikach są zapisywane przez węzły pamięci masowej w dużych kawałkach, aby rozłożyć obciążenie i ułatwić osiągnięcie wysokiej przepustowości. Gdy węzły magazynowania ulegają awarii, dane są replikowane w sposób rozproszony przez same węzły magazynowania (z minimalną koordynacją ze strony monitora klastra), dzięki czemu system jest niezwykle wydajny i skalowalny.
Serwery metadanych efektywnie tworzą dużą, spójną, rozproszoną pamięć podręczną w pamięci nad przestrzenią nazw plików, która jest niezwykle skalowalna, dynamicznie redystrybuuje metadane w odpowiedzi na zmiany obciążenia i może tolerować dowolne (dobrze, że nie bizantyjskie) awarie węzłów. Serwer metadanych przyjmuje nieco niekonwencjonalne podejście do przechowywania metadanych, aby znacząco poprawić wydajność w przypadku typowych obciążeń. W szczególności, inody posiadające tylko jedno łącze są wbudowanymi katalogami pośrednimi, pozwalając na ładowanie całych katalogów dentries i inodes do jego pamięci podręcznej za pomocą pojedynczej operacji I/O. Zawartość wyjątkowo dużych katalogów może być fragmentowana i zarządzana przez niezależne serwery metadanych, co umożliwia skalowalny dostęp współbieżny.
System oferuje automatyczne równoważenie/migrację danych podczas skalowania z małego klastra składającego się z zaledwie kilku węzłów do wielu setek, bez konieczności dzielenia przez administratora zbioru danych na statyczne woluminy lub przechodzenia przez żmudny proces migracji danych między serwerami.Gdy system plików zapełni się, można łatwo dodać nowe węzły i wszystko będzie „po prostu działać”.
Ceph zawiera elastyczny mechanizm migawek, który pozwala użytkownikowi utworzyć migawkę dowolnego podkatalogu (i jego zagnieżdżonej zawartości) w systemie. Tworzenie i usuwanie migawek jest tak proste, jak 'mkdir.snap/foo’ i 'rmdir .snap/foo’.
Ceph zapewnia również pewne rekursywne księgowanie w katalogach zagnieżdżonych plików i bajtów. Oznacza to, że polecenie 'getfattr -d foo’ na dowolnym katalogu w systemie ujawni całkowitą liczbę zagnieżdżonych regularnych plików i podkatalogów oraz sumę rozmiarów wszystkich zagnieżdżonych plików. Dzięki temu identyfikacja dużych konsumentów przestrzeni dyskowej jest stosunkowo szybka, ponieważ nie jest wymagane 'du’ ani podobne rekursywne skanowanie systemu plików.
Na koniec, Ceph pozwala także na ustawienie limitów na dowolny katalog w systemie.Limit może ograniczać liczbę bajtów lub liczbę plików przechowywanych poniżej tego punktu w hierarchii katalogów. Kwoty mogą być ustawiane przy użyciu rozszerzonych atrybutów 'ceph.quota.max_files’ i 'ceph.quota.max_bytes’, np:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dirgetfattr -n ceph.quota.max_bytes /some/dir
Ograniczeniem obecnej implementacji kwot jest to, że polega ona na współpracy klienta montującego system plików, aby zatrzymać zapisy, gdy osiągnięty zostanie limit. Zmodyfikowanego lub wrogiego klienta nie można powstrzymać przed zapisywaniem takiej ilości danych, jakiej potrzebuje.
Opcje montowania¶
ip=A.B.C.D Okre¶la adres IP i/lub port, do którego klient powinien się przywi±zać lokalnie.Zwykle nie ma zbyt wielu powodów, aby to robić. Jeśli IP nie jest określone, adres IP klienta jest ustalany na podstawie adresu, z którego rozpoczyna się połączenie z monitorem. wsize=X Określa maksymalny rozmiar zapisu w bajtach. Domyślnie: 64 MB. rsize=X Określa maksymalny rozmiar odczytu w bajtach. Domyślnie: 64 MB. rasize=X Określa maksymalny rozmiar readahead w bajtach. Domyślnie: 8 MB. mount_timeout=X Określa wartość limitu czasu dla montowania (w sekundach), w przypadku braku reakcji systemu plików Ceph. Domyślnie jest to 60 sekund. caps_max=X Określa maksymalną liczbę kapsli do zatrzymania. Nieużywane kapsle są zwalniane, gdy liczba kapsli przekroczy limit. Domyślnie 0 (brak limitu) rbytes Gdy stat() jest wywoływana na katalogu, ustaw st_size na 'rbytes’, czyli sumę rozmiarów wszystkich plików zagnieżdżonych pod tym katalogiem. Jest to wartość domyślna. norbytes Gdy stat() jest wywoływana na katalogu, ustaw st_size na liczbę wpisów w tym katalogu. nocrc Wyłączenie obliczania CRC32C przy zapisie danych. Jeśli jest ustawione, węzeł magazynowania musi polegać na korekcji błędów TCP, aby wykryć uszkodzenie danych w ładunku. dcache Użyj zawartości dcache do wykonania negatywnego wyszukiwania i readdir, gdy klient ma całą zawartość katalogu w pamięci podręcznej. (Nie zmienia to poprawności; klient używa zbuforowanych metadanych tylko wtedy, gdy dzierżawa lub właściwość zapewnia ich poprawność). nodcache Nie używaj dcache jak powyżej. Pozwala to na uniknięcie znacznej ilości skomplikowanego kodu, poświęcając wydajność bez wpływu na poprawność, i jest użyteczne do śledzenia błędów. noasyncreaddir Nie używaj dcache jak wyżej dla readdir. noquotadf Raportuj ogólne użycie systemu plików w statfs zamiast używać limitu katalogu głównego. nocopyfrom Nie używaj operacji RADOS 'copy-from’ do wykonywania zdalnych kopii obiektów. Obecnie jest ona używana tylko w copy_file_range, które powróci do domyślnej implementacji VFS jeśli ta opcja zostanie użyta. recover_session=<no|clean>Ustaw tryb automatycznego ponownego połączenia w przypadku, gdy klient jest zablokowany na liście. Dostępne tryby to „no” i „clean”. Domyślnie jest to „no”.
- no: nigdy nie podejmuj próby ponownego połączenia, gdy klient wykryje, że został zablokowany na liście. Operacje generalnie nie powiodą się po zablokowaniu na liście.
- clean: klient automatycznie łączy się ponownie z klastrem ceph, gdy wykryje, że został zablokowany na liście. Podczas reconnect, klient zrzuca brudne dane/metadane, unieważnia page cache i zapisywalne uchwyty plików.Po reconnect, blokady plików stają się nieaktualne, ponieważ MDS traci o nich informacje. Jeśli węzeł zawiera jakiekolwiek nieaktualne blokady plików, odczyt/zapis na tym węźle nie jest dozwolony dopóki aplikacje nie zwolnią wszystkich nieaktualnych blokad plików.
Dodaj komentarz