FreeBSD i ZFS dla WordPressa – wydajność, bezpieczeństwo i praktyczne korzyści

Opublikowano: 28 maja 2026 · Autor: Marcin Szewczyk-Wilgan

Praktyczne porównanie FreeBSD z ZFS i Linuksa jako platformy hostingowej dla WordPressa. Analizujemy różnice w stosie sieciowym (kqueue vs epoll), optymalizację MySQL/MariaDB na ZFS, mechanizmy migawek i rollbacku, izolację usług w Jails z VNET i RCTL oraz realne ograniczenia ekosystemu FreeBSD.

WordPress napędza ogromną część internetu, od małych blogów po rozbudowane sklepy i serwisy korporacyjne. Niemal wszystkie działają na Linuksie: stos LAMP (Linux, Apache, MySQL, PHP) albo LEMP (z Nginxem), coraz częściej z Dockerem na pokładzie. Działa to dobrze i jest sprawdzonym standardem. Warto jednak wiedzieć, że nie jedynym.

FreeBSD z systemem plików ZFS to alternatywa, o której rzadko się mówi. Inne jądro, inny model izolacji, inny system plików, a przy odpowiedniej konfiguracji konkretne przewagi w wydajności i bezpieczeństwie. Benchmarki CIS (Center for Internet Security) dla FreeBSD 14 potwierdzają, że prawidłowo utwardzony system zapewnia znakomitą wydajność sieciową i silne mechanizmy obronne. Pytanie brzmi: czy to się opłaca i dla kogo?

Stos sieciowy: kqueue kontra epoll

Dla CMSa takiego jak WordPress szybkość serwowania treści ma kluczowe znaczenie. WordPress generuje HTML dynamicznie przez PHP, ale jednocześnie serwer musi obsłużyć mnóstwo żądań statycznych: obrazy, CSS, JavaScript. Tu liczy się to, jak jądro systemu radzi sobie z obsługą wejścia/wyjścia przy dużej liczbie jednoczesnych połączeń.

Linux używa do tego mechanizmu epoll. FreeBSD ma kqueue, i w tym obszarze różnica jest wyraźna.

Oba mechanizmy działają w czasie O(1), więc samo skalowanie zdarzeń jest porównywalne. Przewaga kqueue polega na czymś innym: oferuje ujednolicony interfejs API do obsługi zdarzeń z różnych źródeł, takich jak deskryptory plików, sygnały czy zmiany w systemie plików. Można też zgłosić wiele aktualizacji w ramach jednego wywołania systemowego. Epoll tego nie potrafi, bo tam każda zmiana to osobne wywołanie epoll_ctl(). W praktyce, przy dziesiątkach tysięcy jednoczesnych połączeń (klasyczny problem C10K), kqueue generuje mniejszy narzut na procesor.

Warto wspomnieć jeszcze o jednym: epoll nie radzi sobie z powiadamianiem o zmianach w zwykłych plikach dyskowych i wymaga, żeby dane były już w pamięci podręcznej. kqueue nie ma tego ograniczenia.

Porównanie serwerów WWW na FreeBSD

Wybór serwera WWW decyduje o tym, czy w ogóle uda się wykorzystać potencjał sieciowy FreeBSD.

Serwer WWWArchitekturaSzacunkowa wydajność (statyczna)Charakterystyka
NginxAsynchroniczny, sterowany zdarzeniami. Natywna integracja z kqueue.50 000–80 000 żądań/s (1000+ połączeń)Ekstremalnie niskie zużycie RAM (~2,5 MB na 10 tys. bezczynnych połączeń). Pełne wykorzystanie sendfile z flagą SF_NODISKIO. Obsługa SO_REUSEPORT.
LighttpdJednowątkowy, zdarzeniowy. Pełna zgodność z kqueue.40 000–60 000 żądań/sMinimalny narzut (~3 MB na 10 tys. połączeń). Dobrze sprawdza się w lekkich środowiskach izolowanych (Jails).
CaddyNapisany w Go, korzysta z abstrakcji netpoll (tłumaczonej na kqueue).20 000–40 000 żądań/sWyższy narzut przez garbage collector Go, natomiast automatycznie obsługuje certyfikaty SSL.
Apache HTTPModuł mpm_event korzysta z kqueue, ale przetwarza w przestrzeni użytkownika.15 000–30 000 żądań/sWyraźnie wyższe zużycie pamięci (>10 MB na 10 tys. połączeń). Parsowanie plików .htaccess przy każdym żądaniu dodatkowo obciąża I/O.

