Będziemy mieć maszynę w pracy, która przy maksymalnej wydajności powinna być w stanie przepchnąć 50 („głowic zapisu”) x 75 GB danych na godzinę. To maksymalna wydajność około 1100 MB / s. Aby uzyskać to z urządzenia, wymaga dwóch linii 10 GBi. Moje pytanie brzmi: jakiego rodzaju technologia + serwer może obsługiwać / przechowywać taki przepływ danych?
Obecnie do przechowywania danych współpracujemy z ZFS, chociaż prędkości zapisu nigdy nie były pytaniem. (nie jesteśmy nawet blisko tych prędkości) Czy ZFS (ZFS na Linuksie) byłby opcją? Musimy także przechowywać dużo danych, „przewodnik IT” sugeruje, że w sumie jest to między 50 a 75 TB. Prawdopodobnie nie mogą to być wszystkie dyski SSD, chyba że chcemy zaoferować nasze pierworodne dziecko.
Niektóre dodatki oparte na doskonałych odpowiedziach:
- maksymalna wartość wynosi 50 x 75 GB / godzinę podczas szczytu, co jest krótsze niż 24 godziny (najprawdopodobniej <6 godzin)
- Nie spodziewamy się, że stanie się to wkrótce, najprawdopodobniej uruchomimy 5-10 x 75 GB / godzinę
- jest to maszyna sprzed wersji alfa, jednak wymagania powinny być spełnione (mimo że gra wiele znaków zapytania)
- użylibyśmy NFS jako połączenie z maszyny do serwera
- układ: maszyna generująca -> pamięć (ta) -> (bezpieczny rajd 6) -> klaster obliczeniowy
- więc szybkość odczytu nie jest niezbędna , ale dobrze byłoby użyć jej z klastra obliczeniowego (ale jest to całkowicie opcjonalne)
- najprawdopodobniej będą to duże pliki danych (niewiele małych)
źródło
Odpowiedzi:
Absolutnie ... ZFS na Linuksie jest możliwe, jeśli jest poprawnie zaprojektowany. Istnieje wiele przypadków złego projektu ZFS , ale dobrze zrobione, twoje wymagania mogą zostać spełnione.
Tak więc głównym wyznacznikiem będzie sposób łączenia się z tym systemem przechowywania danych. Czy to NFS? CIFS? W jaki sposób klienci łączą się z pamięcią? A może przetwarzanie itp. Odbywa się w systemie pamięci?
Podaj więcej szczegółów, a my możemy zobaczyć, czy możemy pomóc.
Na przykład, jeśli jest to NFS i synchroniczne podłączenia, to z pewnością możliwe jest skalowanie ZFS w systemie Linux, aby spełnić wymagania dotyczące wydajności zapisu i nadal utrzymywać wymagania dotyczące długoterminowej pojemności pamięci. Czy dane są kompresowalne? Jak połączony jest każdy klient? Gigabit Ethernet?
Edytować:
Dobra, ugryzę:
Oto specyfikacja, która kosztuje około 17–23 tys. USD i mieści się w szafie rack 2U.
Ta konfiguracja zapewni 80TB przestrzeni użytkowej przy użyciu sprzętowego RAID6 lub ZFS RAIDZ2.
Ponieważ nacisk kładziony jest na wydajność opartą na systemie plików NFS (zakładając zapis synchroniczny), możemy z łatwością przyswoić je wszystkie za pomocą napędów NVMe P3608 (paski SLOG). Mogą pomieścić 3 GB / s w sekwencyjnych zapisach i mają wystarczająco wysoką ocenę wytrzymałości, aby stale radzić sobie z opisanym obciążeniem. Dyski można łatwo przeprojektować, aby dodać zabezpieczenia w przypadku użycia SLOG.
Przy obciążeniu NFS zapisy zostaną scalone i opróżnione na wirujący dysk. Pod Linuksem dostosowujemy to do spłukiwania co 15-30 sekund. Wirujące dyski mogą sobie z tym poradzić i mogą przynieść jeszcze więcej korzyści, jeśli dane te można skompresować.
Serwer można rozszerzyć o 4 dodatkowe otwarte gniazda PCIe i dodatkowy port dla dwuportowych adapterów FLR 10GbE. Masz więc elastyczność sieci.
źródło
Dla takiej ekstremalnej prędkości zapisu sugeruję, aby nie używać ZFS, BTRFS ani żadnego innego systemu plików CoW. Chciałbym użyć XFS, który jest niezwykle wydajny w przypadku przesyłania dużych / strumieniowych transmisji danych.
Istnieje wiele brakujących informacji (w jaki sposób planujesz uzyskać dostęp do tych danych? Czy prędkość odczytu jest ważna? Czy zamierzasz pisać dużymi fragmentami? Itp.), Aby uzyskać konkretne porady, jednak niektóre ogólne porady to:
źródło
Ethernet 25 Gb / s jest już głównym nurtem, a NVMe z obsługą PCIe łatwo zniesie ten ruch.
Dla porównania niedawno zbudowałem małe rozwiązanie do „przechwytywania dziennika” przy użyciu czterech zwykłych serwerów dual-xeon (w tym przypadku HPE DL380 Gen9), każdy z 6 napędami NVMe, korzystałem z protokołu IP przez Infiniband, ale te karty sieciowe o przepustowości 25/40 Gb / s byłyby takie same i przechwytujemy do 8 GBps na serwer - działa uczta.
Zasadniczo nie jest to tanie, ale w dzisiejszych czasach jest bardzo wykonalne.
źródło
To nie brzmi jak wielka sprawa. Nasz lokalny dostawca sprzętu ma to jako produkt standardowy - najwyraźniej może przesuwać 1400 MB / s w trybie nagrywania CCTV, co powinno być trudniejsze niż twoje najwyższe wymagania.
(Link jest do domyślnej konfiguracji 12 GB, ale zauważają, że 20x4 TB jest również opcją. Brak osobistych doświadczeń z tym konkretnym modelem serwera).
źródło
Zapis sekwencyjny z prędkością 1100 MB / s nie stanowi problemu w przypadku nowoczesnego sprzętu. Anegdotycznie moja domowa konfiguracja z dyskami laptopów 8x5900 RPM, dyskami 2x15000 RPM i dyskami 2x7200 RPM utrzymuje 300 MB / s przy jednorazowym obciążeniu 16 GB.
Sieć to 10 GbE z kablami światłowodowymi, 9000 MTU w sieci Ethernet, a warstwą aplikacji jest Samba 3.0. Pamięć jest skonfigurowana w raid50 z trzema paskami na trzech woluminach 4-drive raid5. Kontrolerem jest LSI MegaRAID SAS 9271-8i z prędkością do 6 Gb / s na port (mam dodatkowy, wolniejszy multiplikator portów).
Porozmawiaj z dowolnym doświadczonym sysadminem, który powinien być w stanie dokładnie powiedzieć, które kontrolery i dyski spełniają Twoje wymagania.
Myślę, że możesz wypróbować dowolny kontroler 12 Gb / s i skonfigurować dwa lustrzane pasy po osiem dysków o prędkości 7200 obr./min. (Prawie każdy dysk powinien to zrobić). Rozpocznij 3-4 połączenia TCP, aby nasycić łącze, a jeśli jedna para kart 10GbE nie może go obsłużyć, użyj czterech kart.
źródło
Coś stycznego, ale rozważ użycie InfiniBand zamiast podwójnych łączy 10GbE. Możesz uzyskać karty Infiniband 56 Gb / s dość tanio, lub karty 100 Gb / s za niewiele więcej, a w systemie Linux łatwo jest korzystać z NFS z RDMA nad IB, co zapewni Ci wyjątkowo małe opóźnienia i przepustowość zbliżoną do teoretycznej prędkości linii (jeśli twoja podstawowa pamięć może zajmij się tym). Nie potrzebujesz przełącznika, tylko dwie karty InfiniBand i bezpośredni kabel (lub kabel światłowodowy InfiniBand, jeśli potrzebujesz dłuższych odległości).
Jednoportowa karta Mellanox 56 Gb / s (8x PCIe 3.0), taka jak MCB191A-FCAT, kosztuje mniej niż 700 dolarów, a 2-metrowy miedziany kabel z bezpośrednim podłączeniem kosztuje 80 dolarów.
Wydajność generalnie wydmuchuje 10 GbE z wody we wszystkich przypadkach użycia. Nie ma żadnych wad, chyba że musisz uzyskać dostęp do serwera z wielu różnych klientów, którzy nie mogą korzystać z InfiniBand (a nawet wtedy przełączniki Mellanox mogą łączyć 10GbE i 40GbE z IB, ale jest to nieco więcej inwestycji, oczywiście).
źródło
Jest to możliwe przy użyciu ZFS, jednak należy rozważyć użycie FreeBSD, ponieważ FreeBSD ma szybszy stos sieciowy. Pozwoliłoby to prawdopodobnie 100 GBit na jednym komputerze.
1100 MB / s brzmi dużo, ale można to realistycznie osiągnąć, używając tylko zwykłych dysków twardych. Mówisz, że potrzebujesz 75 TB miejsca, abyś mógł użyć 24 8 TB dysków twardych w lusterkach. Dałoby to 12-krotną prędkość zapisu na jednym dysku i 24-krotną prędkość odczytu dysku. Ponieważ dyski te mają większą prędkość zapisu niż 100 MB / s, powinno to być w stanie z łatwością obsłużyć przepustowość. Upewnij się, że nie otrzymujesz dysków SMR, ponieważ mają one znacznie wolniejsze prędkości zapisu.
ZFS tworzy sumy kontrolne dla każdego bloku. Jest to realizowane jednowątkowe. Jako taki, powinieneś mieć procesor z dość dużą częstotliwością taktowania, aby nie blokować.
Jednak dokładne szczegóły implementacji w dużej mierze zależą od szczegółów.
źródło
Włączyliśmy dane zrzutu karty sieciowej 10G do klastra Gluster za pośrednictwem ich klienta bezpieczników. Trwa to trochę dostrajania, w które nie uwierzyłbyś wydajności, jaką można osiągnąć od 3.0.
źródło