KVM (Kernel-based Virtual Machine) to technologia wirtualizacji wbudowana w jądro Linuksa. Na VPS Linux Infrawire oznacza to, że serwer zachowuje się jak prawdziwa maszyna z własnym jądrem, a nie jak zwykły folder odizolowany w cudzym systemie. Ten poradnik wyjaśnia różnicę względem technologii kontenerowych i pokazuje, jak samodzielnie to sprawdzić.
📋 Wymagania wstępne
- VPS z Linuksem (Ubuntu 24.04, Debian 12, AlmaLinux 9 lub Rocky Linux 9)
- Dostęp SSH jako root lub użytkownik z
sudo - Podstawowa znajomość wiersza poleceń
1. Jak działa KVM
KVM zamienia jądro Linuksa fizycznego hosta w hipernadzorcę. Każda maszyna wirtualna to zwykły proces zarządzany przez QEMU, ale widzi emulowany sprzęt: procesor, pamięć RAM, dysk i kartę sieciową. Dzięki rozszerzeniom wirtualizacji procesora (Intel VT-x, AMD-V) kod gościa działa niemal z natywną prędkością.
Wewnątrz maszyny instalujesz kompletny system operacyjny z własnym jądrem, własnym systemem init i własnymi procesami. Z Twojego punktu widzenia to serwer dedykowany.
2. KVM a OpenVZ i LXC
Technologie kontenerowe działają inaczej:
- OpenVZ i LXC: wszystkie kontenery współdzielą jądro hosta. Dostajesz tylko wyizolowaną przestrzeń użytkownika. Nie zmienisz jądra, nie załadujesz modułów ani nie wybierzesz wersji jądra.
- KVM: pełna wirtualizacja. Każdy VPS uruchamia własne jądro i ma własny przydział pamięci oraz dysku.
Kontener jest lżejszy, ale ogranicza go to, na co pozwala jądro hosta. VPS na KVM daje swobodę kosztem nieco większego zużycia pamięci.
3. Dlaczego to ważne na VPS
Z własnym jądrem możesz:
- Ładować moduły jądra, takie jak WireGuard,
br_netfilterczynf_conntrack - Uruchamiać Dockera i inne silniki kontenerów bez ograniczeń (cgroups, system plików overlay, iptables)
- Dostrajać system przez
sysctl(bufory sieciowe, przekazywanie IP, kontrola przeciążenia BBR) - Używać własnej zapory, pliku wymiany (swap) i dowolnego systemu plików
- Zainstalować inną wersję jądra ze swojej dystrybucji
Bash# Wyświetl uruchomione jądro uname -r # Wyświetl parametry jądra, które możesz zmieniać sudo sysctl net.ipv4.ip_forward net.ipv4.tcp_congestion_control
4. Sprawdź, czy działasz na KVM
Najprościej użyć systemd-detect-virt:
Bashsystemd-detect-virt # Oczekiwany wynik: kvm
Jeśli polecenie wypisze openvz, lxc lub docker, jesteś w kontenerze. none oznacza maszynę fizyczną.
Możesz potwierdzić to przez lscpu:
Bashlscpu | grep -iE 'hypervisor|virtualization type' # Hypervisor vendor: KVM # Virtualization type: full
I przez komunikaty startowe jądra:
Bashsudo dmesg | grep -i -E 'kvm|hypervisor' # Hypervisor detected: KVM
Wreszcie hostnamectl pokazuje linię Virtualization: kvm.
5. Przetestuj, co daje KVM
Sprawdź, czy możesz załadować moduł i uruchomić kontenery:
Bash# Ubuntu 24.04 / Debian 12: moduł WireGuard sudo modprobe wireguard lsmod | grep wireguard # Zainstaluj Dockera z repozytorium dystrybucji i uruchom kontener testowy sudo apt update && sudo apt install -y docker.io sudo docker run --rm hello-world
W AlmaLinux 9 lub Rocky 9 narzędzia zainstalujesz poleceniem sudo dnf install -y wireguard-tools, a silnik Dockera według oficjalnej dokumentacji (docs.docker.com).
🔧 Rozwiązywanie problemów
dmesg: read kernel buffer failed: Operation not permitted
Jądro ogranicza dmesg do roota. Uruchom je przez sudo albo użyj sudo journalctl -k.
modprobe: FATAL: Module wireguard not found
W niektórych minimalnych obrazach brakuje dodatkowych modułów. W Ubuntu zainstaluj linux-modules-extra-$(uname -r). Jeśli właśnie zaktualizowano jądro, najpierw zrestartuj system, aby uname -r zgadzało się z zainstalowanymi modułami.
systemd-detect-virt: command not found
Obraz nie ma systemd lub jest bardzo minimalny. Użyj lscpu lub dmesg, albo zainstaluj pakiet systemd.
Docker zgłasza problemy z cgroups lub iptables
Sprawdź, czy usługa działa (systemctl status docker) i czy nie wyłączono nf_tables lub iptables we własnej konfiguracji zapory.
🚀 Wiesz już, co KVM daje Twojemu VPS: prawdziwe jądro, pełną kontrolę i brak ukrytych ograniczeń narzucanych przez hosta.