Szczególnie ciekawa jest współpraca Nginxa z FreeBSD w kontekście tzw. zero-copy. Dzięki wywołaniu sendfile z flagą SF_NODISKIO serwer potrafi strumieniować dane z pamięci podręcznej ZFS (ARC) bezpośrednio do gniazda sieciowego, z pominięciem przestrzeni użytkownika. To drastycznie zmniejsza obciążenie procesora i ma duże znaczenie np. dla sklepów WooCommerce, które muszą przetrwać nagłe szczyty ruchu.

FreeBSD oferuje też filtry akceptacji jądra (np. accf_http). Pozwalają one wstrzymać budzenie procesu serwera WWW do momentu, aż klient prześle kompletne żądanie HTTP. Mniej zbędnych przełączeń kontekstu, większa stabilność pod obciążeniem.

PHP na FreeBSD: bez rewolucji

Jeśli chodzi o surową wydajność PHP, różnice między FreeBSD a dobrze zoptymalizowanym Linuksem są niewielkie, rzędu 1–3% w testach syntetycznych. Rewolucji tu nie ma.

Ciekawiej robi się głębiej. Testy na procesorach AMD Threadripper pokazały, że FreeBSD znacznie lepiej radzi sobie z wielowątkowością na poziomie jądra. Operacje na semaforach wykonuje nawet dwukrotnie szybciej, a przełączanie kontekstu bywa do 15 razy szybsze niż na Linuksie. Tyle że w typowym środowisku WordPress ta przewaga jest w dużej mierze maskowana przez sam charakter przetwarzania PHP.

Dlatego kluczowe staje się dobre dostrojenie PHP-FPM. Ustawienie profilu pm = ondemand zamiast domyślnego dynamic pozwala uniknąć alokowania niepotrzebnych procesów i ograniczyć marnowanie pamięci RAM.

Optymalizacja MySQL/MariaDB na ZFS

Baza danych to najczęstsze wąskie gardło każdej instalacji WordPressa. Na Linuksie, przy tradycyjnych systemach plików (ext4, XFS) na sprzętowym RAID-zie, administrator musi pilnować synchronizacji rozmiarów bloków, żeby uniknąć amplifikacji zapisu. To dodatkowa warstwa złożoności.

ZFS podchodzi do tego zupełnie inaczej dzięki mechanizmowi Copy-on-Write (CoW). Aktualizacja rekordu nie nadpisuje starych danych. System zapisuje nowe informacje w wolnych sektorach i atomowo aktualizuje wskaźniki. Zapis jest kompletny albo wcale się nie odbywa. Nie ma stanów pośrednich, nie ma uszkodzonych stron.

Żeby jednak w pełni to wykorzystać, trzeba wyłączyć w MySQL/MariaDB kilka funkcji, które ZFS realizuje lepiej na własnym poziomie:

ParametrWartośćPo co
recordsize (ZFS)16KWyrównanie do rozmiaru stron InnoDB (16 KB). Przy domyślnych 128 KB blokach ZFS występuje kosztowna amplifikacja odczytu.
innodb_doublewrite0Chroni przed uszkodzeniami przy zaniku zasilania na ext4/XFS. Na ZFS jest zbędne, bo mechanizm CoW jest z natury atomowy. Wyłączenie redukuje IOPS o połowę.
innodb_checksum_algorithmnoneZFS sam weryfikuje sumy kontrolne każdego bloku. Drugie sprawdzanie po stronie InnoDB to strata cykli procesora.
innodb_flush_neighbors0Optymalizacja dla dysków talerzowych, jednoczesny zapis sąsiednich bloków. Na SSD/NVMe z ZFS tylko spowalnia.
primarycache (ZFS)metadataInnoDB ma własny bufor w RAM (Buffer Pool). Bez tego ustawienia te same dane są buforowane podwójnie.
innodb_use_native_aio0Eliminuje warstwę kompatybilności asynchronicznego I/O, która na ZFS jest zbędna.

