Lxc copy from 3.0.3 to 3.19 failed with "Invalid Devices", "Device validation failed"


Today I tried to get data off my Pixelbook using lxc copy to another laptop on the same network.

It was relatively easy to figure how to initialize lxd on the new laptop and get the transfer started.

The client certificate setup went OK, but my first sign of a problem was an error about not being able to access the other host, which seemed odd considering the client certificate setup process had JUST worked and that involved communicating with the other host.

I tried adding --mode push and that allowed me to progress. My guess is the other laptop couldn’t connect back into the Crostini container. Fair enough.

But the copy still failed almost immediately with an error about “Invalid Devices” “device validation failed” and “missing source for disk”. As I re-tried the command, 3 different devices were mentioned, but no more progress was made.

That’s when I checked how close the versions of lxd were and found that the Pixelbook had 3.0.3 while the new laptop had 3.19.

I found docs that said I could use snap refresh to downgrade the snap on the target laptop, but that didn’t work. I ended up needing to do a full uninstall/re-install to complete the downgrade. I couldn’t figure out where the snaps “/etc” files were, so I went through the “init” process again. This now failed because the default “zpool” was left behind.

Once the downgraded to 3.0.4 was completed on the target the lxc copy started running!

If these two versions of LXD are not supposed to be able to talk to each other in this way, it would be helpful if a clearer incompatibility message could be returned.

I could see it was going to take awhile so I left and came back. Although the Pixelbook was plugged into power, I found it had suspended and then… rebooted completely when I woke it up.

This failure is not the fault of LXD but is a lesson learned for me: If I’m going to start a long running lxc copy between laptops I should make sure that neither is set to suspend on inactivity!