top of page

Śledź nasze wpisy w social media

  • Instagram
  • Facebook
  • Twitter
  • LinkedIn
  • YouTube

Dlaczego używanie CEPH w Proxmox to może być błąd, który może cię drogo kosztować

  • Zdjęcie autora: Piotr Kośka
    Piotr Kośka
  • 1 dzień temu
  • 3 minut(y) czytania

Ceph na sieci 1 Gb/s – dlaczego to zły pomysł, szczególnie z dyskami NVMe?


W świecie wirtualizacji coraz częściej spotykamy się z serwerami wyposażonymi w bardzo szybkie dyski NVMe oraz rozwiązaniami typu Software Defined Storage, takimi jak Ceph. Wielu administratorów budujących homelab lub małe środowisko produkcyjne zakłada, że skoro dyski oferują kilka gigabajtów na sekundę transferu, to cały system będzie działał równie szybko. Niestety w przypadku Cepha wydajność storage zależy nie tylko od dysków, ale przede wszystkim od sieci.


W tym artykule wyjaśnię, dlaczego budowa klastra Ceph na sieci 1 Gb/s jest zwykle złym pomysłem oraz jakie wymagania sieciowe warto uwzględnić podczas projektowania infrastruktury.


Jak szybkie są współczesne dyski NVMe?

Nowoczesne dyski NVMe PCIe 4.0 osiągają:


  • odczyt sekwencyjny: 7000 MB/s

  • zapis sekwencyjny: 5000–6500 MB/s

  • setki tysięcy operacji IOPS


W przypadku lokalnego magazynu danych ZFS w Proxmox pojedyncza maszyna wirtualna może bez problemu osiągać transfery rzędu kilku gigabajtów na sekundę.

Dla przykładu konfiguracja oparta o dwa dyski NVMe pracujące w mirrorze ZFS może zapewnić:


  • odczyt: 4–6 GB/s

  • zapis: 2–4 GB/s

  • bardzo niskie opóźnienia


W takim scenariuszu ograniczeniem staje się zwykle procesor lub aplikacja uruchomiona w maszynie wirtualnej, a nie sam storage.


Dlaczego Ceph potrzebuje szybkiej sieci?

Ceph działa zupełnie inaczej niż lokalny ZFS.

W przypadku lokalnego storage dane zapisywane są bezpośrednio na dyskach znajdujących się w tym samym serwerze. Ceph jest natomiast rozproszonym systemem pamięci masowej. Dane zapisane przez maszynę wirtualną muszą zostać przesłane przez sieć do innych węzłów klastra. Dodatkowo większość instalacji Ceph wykorzystuje replikację o wartości size=3. Oznacza to, że każda porcja danych jest przechowywana na trzech różnych serwerach. W praktyce wygląda to następująco:


  1. Maszyna wirtualna zapisuje dane.

  2. Dane trafiają do pierwszego OSD.

  3. Następuje replikacja do kolejnych dwóch OSD.

  4. Ceph potwierdza zapis.


Każda operacja wymaga więc dodatkowej komunikacji sieciowej.


Problem sieci 1 Gb/s

Sieć 1 Gb/s oferuje teoretycznie około 125 MB/s transferu.

W praktyce najczęściej uzyskujemy:


  • 100–115 MB/s rzeczywistej przepustowości.


Dla porównania pojedynczy nowoczesny dysk NVMe może osiągać ponad 7000 MB/s odczytu.

Oznacza to, że:


  • dysk jest około 60 razy szybszy od sieci,

  • Ceph nie wykorzysta potencjału NVMe,

  • wąskim gardłem staje się infrastruktura sieciowa.


W efekcie wydajność całego klastra zostaje ograniczona do możliwości pojedynczego interfejsu sieciowego.


Jak wygląda to w praktyce?

Przy sieci 1 Gb/s maszyny wirtualne korzystające z Ceph często osiągają:


  • odczyt: 80–120 MB/s

  • zapis: 30–100 MB/s


