·8 min read·Updated Sep 28, 2026

KVM vs. OpenVZ and LXC: What You Can Actually Run on Each VPS Type

KVM, OpenVZ or LXC? What each VPS type can actually run, how to tell which you have, and what to check before you pay for a no-KYC VPS.

If you're comparing VPS offers and one costs half as much for the same listed RAM, the virtualization type is usually the reason. A KVM VPS is a real virtual machine with its own kernel — you can load kernel modules, run WireGuard, encrypt a disk, boot a custom kernel, and mount a rescue image. An OpenVZ or LXC VPS is a container sharing the host's kernel, which is cheaper and often faster to provision, but it silently blocks a long list of things privacy-focused users specifically want to run.

That's the short version. Below is what each type actually allows, how to check which one you're sitting on, and which questions to ask before you pay — especially if you're paying in crypto with no refund guarantee attached.

Direct answer: which one do you need?

Pick KVM if any of these apply:

  • You want to run a VPN server (WireGuard, OpenVPN) or a Tor relay/onion service.
  • You want Docker, Podman, or nested containers.
  • You want your own firewall stack (nftables), custom sysctl values, or kernel-level tuning.
  • You want disk encryption, a custom kernel, or a non-standard OS.
  • You want predictable resources you can actually measure.

Pick a container VPS (OpenVZ/LXC) only if your workload is a plain userspace application — a small web app, a static site, a Minecraft server, an IRC bouncer, a monitoring probe — and price is the deciding factor.

For most readers of this blog, the answer is KVM, because almost every privacy-oriented use case touches the kernel.

What "container VPS" actually restricts

An OpenVZ or LXC VPS is a namespaced slice of the host's running kernel. You get a root shell and what looks like a full system, but the kernel isn't yours. Practical consequences:

No kernel modules. modprobe fails. WireGuard's in-kernel implementation (mainline since Linux 5.6) won't load unless the host already provides it. TUN/TAP — required by OpenVPN and most VPN software — has to be explicitly enabled by the provider, and many don't. Same for FUSE if you want to mount remote filesystems.

