Wymagana prędkość zapisu: możliwości 1,1 GB / s?

29

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)
SvennD
źródło
8
MB jak w megaBIT lub megaByte? Użyj MBi MiBi MByte lub MB, aby potępić bajty. Również 2 linie 10 Gbit dają 2400 MByte / s
mzhaase
1
Teraz jest lepiej, dzięki. Więcej pytań. Maksymalna wydajność wynosi 1,1 GB / s, ale jaka jest średnia? Jak długo trwają te kolce? Jaka jest minimalna przepustowość kontynentu, którą jesteś skłonny zaakceptować? Czy napisz jeden duży plik czy wiele małych? Jaki protokół będzie używany? Jakiego rodzaju redundancji chcesz? Brzmi jak jakiś sprzęt medyczny lub naukowy, czy możesz połączyć arkusz danych? Ponieważ już korzystasz z ZFS, możesz skontaktować się ze specjalistyczną firmą zajmującą się pamięcią masową ZFS, której jest kilka. Mogą określić system dla ciebie.
mzhaase
2
Czy to naprawdę musi być zrobione za pomocą jednej maszyny? Równoważenie obciążenia wielu komputerów może to ułatwić. Możesz użyć pamięci współdzielonej lub skonsolidować dane później. W AWS możesz użyć ELB, automatycznego skalowania, wielu instancji EC2 i EFS, ale wygląda na to, że potrzebujesz sprzętu. Twoje pytanie nie opisuje dobrze przypadku użycia.
Tim
1
Tylko uwaga: nie potrzebujesz „szczytowej” wydajności - potrzebujesz „trwałej” wydajności 1,1 GBps
jsbueno
1
@ jsbueno Masz rację, jednak możemy wybrać, ile głowic zapisu ma zostać aktywowanych, więc 1 GB / s to „najgorszy przypadek”, ale biorąc pod uwagę, że może to potrwać godziny, jest to trwała wydajność.
SvennD,

Odpowiedzi:

18

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.

HP ProLiant DL380 Gen9 2U Rackmount
2 x Intel E5-2620v3 or v4 CPUs (or better)
128GB RAM
2 x 900GB Enterprise SAS OS drives 
12 x 8TB Nearline SAS drives
1 or 2 x Intel P3608 1.6TB NVMe drives

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.

ewwhite
źródło
dzięki ewwwite; użylibyśmy NFS i jest tylko jeden klient (maszyna) opcjonalnie użylibyśmy go jako urządzenia do odczytu z naszego klastra. (ale jakie przetwarzanie lub w jaki sposób jest nieznane) Mamy „przestrzeń” dostępną na serwerach pamięci RAID 6.
SvennD
@ SvvennD Jeśli jest to NFS i synchroniczne podłączanie, 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? To kolejny czynnik. Jednak zakres tego wykracza poza porady, które mógłbym dać na forum online za darmo. Moje dane kontaktowe są dostępne w moim profilu ServerFault . Skontaktuj się ze mną, jeśli chcesz dalej omawiać.
ewwhite
5
ZFS jest więcej niż zdolny do tego, o co prosisz. Pierwszą kwestią będzie upewnienie się, że twój sprzęt jest w stanie to zrobić. Jeśli nie będziesz ostrożny, przypadkowo stworzysz wąskie gardło mocniejsze niż 1 GB / s na poziomie adaptera lub płyty montażowej. Upewnij się, że masz rację, a następnie zapytaj, jak uniknąć gotchas po stronie ZFS.
Jim Salter
@ SvennD Edytowane z podstawową specyfikacją projektu i przybliżonymi kosztami.
ewwhite
Myślę, że poleciłbym Oracle X6-2L zamiast serwera HP. Serwer Oracle jest dostarczany z czterema 10 GB portami sieciowymi gotowymi do użycia. Z mojego doświadczenia wynika, że ​​HP zabija cię na śmierć za ILOM, licencjonowanie oprogramowania ILOM itp. Do tego stopnia, że ​​serwer HP jest droższy niż równoważne urządzenie Oracle. Moje doświadczenie mówi mi również, że pudełko Oracle będzie lepsze niż pudełko HP - i będzie znacznie mniej prawdopodobne niż pudełko HP, aby mieć jedno z wąskich gardeł sprzętowych, o których wspomina @JimSalter. Tak, kupowanie od Oracle może być bolesne.
Andrew Henle,
23

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:

  • użyj XFS na surowej partycji lub grubym woluminie LVM (nie używaj cienkich woluminów)
  • dostosuj rozmiar ioblocka, aby skutecznie radzić sobie z dużymi zapisami danych
  • użyj sprzętowej karty RAID z pamięcią podręczną zapisu chronioną przed utratą zasilania; jeśli korzystanie ze sprzętowej macierzy RAID nie wchodzi w rachubę, użyj programowego schematu RAID10 (unikając trybu RAID opartego na parzystości)
  • użyj dwóch interfejsów sieciowych 10 Gb / s z LACP (agregacja łączy)
  • pamiętaj, aby włączyć Jumbo Frames
  • kiedy zamierzasz używać NFS, rozważ użycie pNFS (v4.1) w celu zwiększenia skalowalności
  • na pewno wiele innych rzeczy ...
