You can't see an empty M.2 slot from software

Working out whether a mini PC can take a second NVMe: lspci only shows drives that are installed, dmidecode lists firmware defaults, and a generic board may not even say its model.

I wanted to know whether the Proxmox mini PC could take a second NVMe, so that the etcd disks and the Longhorn data disks could live on different drives. I couldn’t find that out from the machine.

What the tools told me

  • lspci showed one NVMe controller. An empty M.2 slot doesn’t enumerate, so its absence from lspci says nothing about whether the slot exists.
  • dmidecode listed “PCI Express x1 Slot 1-5, Available”. Those are firmware defaults, not real slots.
  • Every DMI string was “Default string”, so there was no model name to look up. The next step is a label on the case, or opening it.

The drive that is there is a 1 TB DRAM-less model on a Gen3 x4 link, with 6 percent wear after 8.28 TB written. Everything on the host lives on it. The volume group has 16 GB free and the LVM-thin pool is at 85 percent.

What to buy, when you know the slot

For etcd, what counts is sync-write latency and sustained random writes, not sequential speed. That means DRAM on the drive and ideally power-loss protection. A Gen3 x4 slot tops out around 3.5 GB/s, which is plenty, so a Gen4 drive buys nothing here.

The cheapest structural fix is to move the Longhorn data disks to the new drive while the VMs run (qm move-disk <id> scsi1 <new-storage>), so the etcd disks keep the old drive to themselves.