Co to daje w praktyce? Testy na infrastrukturze AWS EBS (prezentowane m.in. przez Percona) wykazały, że tak dostrojony MySQL na ZFS skraca łączny czas wykonywania zapytań o ok. 22% w porównaniu z ext4 na RAID10. Największy zysk widać przy operacjach DELETE (ok. 40% szybciej) i INSERT (ok. 15%).

Warto dodać kwestię kompresji. Zamiast używać wbudowanej kompresji MySQL, lepiej włączyć natywny algorytm LZ4 na poziomie ZFS (compression=lz4). Współczesne procesory dekompresują strumień LZ4 praktycznie bez narzutu, a efekt to podwojenie prędkości odczytów i redukcja zajmowanego miejsca na dysku nawet o 50%. Przy cenach za storage w chmurze to realna oszczędność.

Trzeba uczciwie powiedzieć, że nowsze testy Percona z 2021 r. pokazują, iż gap wydajnościowy między ZFS a ext4 się zmniejszył. Przy dobrym strojeniu obu stron wyniki bywają porównywalne. Przewaga ZFS leży dziś bardziej w dodatkowych funkcjach (kompresja, snapshoty, integralność danych) niż w surowej prędkości.

Migawki, klony i zakładki: zarządzanie danymi na ZFS

Tradycyjne tworzenie kopii zapasowych WordPressa – nawet z narzędziami typu Duplicator czy WP Staging – opiera się na eksporcie bazy danych i plików, który trwa minuty lub dłużej. W tym czasie użytkownicy mogą modyfikować dane, co grozi niespójną kopią. ZFS rozwiązuje ten problem na poziomie systemu plików.

Migawki (Snapshots)

Polecenie zfs snapshot przechwytuje dokładny stan całego systemu plików. Trwa to ułamek sekundy i w momencie utworzenia nie zajmuje żadnego dodatkowego miejsca na dysku. Dopiero gdy dane zaczną się zmieniać, migawka zaczyna „rosnąć", zachowując stare bloki.

Co ważne, migawka jest niemutowalna (immutable). Nie da się jej zmodyfikować ani zaszyfrować, co czyni ją skuteczną obroną przed ransomware. Jeśli aktualizacja WordPressa pójdzie źle, jedno polecenie zfs rollback przywraca serwer do stanu sprzed awarii.

Klony

Testowanie zmian w środowisku preprodukcyjnym (staging) zwykle wymaga skopiowania całej bazy, często wielu gigabajtów danych. To trwa i marnuje dysk.

Klon ZFS to edytowalna kopia migawki, która na starcie nie zajmuje dodatkowego miejsca. Współdzieli bloki z oryginałem, a nowe miejsce jest alokowane tylko dla zmienionych danych. Można więc błyskawicznie postawić pełnowymiarowe środowisko testowe, przetestować destrukcyjną migrację albo nową wersję wtyczki, a potem po prostu usunąć klon.

Zakładki (Bookmarks)

Przy replikacji migawek do zewnętrznej serwerowni pojawia się problem: na serwerze głównym gromadzą się stare migawki, których nie można usunąć, bo zależą od nich łańcuchy replikacyjne.

Zakładki ZFS rozwiązują to sprytnie. Nie rezerwują miejsca na dane, a jedynie zapisują wskaźniki (identyfikatory GUID i numery logów transakcji). Dzięki temu można usunąć ciężkie, przestarzałe migawki na serwerze głównym, jednocześnie kontynuując przyrostową replikację do zapasowej lokalizacji.

FreeBSD Jails: izolacja zamiast konteneryzacji

WordPress pada ofiarą ataków najczęściej przez dziurawe wtyczki, nie przez luki w rdzeniu. Typowy scenariusz: napastnik uzyskuje zdalne wykonanie kodu (RCE) przez zaniedbany plugin. W tym momencie liczy się to, czy infrastruktura potrafi skutecznie odizolować intruza.

