Posted on ::

Been running my Raspberry Pi 5 on a MicroSD for a while. It worked, but the disk was the bottleneck — pulling Docker images was slow. So I swapped it out for a 128GB NVMe SSD. This Pi is part of my self-hosting setup.

Checking the current state

First I verified what was mounted:

lsblk -f

And confirmed the NVMe was detected:

sudo fdisk -l /dev/nvme0n1

I used a 128GB KZ128 SSD. Nothing fancy.

Wiping and partitioning the NVMe

sudo wipefs -a /dev/nvme0n1
sudo parted /dev/nvme0n1 --script mklabel gpt
sudo parted /dev/nvme0n1 --script mkpart primary ext4 0% 100%

Cloning the existing system

Used rpi-clone (from geerlingguy's repo) to migrate everything over:

rpi-clone /dev/nvme0n1

It handled mounting, rsyncing, and updating configs. No manual steps.

Setting boot order

sudo raspi-config

Advanced Options → Boot Order → NVMe/USB Boot.

Reboot and verify

sudo reboot now

After coming back up:

findmnt /

Showed /dev/nvme0n1p2 as root. Done.


Docker pulls are faster now. If your Pi does anything disk-heavy, the NVMe is worth it.

Honest note: I didn't make a proper backup before doing this. I have Kopia running periodic backups on some important data, but I haven't even reviewed whether those are actually good. Basically just trusted rpi-clone and hoped for the best. Worked out fine, but not something I'd recommend.

Shoutout to Jeff Geerling for maintaining the rpi-clone fork. Made the whole migration a one-liner.