You need to enable JavaScript to run this app.
导航

将 vePFS 中的数据定时备份到对象存储

最近更新时间2023.11.30 20:47:22

首次发布时间2023.11.30 20:47:22

本文介绍通过 tosutil 工具,将 vePFS 上的数据备份至对象存储 TOS 的流程及操作步骤。

适用场景

  • 保存在 vePFS 的训练的核心数据,对数据安全性要求比较高,需要把数据进行定期备份。

  • 训练过程中的 checkpoint 数据,定期同步到对象存储中,及时释放 vePFS 的存储空间。

前提条件

  • ECS 和 TOS 带宽均满足备份需求。

    • 不同规格的 ECS 实例的网络带宽不同,规格详情,请参见 ECS 规格说明

    • TOS 带宽的约束限制,请参见约束限制

  • 已创建对象存储 Bucket,具体步骤,请参见创建存储桶

  • 已在 ECS 挂载文件存储 vepfs,具体步骤,请参见挂载 vePFS

  • 已在 ECS 安装 tosutil 工具并完成初始化,具体步骤,请参见 安装 tosutil初始化 tosutil

备份流程

alt

操作步骤

步骤一:设置 vePFS 数据的定时备份

  1. 登录云服务 ECS。

  2. 执行以下命令,创建用于存放备份脚本和备份日志信息的目录。本文以创建 backp 目录为例。

    cd /opt
    mkdir backup
    
  3. 执行以下命令,创建备份脚本,本文以 backup_vepfs_to_tos.sh为例,并使用文本编辑器打开。

    vim backup_vepfs_to_tos.sh
    
  4. 在脚本中添加备份信息。

    说明

    该备份命令为增量备份,仅备份 vePFS 中新增和修改的文件到对象存储。

    #!/bin/bash
    
    # 指定要备份的源路径和目标路径,根据实际业务调整
    source_path="/mnt/vepfs/backup/files"
    bucket_name="your-tos-bucket"
    log_file="/opt/backup/backup.log"
    
    #备份参数命令
    jobs=32
    parallel=4
    
    # 备份命令,记录开始时间和结束时间,同时把tosutil的回显输出到日志文件中
    start_time=$(date +%Y-%m-%d_%H:%M:%S)
    echo "Start vepfs backup to tos: $start_time" >> $log_file
    tosutil cp -r -u -j $jobs -p $parallel $source_path tos://$bucket_name >> $log_file 2>&1
    end_time=$(date +%Y-%m-%d_%H:%M:%S)
    echo "Finish vepfs backup to tos: $end_time" >> $log_file
    

    备份参数说明如下:

    参数是否必须修改说明
    source_path需要备份的 vePFS 的文件路径。
    bucket_name数据备份的对象存储桶名称或者目录。
    log_file数据备份日志文件。
    jobstosutil 数据同步的并发任务数量。
    parallel大文件同步的分片数量。

步骤二:配置定时任务

  1. 执行以下命令,授予备份脚本执行权限。

    chmod +x backup_vepfs_to_tos.sh
    
  2. 执行以下命令,创建并编辑一个 cron 任务。

    crontab -e
    
  3. 在 cron 表中添加备份内容,本文以每天凌晨备份一次为例。详细配置命令信息请参见附录。

    0 0 * * * /bin/bash /opt/backup_vepfs_to_tos.sh
    
  4. 根据 backup.log 文件,查看备份开始、结束时间以及备份详情信息。

    说明

    备份详情信息包括:备份耗时时长、备份成功的文件数、备份失败的文件数、已经存在跳过的文件数以及备份文件容量。

附录:crontab 定时策略说明

cron 格式:* * * * * [your command]
参数说明如下。

位置说明示例
第一列 *表示执行分钟,取值范围为 0~595 * * * *:表示每五分钟执行。
第二列 *表示执行小时,取值范围为 0~230 * * * *:表示每小时执行。
第三列 *表示执行日期,取值范围为 1~310 0 * * *:表示每天执行。
第四列 *表示执行月份,取值范围为 1~120 0 1 * *:表示每月执行。
第五列 *表示执行星期,取值范围为 0~7,其中 07 均表示星期日。0 0 * * 0:表示每周执行。
your command表示要执行的命令。0 0 1 1 *:表示每年执行。

常见示例如下。

示例说明
30 8 * * *[your command]表示每天早上 8 点 30 分执行命令。
15 4 1,11,21 * *[your command]表示每月 1、11、21 号早上 4 点 15分 执行命令。
10 0 * * 0,3 [your command]表示每周日、周三的 00:10 执行命令。
0,30 18-21 * * * [your command]表示在每天 18:00 至 21:00 之间每隔 30 分钟执行命令。