Linking should work, but when dealing with cloud servers you can also just mount your storage in the right place. For instance on Linode I did something like this:
Become root, so I don’t have to type sudo
a million times:
sudo -s
Create a filesystem for an external volume made available by Linode - the device path would be different for other cloud providers.
mkfs.ext4 /dev/disk/by-id/scsi-0Linode_Volume_userdata
Mount the new storage in a temporary location:
mkdir /mnt/temp
mount /dev/disk/by-id/scsi-0Linode_Volume_userdata /mnt/temp
Copy data from current storage to the new. I should say that I did this when no services were running on the machine. If you do this to a fully operational system, you should make sure that all services that work with the data are temporarily stopped.
cd /home/user-data
cp -av * .* /mnt/temp
Fix the top-level permissions of the mounted volume.
chown user-data.user-data /mnt/temp
Now move the old user-data out of the way and mount the new one in its place:
umount /mnt/temp
cd /home
mv user-data user-data.old
mkdir user-data
mount /dev/disk/by-id/scsi-0Linode_Volume_userdata user-data
Add a line to /etc/fstab
to auto-mount the volume on reboot:
/dev/disk/by-id/scsi-0Linode_Volume_userdata /home/user-data ext4 defaults,noatime 0 2
And that’s it - now I have all data on the external volume. Can’t hurt to double-check things - permissions, for instance - and then restart services or the whole system. This is quite a standard way of handling things on Unix - nothing specific to MIAB here!