Successful TrueNAS CORE to SCALE Migration
I took a quick test drive of Proxmox VE and first impressions looked good. Including a feature that I considered important: USB passthrough (also known as USB device redirection) for virtual machines. It was something I had a chance to try earlier and really liked. Thinking back to that experiment, I remembered my motivation for investigating KVM hypervisor was because I had problems with the bhyve hypervisor of TrueNAS CORE and wanted to try something else.
Since I had TrueNAS already up and running, I looked into switching from TrueNAS CORE to TrueNAS SCALE. The difference between sibling products is that CORE was built on FreeBSD and SCALE was built on Linux. Moving to Linux also meant a change from bhyve hypervisor I've had problems with to KVM hypervisor that has worked well. However, when I last looked at TrueNAS SCALE, it was at version 22.02 ("Angelfish") and it didn't support USB passthrough. Checking the issues database after my Proxmox test drive, I saw that USB passthrough is now in 22.12 ("Bluefin"). This feature made it compelling enough for me to migrate.
TrueNAS documentation includes a page dedicated to this process: Migrating from TrueNAS CORE to SCALE. I found it interesting that the migration is only supported one-way: CORE to SCALE and not the reverse. This strongly hints that TrueNAS CORE is on its way out, so it is good that I have motivation to move now instead of being forced to later.
I only had a few minor tasks to prepare for the migration, as I hadn't been using any of the TrueNAS features that would make migration challenging. The upgrade process itself was impressively seamless. The documentation page has paragraphs of information about upgrading using an ISO file or using a "Manual Update" file, but the easiest method was given only a single sentence: "The easiest method is to upgrade from the CORE system UI, but your system must have the CORE 13.0 major release installed to use this method."
I am running CORE 13 and this meant I go to the software updates page where I usually pick up system updates. There is a drop-down box where I can select an update train, and one of the options is to migrate to SCALE. I selected that option, confirmed, and within half an hour I was running TrueNAS SCALE. No fuss, no muss. All of my ZFS data volumes carried over, as did my network shares. That's all I could ask for in a NAS migration. I was very impressed at how smooth it was.
After I confirmed all of my network shares were working as expected, I created a new virtual machine to test USB passthrough. Results were mixed. The good news is that USB passthrough exists and works. The bad news is that USB device configuration for virtual machines don't seem to take place immediately. I needed to reboot the virtual machine before that USB device is visible and accessible by the VM.
This is fine for mainstream scenarios like USB license keys that stay plugged in. It doesn't work so well for ESPHome where I want to plug in an ESP8266/ESP32 microcontroller and update it. Still, it's better than nothing. Since I rarely perform the USB initial firmware flash, I guess having to reboot the VM isn't a huge deal. But it does mean I'm going to hold off migrating my Home Assistant OS VM, I'll migrate something else first to test the waters.