System Requirements

Noid requires specific hardware and software capabilities to run Firecracker microVMs.

Server Requirements

The Noid server must run on Linux with KVM support:

Hardware

  • CPU: x86_64 with hardware virtualization (Intel VT-x or AMD-V)
  • Memory: 2GB+ RAM minimum, 8GB+ recommended
  • Disk: 50GB+ free space (SSD recommended)
  • Network: Standard network interface

Software

  • Operating System: Linux (Ubuntu 24.04+, Debian 12+, or similar)
  • Kernel: Linux 5.10+ (kernel 6.12.71 recommended for guest VMs)
  • KVM: Kernel-based Virtual Machine support
  • Firecracker: Installed at /usr/local/bin/firecracker

Client Requirements

The Noid client can run on:

  • Linux: x86_64 or ARM64
  • macOS: x86_64 or ARM64 (Apple Silicon)
  • Windows: Via WSL2

Note: The client only needs network access to the server - it doesn't require KVM or virtualization support.

CPU Requirements

Virtualization Support

Check if your CPU supports hardware virtualization:

egrep -c '(vmx|svm)' /proc/cpuinfo

If the output is greater than 0, your CPU supports virtualization.

Intel processors: Requires VT-x (most processors since 2008) AMD processors: Requires AMD-V (most processors since 2006)

Enabling Virtualization

If supported but disabled:

  1. Reboot into BIOS/UEFI
  2. Find "Virtualization Technology", "Intel VT-x", or "AMD-V"
  3. Enable the setting
  4. Save and exit

Verifying KVM

Check if KVM is available:

ls -l /dev/kvm

If /dev/kvm doesn't exist, load KVM modules:

sudo modprobe kvm
sudo modprobe kvm_intel  # For Intel CPUs
# OR
sudo modprobe kvm_amd    # For AMD CPUs

Storage Requirements

Disk Space Breakdown

Per VM:

  • VM disk: 1-10GB (configurable)
  • Memory checkpoint: Equal to VM memory allocation
  • Logs: ~100MB

Server base:

  • Kernel image: ~10MB
  • Base rootfs: ~500MB - 2GB
  • Golden snapshot: ~2GB + memory

Example for 10 VMs with 2GB RAM each:

  • Base images: ~3GB
  • VMs (5GB each): 50GB
  • Checkpoints (2GB each): 20GB
  • Total: ~75GB

Filesystem Recommendations

Recommended: btrfs

  • Zero-copy snapshots via reflinking
  • Instant VM cloning
  • Space-efficient until modifications

Also supported: ext4

  • Falls back to regular file copies
  • Works well but slower than btrfs

Avoid:

  • Network filesystems (NFS, CIFS) - too slow

SSD vs HDD

Storage TypeBoot TimeCheckpoint SpeedRecommended
HDD~5sSlowNo
SSD~1sFastYes
NVMe SSD~0.5sVery FastBest

Memory Requirements

Allocation

  • Host OS: 1-2GB
  • Noid server: 200-500MB
  • Each VM: As allocated (default 2048 MiB)

Example Configurations

Development (5 VMs):

  • Host: 2GB
  • Server: 500MB
  • VMs (2GB each): 10GB
  • Total: ~13GB

Production (20 VMs):

  • Host: 2GB
  • Server: 1GB
  • VMs (2GB each): 40GB
  • Total: ~43GB

Network Requirements

Port Configuration

  • Noid Server: Port 7654 (TCP) - default, configurable
  • VM Networking: TAP devices managed by noid-netd

Network Daemon

The noid-netd daemon requires:

  • Root access
  • iptables for NAT configuration
  • IP forwarding enabled

Cloud Environments

Nested Virtualization

Noid can run in cloud VMs with nested virtualization support:

AWS:

  • Use .metal instances (bare metal)
  • Or instances with nested virtualization enabled

Google Cloud:

  • Enable nested virtualization on instance
  • N2/N2D instances work well

Azure:

  • Dv3/Ev3 series with nested virtualization

DigitalOcean, Linode, Hetzner:

  • Use dedicated CPU instances
  • Verify KVM support before deployment

Verifying nested virtualization:

cat /sys/module/kvm_intel/parameters/nested
# Should output: Y

Software Dependencies

Required

  • Linux kernel 5.10+ (6.12.71 recommended for guests)
  • KVM: Kernel modules (kvm, kvm_intel or kvm_amd)
  • Firecracker: Latest version recommended
  • systemd: For service management (optional)

Optional but Recommended

  • iptables: For network configuration
  • btrfs-progs: For btrfs filesystem support

Installing Dependencies

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install -y qemu-kvm libvirt-daemon-system

RHEL/CentOS:

sudo yum install -y qemu-kvm libvirt

Compatibility Matrix

ComponentMinimumRecommended
CPU Cores24+
RAM4GB16GB+
Disk50GB HDD200GB+ SSD
Kernel5.106.12.71
OSUbuntu 20.04Ubuntu 24.04

Quick Validation

Run this script to validate your system:

#!/bin/bash

echo "=== Noid System Requirements Check ==="

# CPU virtualization
echo -n "CPU virtualization: "
if egrep -q '(vmx|svm)' /proc/cpuinfo; then
  echo "✓ Supported"
else
  echo "✗ Not supported"
fi

# KVM availability
echo -n "KVM available: "
if [ -e /dev/kvm ]; then
  echo "✓ Yes"
else
  echo "✗ No"
fi

# Memory
TOTAL_MEM=$(free -g | awk '/^Mem:/{print $2}')
echo -n "Total memory: ${TOTAL_MEM}GB "
if [ $TOTAL_MEM -ge 4 ]; then
  echo "✓ Sufficient"
else
  echo "✗ Insufficient"
fi

# Disk space
DISK_FREE=$(df -BG / | tail -1 | awk '{print $4}' | sed 's/G//')
echo -n "Free disk space: ${DISK_FREE}GB "
if [ $DISK_FREE -ge 50 ]; then
  echo "✓ Sufficient"
else
  echo "✗ Insufficient"
fi

# Kernel version
KERNEL=$(uname -r)
echo "Kernel version: $KERNEL"

echo "=== End Check ==="

Performance Considerations

Resource Overcommitment

CPU:

  • Conservative: 1:1 (no overcommit)
  • Moderate: 2:1 vCPUs per physical core
  • Aggressive: 4:1 for mostly idle VMs

Memory:

  • Never overcommit memory
  • Keep 20% host memory free
  • Memory pages are not swappable for VMs

Benchmarking

Test your system performance:

# CPU performance
sysbench cpu run

# Memory bandwidth
sysbench memory run

# Disk I/O
fio --name=randwrite --ioengine=libaio --iodepth=16 \
    --rw=randwrite --bs=4k --size=1G

Next Steps