Fixed, often old kernel. OpenVZ 7 runs a RHEL 7–derived 3.10 kernel. You cannot upgrade it, and you inherit whatever the host patches (or doesn't). Modern features — recent nftables behaviour, newer cgroup v2 semantics, eBPF tooling — may simply not exist for you.

Firewalling is partial. Container VPS instances typically expose only the iptables modules the host has loaded. Rules that work fine on a KVM box can fail with "no such file or directory" errors on a container.

Docker is unreliable. Some LXC and OpenVZ 7 setups can run Docker with permissive configuration, but storage drivers, cgroups and nested namespaces frequently break, and providers usually list it as unsupported.

No disk encryption. dm-crypt/LUKS needs device-mapper access you don't have. If disk-level encryption matters to your threat model, read what LUKS actually protects on a remote server first — on a container VPS, it isn't even an option.

Memory accounting is different. OpenVZ's vSwap and burstable memory make "2 GB RAM" mean something looser than it does on a virtual machine. Your process can be killed for exceeding a container limit without the usual local OOM signals, and free may report host-wide or misleading values.

Weaker isolation boundary. Containers share one kernel, so a kernel-level vulnerability has a wider blast radius across tenants than with hardware-assisted virtualization. This is a difference in degree, not a guarantee either way — but it's a real difference.

What KVM gives you

KVM (Kernel-based Virtual Machine) uses CPU virtualization extensions to run a genuine guest operating system. You boot your own kernel, you own /dev, and the hypervisor doesn't care what you load inside.

  • Any Linux distribution, plus BSDs and custom images, subject to what the provider offers.
  • Kernel modules, custom sysctls, full nftables, eBPF tooling — all yours.
  • WireGuard, OpenVPN, Tor, mail servers, Docker and Kubernetes nodes all behave the way the documentation says they will.
  • Real block devices (/dev/vda), so LUKS, LVM, swap files and swap partitions work normally.
  • Console access and rescue/recovery boot options are meaningful, because there's a real boot process to intervene in.

The trade-offs are honest ones: a guest kernel and its page tables consume some of your RAM, boot is slower than starting a container, and identical specs cost more than an equivalent container plan. Disk and network I/O are close to native with virtio drivers, so the performance argument for containers is much weaker than it was a decade ago.

This is why IronBalkans runs full KVM with dedicated vCPU, RAM and NVMe on every plan, starting at €3.99/mo for Iron 1 — if you're paying anonymously in Monero, Bitcoin or Litecoin to run a VPN, an onion service or your own DNS resolver, a shared-kernel container would block half of that on day one. Deployment takes under 60 seconds, with no email, name or ID required at signup.

How to check what you're actually running

Vendors aren't always precise in marketing copy. Verify from inside the server:

systemd-detect-virt        # kvm, lxc, openvz, none...
virt-what                  # more detail (may need install)
uname -r                   # 3.10.x on a modern box = OpenVZ 7 host kernel
lsmod | head               # empty/near-empty = container
ls /proc/vz 2>/dev/null    # exists = OpenVZ
cat /proc/user_beancounters 2>/dev/null   # legacy OpenVZ 6
lsblk                      # /dev/vda or /dev/sda = real block device (KVM)
ls /dev/net/tun            # missing = no VPN without provider action
free -h                    # swap 0 and unmodifiable = likely container
dmesg | tail               # permission denied = container restriction

If lsblk shows no block devices, lsmod is empty and dmesg is blocked, you're in a container regardless of what the order page said. On a KVM instance, systemd-detect-virt returns kvm and you'll see virtio devices.

While you're there, it's worth checking whether the node is oversold — virtualization type and overselling are separate problems. Steal time, disk latency and cgroup throttling tell you the rest of the story; see how to tell if your VPS is oversold for the specific commands and thresholds.

What to check before you pay

With a crypto payment there's no chargeback, so front-load the verification:

  1. Virtualization type stated explicitly. "KVM" on the plan page, not just "VPS" or "cloud."
  2. Dedicated vs. shared vCPU. Burst-only CPU allocations behave very differently under sustained load.
  3. TUN/TAP and kernel module policy. On KVM this is a non-issue; if a provider needs to "enable TUN," that's a container tell.
  4. Real block storage and swap control. Needed for databases, encryption and low-RAM tuning.
  5. IP allocation. One dedicated IPv4 plus an IPv6 block is very different from a shared or NATed address if you're running a VPN or mail.
  6. Whether the listed price is the final price. Extra IPv4, backups and DDoS filtering are common add-ons elsewhere; the Romania VPS pricing breakdown covers which line items to look for.
  7. Smallest plan first. Buy one month on the cheapest tier, verify with the commands above, then scale up. Sizing guidance is in which no-KYC VPS plan fits your project.

Common mistakes buyers make

Comparing RAM across virtualization types. 4 GB on a container plan and 4 GB on a KVM plan aren't the same product. Container memory is often burstable and accounted differently; a virtual machine's RAM is reserved, minus a small kernel overhead.

Assuming "cloud" means KVM. It usually does, but the word is marketing, not a technical spec. Check.

Buying a container plan for a VPN. This is the single most frequent regret. You pay, then discover /dev/net/tun doesn't exist and WireGuard won't load. Kernel-dependent projects need KVM.

Ignoring nested virtualization. If you need to run VMs inside your VPS (or certain sandboxing setups), KVM alone isn't enough — nested virt has to be enabled on the host. Ask first; most providers leave it off.

Treating KVM as a security guarantee. Stronger isolation than a shared kernel isn't immunity. The hypervisor operator still controls the host, can snapshot disk and RAM, and everything in what your VPS provider can actually see still applies. Virtualization type changes what you can run, not who runs the metal.

FAQ

Is KVM slower than OpenVZ or LXC? Marginally, for some workloads. With virtio drivers, disk and network throughput are close to native, and CPU-bound work sees little difference. Containers win on boot time and memory overhead. Neither difference matters as much as whether the node is oversold.

Can I run Docker on a KVM VPS? Yes. Docker on KVM behaves like Docker on bare metal — including the firewall surprise where published ports bypass your rules. That's covered in the Docker firewall bypass guide.

Does KVM let me encrypt my disk? You can set up LUKS, yes. Whether it meaningfully protects you on a remote server is a separate question with an honest answer that isn't simply "yes."

What about a VPN specifically? KVM with its own kernel runs WireGuard natively. The full setup, including DNS leak handling, is in the self-hosted WireGuard guide.

Get started

If your project touches the kernel — a VPN, a Tor service, containers, a firewall you configure yourself, encrypted volumes — KVM isn't an upgrade, it's the baseline requirement. Verify it before you send payment, and start on the smallest plan that fits.

IronBalkans runs KVM on every tier from €3.99/mo to €29.99/mo in Bucharest, Romania, with dedicated resources, one IPv4 plus a /64 IPv6 block, and crypto-only checkout with no email or ID. Compare the plans and deploy when you're ready.

Written by IronBalkans. Last reviewed Sep 28, 2026.