Na Linuksie standardem jest Docker albo Podman, opcjonalnie z orkiestracją Kubernetes. Te narzędzia działają w przestrzeni użytkownika i wprowadzają własną warstwę złożoności, a czasem i własne podatności.

FreeBSD podchodzi do tego inaczej. Jails to wirtualizacja na poziomie jądra systemu (OS-level virtualization), koncepcyjnie bliższa chroot na sterydach niż kontenerom w dockerowym sensie. Jail zachowuje się jak zamknięty, autonomiczny system, ale jest izolowany bezpośrednio przez jądro hosta.

Jak działa izolacja w Jails

Nawet jeśli napastnik przejmie uprawnienia root wewnątrz Jaila, jądro FreeBSD automatycznie blokuje mu m.in.:

  • Dynamiczne ładowanie modułów systemowych.
  • Bezpośredni dostęp do sprzętu i surowych gniazd komunikacyjnych.
  • Wywołania systemowe modyfikujące ustawienia globalne maszyny.

To nie jest kwestia konfiguracji. Te ograniczenia są wpisane w jądro. Administrator Jaila to po prostu nie jest ten sam root co na hoście.

Zarządzanie Jailami można zautomatyzować frameworkami takimi jak BastilleBSD, co eliminuje potrzebę stosowania ciężkich narzędzi w stylu Kubernetes. Jails natywnie współpracują z ZFS, więc tworzenie nowego Jaila ze snapshota to kwestia sekund.

Segmentacja sieci: VNET

Każdy Jail może mieć przydzielony własny, w pełni odizolowany stos sieciowy dzięki mechanizmowi VNET. Oznacza to osobne tablice routingu, osobny interfejs pętli zwrotnej, osobna zapora ogniowa (pf lub ipfw). Nawet gdyby atakujący przełamał izolację samego Jaila, musiałby jeszcze sforsować wirtualną topologię sieciową, żeby dotrzeć do hosta.

Zarządzanie zasobami: RCTL i RACCT

W hostingu współdzielonym regularnie pojawia się problem „głośnego sąsiada". Jeden sklep WooCommerce z niewydajnymi zapytaniami SQL potrafi sparaliżować działanie wszystkich pozostałych stron na serwerze.

FreeBSD ma na to framework RACCT/RCTL. Po włączeniu w konfiguracji jądra (kern.racct.enable=1) administrator może nakładać precyzyjne limity zasobów na poszczególne Jaile w czasie rzeczywistym, bez restartowania usług:

  • Ograniczenie CPU do 80%: rctl -a jail:NAZWA:pcpu:deny=80
  • Limit pamięci RAM na 1 GB: rctl -a jail:NAZWA:memoryuse:deny=1G

Plik konfiguracyjny /etc/rctl.conf można zabezpieczyć (chmod 600), żeby współdzieleni klienci nie mogli podejrzeć ustawionych limitów.

Linux ma oczywiście swój odpowiednik: cgroups (w wersji v2 ujednolicone i dojrzałe). Docker i systemd korzystają z nich automatycznie, co w praktyce oznacza, że na Linuksie limitowanie zasobów jest wbudowane w codzienne narzędzia i nie wymaga dodatkowej konfiguracji jądra. RCTL robi to samo, ale na niższym poziomie abstrakcji. Przewaga FreeBSD nie polega tu na samym mechanizmie limitowania, lecz na tym, że RCTL współpracuje bezpośrednio z Jailami i ZFS jako spójny, zintegrowany stos, bez potrzeby nakładania na siebie osobnych warstw (Docker + cgroups + overlay filesystem).

Dostawcy VPS z obsługą FreeBSD

FreeBSD to nisza wśród dostawców chmurowych i hostingu. Poniżej krótkie zestawienie sprawdzonych dostawców, u których konfigurujemy serwery FreeBSD pod WordPress i WooCommerce. Pomijamy popularnego Contabo – nasze testy wykazały niestabilność stosu sieciowego FreeBSD na ich platformie.

