跳至内容

第 10 章:自动化快照

在本章中,您需要以 root 用户身份或能够使用 sudo 获得 root 权限。

自动化快照过程会让一切变得更加轻松。

自动化快照复制过程

在 lxd-primary 上执行此过程。您需要做的第一件事是创建一个脚本,该脚本将在 /usr/local/sbin 中由 cron 运行,名为“refresh-containers”。

sudo vi /usr/local/sbin/refreshcontainers.sh

该脚本非常简洁

#!/bin/bash
# This script is for doing an lxc copy --refresh against each container, copying
# and updating them to the snapshot server.

for x in $(/var/lib/snapd/snap/bin/lxc ls -c n --format csv)
        do echo "Refreshing $x"
        /var/lib/snapd/snap/bin/lxc copy --refresh $x lxd-snapshot:$x
        done

使其可执行

sudo chmod +x /usr/local/sbin/refreshcontainers.sh

将此脚本的所有权更改为您的 lxdadmin 用户和组。

sudo chown lxdadmin.lxdadmin /usr/local/sbin/refreshcontainers.sh

为 lxdadmin 用户设置 crontab 以运行此脚本,在本例中为晚上 10 点。

crontab -e

您的条目将如下所示:

00 22 * * * /usr/local/sbin/refreshcontainers.sh > /home/lxdadmin/refreshlog 2>&1

保存更改并退出。

这将在 lxdadmin 的主目录中创建一个名为“refreshlog”的日志,该日志将告知您过程是否成功。非常重要!

自动化程序有时会失败。这通常发生在某个特定容器刷新失败时。您可以使用以下命令手动重新运行刷新(此处假设 rockylinux-test-9 是我们的容器)。

lxc copy --refresh rockylinux-test-9 lxd-snapshot:rockylinux-test-9

作者:Steven Spencer

贡献者:Ezequiel Bruni, Ganna Zhyrnova