Powrót do strony głównej

AWS S3: 1 PB/s na wolnych HDD

AWS S3 zapewnia 1+ PB/s na HDD dzięki erasure coding 5/9, masywnemu paralelizowaniu i strukturze LSM. Analiza fizycznych ograniczeń dysków, mechanizmów sharding i walki z hot spots. Materiał dla specjalistów technicznych.

S3: petabajty na sekundę na dyskach twardych
Advertisement 728x90

Architektura AWS S3: prędkość petabajtowa na dyskach HDD

AWS S3 przetwarza ponad 400 bilionów obiektów, 150 milionów żądań na sekundę i szczytowy ruch przekraczający 1 PB/s. Podstawą tego systemu są dyski twarde, mimo ich ograniczeń w zakresie IOPS (ok. 120) i opóźnień do 16 ms przy odczytaniu losowym 0,5 MB. Ekonomia przechowywania na HDD pozwala przechowywać eksabajty danych po najniższej cenie: pojemność wzrosła 7,2 miliona razy, a koszt za bajt spadł 6 miliardów razy w ciągu dekad.

Fizyka dysków twardych określa wydajność: czas poszukiwania ścieżki to 8–9 ms (średnio), opóźnienie obrotowe to 4 ms, a czas transmisji to 2,5 ms. Dostęp sekwencyjny jest skuteczny (do 300 MB/s), ale dostęp losowy jest ograniczony do 32 MB/s na dysk z powodu mechanicznych ruchów głowicy.

Paralelizm przez kodowanie zredukowane

S3 kompensuje ograniczenia HDD masowym paralelizmem. Dane dzielone są na shardy za pomocą schematu kodowania zredukowanego (EC) 5 z 9: 5 fragmentów danych + 4 fragmenty kontrolne. Oznacza to 1,8x narzut zamiast 3x przy replikacji, odporność na 4 awarie i 5 źródeł do odczytu.

Google AdInline article slot

Zalety EC:

  • Rozkład obciążenia po 9 shardach minimalizuje punkty przeciążenia.
  • Odczyt równoległy z 5 shardów przyspiesza dostęp.
  • Shardowanie ułatwia zapytania zabezpieczone, aby obejść opóźnienia.

Plik 1 TB na jednym HDD daje 300 MB/s, a na 20 tys. dyskach — TB/s dzięki sumowaniu przepustowości.

Mechanizmy paralelizmu na wszystkich poziomach

Paralelizm realizowany jest w trzech płaszczyznach:

Google AdInline article slot
  • Klient-front-end: puli połączeń HTTP rozprowadzają żądania po wielu punktach końcowych, unikając przeciążeń proxy i buforów.
  • Front-end-back-end: EC sharduje obiekty na tysiące dysków w ShardStore (drzewo LSM oparte na strukturze logów).
  • Operacje PUT/GET: uploady wieloczęściowe do zapisu, GET zakresów bajtów do odczytu — podział na ponad 100 strumieni po 10 MB/s zamiast jednego gigabajta.

Zapis jest sekwencyjny (podobny do logu), odczyt wymaga losowego rozłożenia shardów, by uniknąć kolejek.

Walka z punktami przeciążenia

Z dziesiątkami milionów dysków i setkami milionów shardów na sekundę kluczowym wyzwaniem jest równomierna dystrybucja obciążenia. Jeden dysk na 32 MB/s to bottleneck, plus narzut z przebudowy.

Strategia S3:

Google AdInline article slot
  • Losowość: haszowanie shardów dla równomiernego zużycia.
  • Przebudowa: ciągłe przemieszczanie danych bez przestoju.
  • Skalowanie poziome: dodawanie dysków bez wpływu na dostępność.

Struktura LSM w ShardStore zoptymalizowana jest pod logi tylko do zapisu, gdzie PUT są szybkie, a GET — poprzez indeksy z równoległym wyszukiwaniem.

Co ważne

  • S3 osiąga 1+ PB/s na HDD dzięki EC 5/9 i paralelizmowi na ponad 100 strumieniach.
  • Średnie opóźnienie dostępu losowego I/O to 16 ms/0,5 MB, kompensowane przez 5 źródeł odczytu.
  • Ekonomia: 1,8x narzut EC vs 3x replikacja oszczędza eksabajty.
  • Losowość + przebudowa zapobiegają efektom domina od punktów przeciążenia.
  • Backend na drzewie LSM wykorzystuje pełną wydajność sekwencyjną HDD.

— Editorial Team

Advertisement 728x90

Czytaj dalej