Są to wartości porównywalne z klasycznym dyskiem HDD lub przeciętnym dyskiem SATA SSD.


Innymi słowy – inwestujemy w bardzo szybkie dyski NVMe, a otrzymujemy wydajność przypominającą rozwiązania sprzed wielu lat.


Nie tylko transfer ma znaczenie

W przypadku storage dla maszyn wirtualnych równie ważne są opóźnienia.

Każda operacja zapisu w Ceph wymaga:


  • komunikacji pomiędzy węzłami,

  • potwierdzenia zapisu,

  • synchronizacji replik.


Im wolniejsza sieć, tym większe opóźnienia.

Skutki są szczególnie widoczne dla:


  • baz danych,

  • serwerów SQL,

  • systemów ERP,

  • aplikacji generujących dużą liczbę małych operacji I/O.


Nawet jeśli transfer wydaje się wystarczający, wzrost opóźnień może znacząco obniżyć liczbę operacji IOPS.


Jaką sieć wybrać dla Ceph?

Dla współczesnych dysków NVMe można przyjąć następujące zalecenia:


Prędkość sieci

Ocena

1 Gb/s

Niepolecana

2.5 Gb/s

Tylko do testów

5 Gb/s

Minimum dla homelabu

10 Gb/s

Rozsądne minimum

25 Gb/s

Bardzo dobra konfiguracja

40 Gb/s

Idealna dla NVMe


W praktyce większość administratorów budujących klastry Ceph na NVMe wybiera dziś 10 GbE jako absolutne minimum.


Osobna sieć dla Ceph czy VLAN?

Często pojawia się pytanie, czy wystarczy wydzielić ruch Cepha za pomocą VLAN-ów.

Przykładowo:


  • VLAN dla maszyn wirtualnych,

  • VLAN dla zarządzania,

  • VLAN dla Ceph.


Choć takie rozwiązanie poprawia organizację sieci, nie zwiększa dostępnej przepustowości.

Jeżeli wszystkie VLAN-y korzystają z jednego interfejsu 10 Gb/s, nadal mamy tylko 10 Gb/s do podziału pomiędzy:


  • ruch maszyn wirtualnych,

  • migracje,

  • backupy,

  • replikację Cepha,

  • zarządzanie klastrem.


Dlatego najlepszym rozwiązaniem jest zastosowanie osobnych interfejsów sieciowych dla:


  • ruchu maszyn wirtualnych,

  • sieci zarządzającej,

  • ruchu storage Ceph.


Pozwala to uzyskać niższe opóźnienia, większą stabilność oraz lepsze wykorzystanie możliwości dysków NVMe.


Podsumowanie

Ceph to znakomite rozwiązanie do budowy wysokodostępnego magazynu danych dla Proxmox VE. Jednak nawet najszybsze dyski NVMe nie zapewnią wysokiej wydajności, jeśli infrastruktura sieciowa stanie się wąskim gardłem.


Budowa klastra Ceph na sieci 1 Gb/s ma sens wyłącznie w celach edukacyjnych lub testowych. W środowiskach produkcyjnych oraz bardziej rozbudowanych homelabach warto traktować 10 Gb/s jako absolutne minimum, a przy wykorzystaniu szybkich dysków NVMe rozważyć sieci 25 Gb/s lub 40 Gb/s.


Pamiętajmy, że w przypadku Cepha to nie dyski są najczęściej ograniczeniem. Najczęściej jest nim sieć.

Komentarze


Śledź nasze wpisy w social media

  • Instagram
  • Facebook
  • Twitter
  • LinkedIn
  • YouTube

Poznaj terraform jedno z najepszych narzedzi do zarządzania infrastrukturą w kodzie (IaC) - w kursie tym przeprowadzam Cię przez proces instalacji i konfiguracji tego narzędzia.

bottom of page