Migrating from LXD 6.1?

lxd-to-incus has a flag, --ignore-version-check, which ignores the version check.

When you ignore the version check, you enter uncharted territory.
Let’s chart the territory.

We launch a test VM with LXD 6.1, create a few containers, then lxd-to-incus with --ignore-version-check.

Well, it worked for me. The migrated system to Incus could list the containers.
Of course, I do not know what side-effects could appear later.
Stéphane could shed some light here.

$ incus launch images:ubuntu/24.04/cloud lxd-to-incus --vm
Launching lxd-to-incus
$ incus ubuntu lxd-to-incus
Error: Instance is not running
$ incus ubuntu lxd-to-incus
Error: VM agent isn't currently running
$ incus ubuntu lxd-to-incus
Error: VM agent isn't currently running
$ incus ubuntu lxd-to-incus
sudo: unknown user ubuntu
sudo: error initializing audit plugin sudoers_audit
$ incus ubuntu lxd-to-incus
sudo: unknown user ubuntu
sudo: error initializing audit plugin sudoers_audit
$ incus ubuntu lxd-to-incus
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@lxd-to-incus:~$ sudo apt install snapd
...
ubuntu@lxd-to-incus:~$ snap info lxd
...
channels:
  5.21/stable:      5.21.2-22f93f4 2024-08-22 (29948) 109MB -   #### DEFAULT
...
ubuntu@lxd-to-incus:~$ sudo snap install lxd
lxd (5.21/stable) 5.21.2-22f93f4 from Canonical✓ installed
ubuntu@lxd-to-incus:~$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (ceph, dir, lvm, powerflex, zfs, btrfs) [default=zfs]: 
Create a new ZFS pool? (yes/no) [default=yes]: 
Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]: 
Size in GiB of the new loop device (1GiB minimum) [default=5GiB]: 3
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
Would you like the LXD server to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]: 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 
ubuntu@lxd-to-incus:~$ lxc launch ubuntu:24.04 mycontainer
Creating mycontainer
Starting mycontainer                        
ubuntu@lxd-to-incus:~$ lxc launch images:alpine/edge myalpine
Creating myalpine
Starting myalpine                           
ubuntu@lxd-to-incus:~$ lxc list
+-------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
|    NAME     |  STATE  |         IPV4         |                     IPV6                      |   TYPE    | SNAPSHOTS |
+-------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| myalpine    | RUNNING | 10.103.93.250 (eth0) | fd42:e979:169b:69d1:216:3eff:fe25:2086 (eth0) | CONTAINER | 0         |
+-------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| mycontainer | RUNNING | 10.103.93.216 (eth0) | fd42:e979:169b:69d1:216:3eff:fe21:3519 (eth0) | CONTAINER | 0         |
+-------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
ubuntu@lxd-to-incus:~$ sudo apt install incus
...
ubuntu@lxd-to-incus:~$ incus --version
6.0.0
ubuntu@lxd-to-incus:~$ sudo apt install incus-tools
...
ubuntu@lxd-to-incus:~$ sudo lxd-to-incus 
=> Looking for source server
==> Detected: snap package
=> Looking for target server
==> Detected: systemd
=> Connecting to source server
=> Connecting to the target server
=> Checking server versions
==> Source version: 5.21.2
==> Target version: 6.0.0
=> Validating version compatibility
=> Checking that the source server isn't empty
=> Checking that the target server is empty
=> Validating source server configuration

Source server uses obsolete features:
 - Required command "zfs" is missing for storage pool "default"
Error: Source server is using incompatible configuration
ubuntu@lxd-to-incus:~$ sudo apt install zfsutils-linux
...
ubuntu@lxd-to-incus:~$ sudo lxd-to-incus 
=> Looking for source server
==> Detected: snap package
=> Looking for target server
==> Detected: systemd
=> Connecting to source server
=> Connecting to the target server
=> Checking server versions
==> Source version: 5.21.2
==> Target version: 6.0.0
=> Validating version compatibility
=> Checking that the source server isn't empty
=> Checking that the target server is empty
=> Validating source server configuration

The migration is now ready to proceed.
At this point, the source server and all its instances will be stopped.
Instances will come back online once the migration is complete.
Proceed with the migration? [default=no]: no
ubuntu@lxd-to-incus:~$ lxd --version
5.21.2 LTS
ubuntu@lxd-to-incus:~$ sudo snap refresh --channel latest/stable lxd
lxd 6.1-efad198 from Canonical✓ refreshed
ubuntu@lxd-to-incus:~$ sudo lxd-to-incus 
=> Looking for source server
==> Detected: snap package
=> Looking for target server
==> Detected: systemd
=> Connecting to source server
=> Connecting to the target server
=> Checking server versions
==> Source version: 6.1
==> Target version: 6.0.0
=> Validating version compatibility
Error: LXD version is newer than maximum version "5.21.99"
ubuntu@lxd-to-incus:~$ sudo lxd-to-incus --ignore-version-check
=> Looking for source server
==> Detected: snap package
=> Looking for target server
==> Detected: systemd
=> Connecting to source server
=> Connecting to the target server
=> Checking server versions
==> Source version: 6.1
==> Target version: 6.0.0
=> Validating version compatibility
==> WARNING: User asked to bypass version check
=> Checking that the source server isn't empty
=> Checking that the target server is empty
=> Validating source server configuration

The migration is now ready to proceed.
At this point, the source server and all its instances will be stopped.
Instances will come back online once the migration is complete.
Proceed with the migration? [default=no]: yes
=> Stopping the source server
=> Stopping the target server
=> Wiping the target server
=> Migrating the data
=> Migrating database
=> Writing database patch
=> Cleaning up target paths
=> Starting the target server
=> Checking the target server
Uninstall the LXD package? [default=no]: yes
=> Uninstalling the source server
ubuntu@lxd-to-incus:~$ sudo incus list
+-------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
|    NAME     |  STATE  |         IPV4         |                     IPV6                      |   TYPE    | SNAPSHOTS |
+-------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| myalpine    | RUNNING | 10.103.93.250 (eth0) | fd42:e979:169b:69d1:216:3eff:fe25:2086 (eth0) | CONTAINER | 0         |
+-------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| mycontainer | RUNNING | 10.103.93.216 (eth0) | fd42:e979:169b:69d1:216:3eff:fe21:3519 (eth0) | CONTAINER | 0         |
+-------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
ubuntu@lxd-to-incus:~$