DostawcaWsparcie FreeBSDCena wejściaDla kogo
WebH
rekomendacja WebOptimo
VPS KVM z możliwością instalacji FreeBSD. Dyski NVMe SSD, backup co godzinę.Od ok. 30 zł/mies.Polskie firmy szukające wydajnego VPS z krajowym wsparciem technicznym.
AwHostFreeBSD w ofercie dystrybucji VPS KVM. Ochrona AntyDDoS, lokalizacja Polska i Francja.Od ok. 17 zł/mies.Małe projekty, serwery gier, środowiska wymagające polskiego IP i AntyDDoS.
OVHcloud
rekomendacja WebOptimo
Szablony FreeBSD w panelu KVM i na serwerach dedykowanych. Nielimitowany transfer. Datacenter w Polsce (Warszawa).Od ok. 30 zł/mies.Środowiska produkcyjne wymagające stabilnych łączy i zgodności z GDPR.
VultrNajlepsze wsparcie FreeBSD w branży. Gotowe obrazy FreeBSD 14.x, instalacja jednym kliknięciem, pełna obsługa własnych ISO.Od ok. 5,50 €/mies. (shared), od ok. 22 €/mies. (NVMe)Inżynierowie szukający pełnej kompatybilności i szybkiego wdrażania.
HetznerObrazy FreeBSD w panelu, API kompatybilne z FreeBSD, tryb ratunkowy dla serwerów dedykowanych.Od ok. 4,50 €/mies. (2 vCPU, 4 GB RAM, 20 TB transferu)Klastry Jails, serwisy z dużym ruchem. Bezkonkurencyjny stosunek ceny do wydajności.

Wyzwania i ograniczenia

Artykuł byłby nieuczciwy bez omówienia tego, co sprawia, że FreeBSD mimo swoich zalet nie dominuje na rynku hostingowym.

Brak paneli zarządzania. cPanel, DirectAdmin i inne popularne panele hostingowe są projektowane pod Linuksa. Ich odpowiedniki dla FreeBSD albo nie istnieją, albo są słabo utrzymywane (np. Plesk zrezygnował z rozwijania swojego narzędzia dla FreeBSD). Obsługa FreeBSD opiera się głównie na terminalu i skryptach powłoki. Nie ma GUI do konfiguracji VNET czy zapory pf, wszystko robi się z konsoli.

Niedobór specjalistów. Rynek pracy jest zdominowany przez inżynierów znających Linuksa, Dockera i Kubernetes. Ludzi, którzy potrafią administrować FreeBSD na poziomie produkcyjnym, jest znacznie mniej. Dla agencji i korporacji budujących zespoły to poważna bariera.

Mniejszy ekosystem oprogramowania. Wiele popularnych narzędzi DevOps i monitoringu (Prometheus exporters, Ansible modules, Terraform providers) jest rozwijanych z myślą o Linuksie. Na FreeBSD część z nich wymaga dodatkowej konfiguracji, a niektóre po prostu nie działają. To samo dotyczy sterowników sprzętowych, szczególnie dla nowszych kart sieciowych i kontrolerów NVMe. Przed wyborem FreeBSD warto sprawdzić, czy cały planowany stos narzędziowy jest kompatybilny.

Podsumowanie

FreeBSD z ZFS to rozwiązanie, które w konkretnych scenariuszach oferuje realne przewagi nad standardowym stosem linuksowym.

Po pierwsze, wydajność bazy danych. ZFS z odpowiednio dostrojonym InnoDB skraca czas wykonywania zapytań, a natywna kompresja LZ4 pozwala zaoszczędzić do 50% miejsca na dysku bez uszczerbku na prędkości odczytu.

Po drugie, bezpieczeństwo. FreeBSD Jails z VNET tworzą izolację na poziomie jądra, znacznie głębszą niż standardowe kontenery. Nawet po przejęciu WordPressa atakujący pozostaje skutecznie odizolowany.

Po trzecie, zarządzanie danymi. Migawki ZFS, klony i zakładki przenoszą kopie zapasowe i środowiska stagingowe na zupełnie inny poziom: są błyskawiczne, spójne i odporne na ransomware.

