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:
- Reboot into BIOS/UEFI
- Find "Virtualization Technology", "Intel VT-x", or "AMD-V"
- Enable the setting
- 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 Type | Boot Time | Checkpoint Speed | Recommended |
|---|---|---|---|
| HDD | ~5s | Slow | No |
| SSD | ~1s | Fast | Yes |
| NVMe SSD | ~0.5s | Very Fast | Best |
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
.metalinstances (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
| Component | Minimum | Recommended |
|---|---|---|
| CPU Cores | 2 | 4+ |
| RAM | 4GB | 16GB+ |
| Disk | 50GB HDD | 200GB+ SSD |
| Kernel | 5.10 | 6.12.71 |
| OS | Ubuntu 20.04 | Ubuntu 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
- Installation - Install Noid
- Quick Start - Create your first VM
- Server Setup - Advanced server configuration