A complete step-by-step guide to exporting your Linode disk images and deploying them on RamNode's Cloud VPS platform.
Migrating your infrastructure from Linode to RamNode offers several advantages, including competitive pricing, modern cloud infrastructure, and excellent performance. This comprehensive guide walks you through the entire migration process, from exporting your Linode disk images to deploying them on RamNode's Cloud VPS platform.
RamNode supports multiple image formats including RAW, QCOW2, VMDK, VDI, and VHD/VHDX, making it easy to import your existing virtual machines. Whether you're migrating a single server or multiple instances, this guide provides the tools and techniques you need for a successful migration.
Important: Schedule your migration during off-peak hours to minimize impact on your services. Create backups of all critical data before proceeding.
There are two primary approaches to migrating from Linode to RamNode:
Creates an exact byte-for-byte copy of your Linode disk using dd. Preserves everything including the operating system, applications, and configurations.
Recommended for most migrations
Deploy a fresh OS on RamNode and transfer application data and configurations using rsync. Results in a cleaner setup but requires more manual configuration.
Good for simpler setups
This guide focuses primarily on Method 1 (block-level migration) as it provides the most complete migration path while preserving your existing setup.
Before exporting, document your current setup. SSH into your Linode and gather the following information:
# Check disk usage
df -h
# List installed packages (Debian/Ubuntu)
dpkg --get-selections > ~/installed-packages.txt
# List installed packages (CentOS/Rocky/Alma)
rpm -qa > ~/installed-packages.txt
# Document running services
systemctl list-units --type=service --state=running
# Note network configuration
ip addr showReduce the image size by removing unnecessary data:
# Clear package cache (Debian/Ubuntu)
sudo apt clean
# Clear package cache (CentOS/Rocky/Alma)
sudo yum clean all
# Remove old logs
sudo journalctl --vacuum-time=7d
sudo find /var/log -type f -name "*.gz" -delete
# Clear temporary files
sudo rm -rf /tmp/*RamNode uses cloud-init for instance configuration. Install it if not already present:
Ubuntu/Debian:
sudo apt update && sudo apt install cloud-init -yCentOS/Rocky/Alma:
sudo yum install cloud-init -yVirtIO drivers provide optimal performance on RamNode's cloud platform. Verify they're available:
lsmod | grep virtioYou should see modules like virtio_blk, virtio_net, and virtio_pci. If not present:
sudo modprobe virtio_blk virtio_net virtio_pciTo create a consistent disk image, boot your Linode into Rescue Mode:
/dev/sdaAccess your Linode via the LISH console (Linode Shell) from the Cloud Manager, then configure SSH:
# Set a root password
passwd
# Start the SSH service
service ssh startFrom your local machine or an intermediate server, download the disk image using dd over SSH:
Basic export (RAW format):
ssh root@YOUR_LINODE_IP "dd if=/dev/sda status=progress" > linode.imgExport with compression (recommended for large disks):
ssh root@YOUR_LINODE_IP "dd if=/dev/sda | gzip -c --fast" > linode.img.gzTip: For very large disks, consider using pigz (parallel gzip) for faster compression. The transfer time depends on your disk size and network bandwidth. A 25GB disk typically takes 30-60 minutes over a stable connection.
After the download completes, verify the image integrity:
# Check file size
ls -lh linode.img
# Verify the image can be read
file linode.img
# If compressed, decompress first
gunzip linode.img.gzRamNode supports multiple image formats. While RAW images work, converting to QCOW2 format offers better space efficiency and faster uploads.
Ubuntu/Debian:
sudo apt update && sudo apt install qemu-utils -yCentOS/Rocky/Alma:
sudo yum install qemu-img -ymacOS (with Homebrew):
brew install qemuConvert your RAW image to compressed QCOW2 format:
qemu-img convert -f raw -O qcow2 -c linode.img linode.qcow2The -c flag enables compression, significantly reducing file size. A 25GB RAW image might compress to 5-10GB depending on actual data usage.
qemu-img info linode.qcow2This displays image format, virtual size, and actual disk size.
| Format | Description | Recommended |
|---|---|---|
| QCOW2 | QEMU Copy-On-Write format, supports compression | Yes |
| RAW | Uncompressed disk image | Supported |
| VMDK | VMware virtual disk format | Supported |
| VDI | VirtualBox disk image format | Supported |
| VHD/VHDX | Microsoft Hyper-V format | Supported |
For images under 2GB, use the web-based upload:
For images larger than 2GB, use the OpenStack CLI for reliable uploads:
Download the authentication file from the Cloud control panel for your target region. Go to cloud.ramnode.com, navigate to API Access, and download the OpenRC file for your region.
Click the + symbol to create a new one if you don't already have one.
pip install python-openstackclientsource openrcYou'll be prompted for your password.
openstack image create --disk-format qcow2 --container-format bare --file <file.qcow2> <image-name>Replace <file.qcow2> with your image filename, and <image-name> with the name you want for the image.
openstack image create --disk-format qcow2 --container-format bare --file linode.qcow2 Linode-WebServer-MigrationNote: There is no progress bar. When it completes, it will return to the command prompt.
Tip: For detailed instructions on OpenStack CLI setup and usage, see our Region Migration Guide.
Once your image is uploaded and shows "Active" status:
After the instance reaches "Active" status:
# Connect via SSH
ssh root@YOUR_NEW_RAMNODE_IP
# Verify system is running correctly
uname -a
df -h
systemctl statusIf cloud-init was installed, network configuration should be automatic. Otherwise, manually configure networking:
# Check current IP configuration
ip addr show
# If using static IPs, update:
# /etc/netplan/*.yaml (Ubuntu 18.04+)
# /etc/sysconfig/network-scripts/ifcfg-* (CentOS/Rocky)Systematically verify all services are functioning:
# Check listening ports
ss -tulpn
# Verify web services
curl -I http://localhost
curl -I https://localhost
# Check database connectivity
mysql -u root -p -e "SHOW DATABASES;"
# or
psql -U postgres -c "\l"Review and update firewall configurations:
# UFW (Ubuntu)
sudo ufw status
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# firewalld (CentOS/Rocky)
sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reloadIf using Let's Encrypt, renew certificates after DNS propagation:
# Certbot certificate renewal
sudo certbot renew --dry-run
sudo certbot renew/var/log/cloud-init.log for configuration errorssystemctl status sshdIf your new instance has a larger disk than the source:
# Resize the filesystem to use full disk
sudo resize2fs /dev/vda1
# Or for XFS
sudo xfs_growfs /Need Help? RamNode's support team can assist with image uploads and troubleshooting boot issues. Submit a ticket at clientarea.ramnode.com or use the live chat for immediate assistance.
If block-level migration isn't suitable for your needs, consider a file-level approach using rsync. This method works well for simpler setups or when you want a clean slate.
# Sync home directories
rsync -avz --progress /home/ newserver:/home/
# Sync web files
rsync -avz --progress /var/www/ newserver:/var/www/
# Sync configuration
rsync -avz --progress /etc/nginx/ newserver:/etc/nginx/Migrating from Linode to RamNode is a straightforward process when following the proper steps. By using block-level disk imaging and RamNode's custom image upload feature, you can preserve your entire environment and minimize reconfiguration.