Can anybody tell what should be preferred for a NS 8 VM in Proxmox: a full clone of a VM template or a linked clone with snapshots?
What gives better performance? Which are the pros and cons especially for Nethserver?
This really is much more a Proxmox question than a Nethserver question; there isn’t anything NS-specific about it. Here’s where the Proxmox wiki discusses the differences:
In short:
- Full clone is completely independent, but takes more storage space
- Linked clone takes less space, but depends on the original
What does depending on the original mean if you have two linked clones hosting node 1 and node 2 ?
It means the original VM, or template, or whatever you cloned from, must remain available; you can’t delete it.
VM clones in production are risky business. Every NS8 instance generates values that are expected to be globally unique: systemd’s machine-id, WireGuard keys (used for inter-node VPN in a cluster), SSH host keys, TLS certificates, subscription/registration tokens, and so on. Cloning a VM — whether full or linked — duplicates these values verbatim unless you take deliberate steps to regenerate them afterward.
The official NS8 .qcow2/.vmdk image handles this correctly: it ships “clean” (no identity baked in), and on first boot it runs a cloud-init-style procedure that generates all these unique tokens fresh. Once that first boot has happened, the instance is “personalized” — cloning it at that point (full or linked, doesn’t matter) will duplicate the identity, and you’ll end up with two nodes that think they’re the same node, or WireGuard keys colliding if you ever join them to the same cluster.
So to directly answer the full-clone-vs-linked-clone question: it’s the wrong question for NS8. The Proxmox-level tradeoffs (linked clones being faster to spin up and space-efficient, but dependent on the base snapshot staying intact; full clones being slower to create but independent and safer to keep long-term) matter for OS templates in general, but they’re moot here because you shouldn’t be cloning a personalized NS8 instance either way.
If you want a repeatable deployment process:
- Start from the pre-built image every time (download fresh, or keep a pristine, never-booted copy as your “template”), and let first-boot do its job on each new VM.
- The image also supports cloud-init, so for Proxmox specifically you don’t even need to touch the VM by hand: attach a cloud-init drive with your network config, SSH keys, hostname, etc., and let it handle per-VM customization on top of the first-boot identity generation. That’s the supported path if you want templated, repeatable provisioning without falling into the cloning trap.
- Don’t boot the “template” itself and then clone it — that’s exactly the scenario that leaks unique identity into your clones.
If you have a concrete reason you need snapshot-based cloning (e.g. testing), that’s a different use case than production provisioning — just make sure any clone destined for real use gets its identity regenerated (new machine-id, new WireGuard keys, re-run of the first-boot logic) before it joins anything.
Oh, thank you so much, Davide, for this detailed explanation! It answers all my questions, indeed.
Unfortunately I had always bad luck with the NS8 .qcow2 image. I installed it several times and every instance failed to boot. It stalled after the grub greeting. Do you have any hint how to repair this?
And pls give me some more info about the cloud-init issue. I never used that in any machine.
Glad it helped, Ralph!
For the boot issue: that sounds like something worth its own thread rather than burying it here — could you open a new topic with as many details as possible? Things that would help others help you:
- Proxmox version, VM machine type (q35/i440fx), BIOS type (SeaBIOS/OVMF), disk controller (virtio-scsi/virtio-blk), and CPU type set on the VM
- Which NS8 image version/date you downloaded, and the exact download URL if handy
- How you imported/created the VM (
qm importdisk, manual, script, etc.) - A screenshot or text copy of exactly what’s on screen when it stalls after GRUB — sometimes there’s a kernel panic or a silent hang, and the difference matters
- Whether serial console or VNC/SPICE console — worth trying the other if you’ve only tried one, since some boot messages only show up on serial
That’ll give us (or others who hit the same thing) a real shot at pinpointing whether it’s a Proxmox config mismatch, a corrupt download, or something else.
As for cloud-init: we don’t have NS8-specific documentation for it yet, since it’s just standard cloud-init support baked into the image rather than something we’ve customized. For the Proxmox side of things (attaching the cloud-init drive, setting up the network/SSH-key/user-data fields in the VM config), the Proxmox Cloud-Init FAQ is the best reference. It walks through the basics well — worth a read even if you’ve never touched cloud-init before, it’s fairly approachable once you see one example.