lxd-p2c require some space on disk to create full archive of all disk. In case you do not have enough free space you can also use rsync like in my example - Fuidshift: migration from OpenVZ and some files owners (corrected) - it should work for migrationg from bare metal servers too.
That’s not true, lxd-p2c doesn’t do any data copying on the source, it just sets up a mount namespace and then rsync everything across to the LXD server using the migration API.