Backing Up a LXD Server

30 minutes
  • 3 Learning Objectives

About this Hands-on Lab

While there are multiple methods to backing up a LXD server, one way involves creating a second LXD server to work as a live spare that we can failover to should the need arise. This server will contain recent copies of our containers and should be set up to automatically receive these container copies. In this hands-on lab, we’ll be doing just that. We’ll create a secondary backup server, then write a short Bash script to copy over our backups. This script will then get added to our crontab to run automatically.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Configure the Remote

Log in to the "Backup Remote" server. LXD has already been installed, and only needs to be configured:

lxd init

Use the default settings until asked if LXD should be available over the network, then type yes. Bind to all addresses and the default port, then set the password to pinehead:

Would you like LXD to be available over the network? (yes/no) [default=no]: yes
Address to bind LXD to (not including port) [default=all]:
Port to bind LXD to [default=8443]:
Trust password for new clients: pinehead
Again: pinehead

On the LXD server, add the Backup server as a remote:

lxc remote add backups 10.0.1.110
Write a Backup Script

To create a backup, we want to work in two steps: Taking the snapshot and copying over the snapshot over to the backup remote. We also need to remove any existing backup snapshots and containers:

#! /bin/bash

containers="web1 db1"

for c in $containers
do
        lxc delete $c/backup &> /dev/null
        lxc snapshot $c backup
        lxc delete backup:$c &> /dev/null
        lxc copy local:${c}/backup backups:$c
done

When finished, ensure the script is executable:

chmod +x backups.sh
Add the Script to the Crontab

Add the script to your crontab:

crontab -e
0 0 * * * /home/cloud_user/backups.sh

Additional Resources

As part of the LXD-based container solution you and your team are working on, you wish to include a method of backing up your LXD containers. After some debate, your team settled on having a live secondary server that works as a LXD remote and receives copies of recent snapshots of each primary container (i.e., web1 and db1 but not web2), once a day at midnight.

Configure the provided second server as a remote, then write a script using your lxc command knowledge to take a recent snapshot and copy it to the new remote. Set cron to run the script.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?