Shodanshok
źródło
3
Ponadto, jeśli używasz XFS, umieść dziennik na parze SSD RAID1.
TB
2
Jeśli używasz karty RAID z chronioną przed utratą zasilania pamięcią podręczną zapisu, dziennik można pozostawić w głównej tablicy: pamięć zapisu pochłonie i połączy zapis zapisów. Co więcej, zgodnie z tym, co opisuje OP, obciążenie metadanymi powinno być dość niskie w porównaniu do przesyłania strumieniowego danych.
shodanshok
2
ZFS działałby dobrze i może działać znacznie szybciej niż XFS. Jasne, musisz to odpowiednio skonfigurować, mieć pamięć RAM i dyski SSD dla ZIL i SLOG, ale to prawdopodobnie nie ma znaczenia przy wymaganych prędkościach.
John Keates,
3
Uważam XFS w systemie Linux za starą technologię. OP może równie łatwo uruchomić ZFS na sprzętowej macierzy RAID. Powodem, dla którego zalecam ZFS, jest umożliwienie wchłaniania przychodzących zapisów synchronicznych NFS przez SLOG przy niskim opóźnieniu bez potrzeby posiadania puli wszystkich dysków SSD.
ewwhite
6
Shelby Cobra to „stara technologia”, ale nadal może palić większość samochodów z bramy. ZFS nigdy nie został zaprojektowany jako wysokowydajny system plików i chociaż możliwe jest dostrojenie go tak, aby był niesamowicie szybki przy określonym obciążeniu, nie jest do niego domyślnie przeznaczony. Zajmie to więcej sprzętu, dużo więcej pamięci i dużo tuningu, aby pokonać to, co XFS daje za darmo z kilkoma opcjami montowania plików i formatowania.
TB
4

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.

Siekacz 3
źródło
1
Tak, ale jak przechowywać ~ 50 TB na NVMe? Błystki są tanie, więc jak się połączymy, aby utrzymać prędkość na poziomie ...
SvennD
Chodzi o to, że realistycznie masz tylko 4 x 4 TB na jednym serwerze, używam wielu serwerów, prawdopodobnie nie możesz? w przeciwnym razie jest to po prostu ładunek 2,5 "10krpm w R10
Chopper3
Nie chcę, jest bardziej podobny, nie będziemy potrzebować tych specyfikacji poza wejściem do drzwi, a ja nie chcę koszmaru z powodu obciążenia wielu serwerów. tylko dla jednej maszyny. Czy R10 byłby wystarczająco szybki? (harware raid?)
SvennD
Mamy pudełko z systemem Windows 2012R2, które zbudowaliśmy z zestawu zapasowego, który nie był używany, używamy go jako NAS, ma wewnętrznie 6 dysków SSD SAS 400 GB, 8 x półki D2600 każda z 25 x 900 GB dyskami SAS 10k 10k i D6000 półka z dyskami 70 x 4 TB, które mogą łatwo zalać kartę sieciową 10 Gb / s - nie próbowałem jeszcze z kartą sieciową 25 Gb / s.
Chopper3
1
@MSalters Istnieje wiele napędów PMR 8/10 TB (bez SMR) o prędkości transferu w zakresie 200 MB / s. Macierz dysków 12 lub 16, zarówno w RAID10, jak i RAID6, powinna z łatwością przekroczyć wymaganą prędkość transferu 1,1 GB / s.
shodanshok
2

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).

MSalters
źródło
4
Cóż, przez „standardowy produkt” oznacza „czarne pudełko oprogramowania” z 20 x 600 gb sas 15k i 3 x dyskami SSD dla przedsiębiorstw. To uczciwa oferta, mamy podobnego jednego z naszych dostawców sprzętu, ale koszt licencji jest dla mnie szalony z powodu czegoś, co jest zasadniczo bezpłatne (ZFS) Dziękujemy za udostępnienie kompilacji! (ładny link)
SvennD
2

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
2

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).

Joakim Ziegler
źródło
1

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.

mzhaase
źródło
12
„FreeBSD ma szybszy stos sieciowy” [wymaga cytowania]
Jim Salter
Dokładnie. Linux jest całkiem zdolny.
ewwhite
1

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.

pozcircuitboy
źródło