Na rynku taniego hostingu współdzielonego FreeBSD nie znajdzie zastosowania – Linux z cPanelem i wyspecjalizowanymi dystrybucjami jak CloudLinux (z CageFS, LVE i MySQL Governor) jest tam po prostu łatwiejszy i tańszy w utrzymaniu. Natomiast dla wymagających środowisk biznesowych, takich jak duże sklepy WooCommerce, serwisy instytucji finansowych czy platformy obsługujące setki tysięcy zapytań SQL, infrastruktura oparta na FreeBSD oferuje poziom bezpieczeństwa i stabilności, który trudno osiągnąć na standardowym stosie.

Gdyby nie dominacja Linuksa w ekosystemie hostingowym i chmurowym, FreeBSD zdecydowanie byłby naszym systemem pierwszego wyboru!

W WebOptimo wybieramy FreeBSD wszędzie tam, gdzie liczy się przewidywalna wydajność, natywna izolacja usług i niezawodna ochrona danych. Natywny firewall PF, system plików ZFS ze snapshotami i konteneryzacja Jails to narzędzia, których żadna dystrybucja Linuksa nie oferuje w tak zintegrowanej formie. Jeśli rozważasz FreeBSD w środowisku produkcyjnym lub potrzebujesz audytu istniejącej infrastruktury, skontaktuj się z nami. Sprawdź również nasze usługi administracji FreeBSD, administracji serwerem, administracji Linux, administracji MySQL oraz administracji PostgreSQL.

Najczęściej zadawane pytania

Tak, FreeBSD z ZFS to sprawdzona platforma dla wymagających instalacji WordPress. Oferuje izolację na poziomie jądra (Jails), atomowe migawki ZFS, natywną kompresję LZ4 i wydajny stos sieciowy kqueue. Wymaga jednak większej wiedzy administracyjnej niż standardowy Linux z cPanelem.

ZFS z mechanizmem Copy-on-Write eliminuje potrzebę podwójnego zapisu InnoDB (doublewrite buffer), weryfikuje sumy kontrolne na poziomie systemu plików i oferuje natywną kompresję LZ4. Po odpowiednim dostrojeniu (recordsize=16K, wyłączenie doublewrite i checksum) testy Percona wykazały skrócenie czasu zapytań o ok. 22% w porównaniu z ext4.

Jails to wirtualizacja na poziomie jądra FreeBSD, koncepcyjnie bliższa chroot na sterydach niż kontenerom Dockera. Nawet root wewnątrz Jaila nie może ładować modułów jądra, uzyskać bezpośredniego dostępu do sprzętu ani modyfikować ustawień globalnych hosta. Docker działa w przestrzeni użytkownika Linuksa i wymaga dodatkowych mechanizmów (namespaces, cgroups) do osiągnięcia izolacji.

Tak. Migawki ZFS są niemutowalne (immutable), co oznacza, że nie da się ich zmodyfikować ani zaszyfrować po utworzeniu. Przywrócenie stanu sprzed ataku wymaga jednego polecenia zfs rollback. Migawki w momencie utworzenia nie zajmują dodatkowego miejsca na dysku.

Na polskim rynku FreeBSD oferują m.in.: WebH, AwHost, eXone oraz OVHcloud. Wśród dostawców zagranicznych wyróżniają się Vultr (gotowe obrazy FreeBSD 14.x, instalacja jednym kliknięciem, pełna obsługa własnych ISO) i Hetzner (bezkonkurencyjny stosunek ceny do wydajności, obrazy FreeBSD w panelu i wsparcie API).

Brak paneli zarządzania (cPanel, DirectAdmin), mniejsza liczba specjalistów na rynku pracy i konieczność administracji z poziomu terminala. Popularne narzędzia DevOps (Docker, Kubernetes) nie działają natywnie na FreeBSD, co wymaga zastąpienia ich Jailami z BastilleBSD.

Potrzebujesz wsparcia z infrastrukturą?

Jeśli po lekturze publikacji masz pytania lub potrzebujesz audytu, optymalizacji albo wdrożenia – jesteśmy do dyspozycji. Bez zobowiązań, konkretna propozycja po analizie.

Telefon

+48 608 271 665

Pn–Pt, 8:00–16:00

E-mail

kontakt@weboptimo.pl

Odpowiadamy w ciągu 24h

Firma

WebOptimo

NIP: 6391758393