1. 首页 > 技术分享 > 正文

Raksmart Linux服务器部署AI模型系列教程:无RAID卡数据安全rsync自动备份模型与日志到Raksmart Object Storage

主机推荐小编为您整理Raksmart Linux服务器部署AI模型系列教程中无RAID卡数据安全rsync自动备份模型与日志到Raksmart Object Storage,如果 没有RAID卡 的 Raksmart Linux 服务器上,如何使用 rsync 实现 AI模型文件 和 训练/推理日志 的自动备份,并将这些备份安全地存储到 Raksmart Object Storage 中。

核心思想:

  1. 无 RAID 意味着单盘风险: 我们无法依赖硬件级别的磁盘冗余。任何单块磁盘故障都可能导致数据丢失。

  2. rsync 作为高效同步工具: 用于将本地目录(模型和日志)精确、高效地同步到另一个位置(本地备份盘或挂载的对象存储)。

  3. Raksmart Object Storage 作为最终保险库: 提供高持久性、可扩展的异地存储,即使服务器物理损坏也能保护数据。

  4. 自动化: 使用 cron 定期执行备份任务。

方案选择:
我们将采用 双重备份 策略以增强安全性:

  1. 本地备份 (可选但推荐): 使用 rsync 将关键数据同步到服务器上的 另一块独立物理硬盘(非系统盘)。这提供快速的本地恢复点。

  2. 云备份 (核心): 使用 rsync 将数据同步到 挂载为本地文件系统 的 Raksmart Object Storage。这是我们的最终异地保险库。

前提条件:

  1. Raksmart Linux 服务器: 已安装并运行您的 AI 模型环境。

  2. Raksmart Object Storage 服务: 已开通并创建好一个用于存储备份的 存储桶 (Bucket)。记下桶名称(如 ai-backups)。

  3. Object Storage 访问密钥: 获取具有读写该 Bucket 权限的 Access Key ID 和 Secret Access Key

  4. 本地备份硬盘 (推荐): 一块已格式化的额外硬盘(如 /dev/sdb1),挂载到某个目录(如 /mnt/local_backup)。

  5. 服务器权限: 需要 root 或具有 sudo 权限的用户。

  6. 安装必要工具:

    • rsync (通常系统自带)

    • S3 挂载工具: 我们使用 rclone (推荐,功能强大稳定) 或 s3fs-fuse (较简单)。本教程以 rclone 为例。

步骤详解:

步骤 1: 安装并配置 rclone (用于挂载 Object Storage)

  1. 安装 rclone:

    bash
    # 对于 Debian/Ubuntu
    sudo apt-get update
    sudo apt-get install rclone
    
    # 对于 CentOS/RHEL
    sudo yum install epel-release  # 如果未启用 EPEL
    sudo yum install rclone

    或者使用官方脚本:

    bash
    curl https://rclone.org/install.sh | sudo bash
  2. 配置 rclone 连接 Raksmart Object Storage:

    bash
    rclone config
    • 输入 n 创建一个新 remote。

    • 输入一个名称,例如 raksmart_s3

    • 在存储类型列表中,找到并选择与 Raksmart Object Storage API 兼容 的提供商。Raksmart 对象存储通常兼容 Amazon S3 协议。选择 s3

    • 配置 provider:如果 Raksmart 有特定提供商选项(如 Other),请选择它。否则选择 AWS 通常也能兼容。

    • 关键步骤: 输入您的 access_key_id 和 secret_access_key

    • region: 输入 Raksmart Object Storage 所在的区域(如 us-east-1,具体请咨询 Raksmart 文档或控制台)。

    • endpoint这是最重要的设置! 输入 Raksmart Object Storage 的 S3 兼容 API 端点地址。例如 https://s3.[region].raksmart.com 或 https://[your-bucket-endpoint]务必查阅 Raksmart 官方文档获取确切的端点 URL。

    • 其他选项如 location_constraintacl 通常可以按回车使用默认值,除非有特殊需求。

    • 配置完成后,测试连通性:

      bash
      rclone lsd raksmart_s3:  # 应该列出您的存储桶
      rclone lsd raksmart_s3:ai-backups  # 查看桶内内容 (确保桶已存在)

步骤 2: 创建挂载点并挂载 Object Storage

  1. 创建本地挂载目录:

    bash
    sudo mkdir -p /mnt/raksmart_backup
  2. 挂载 Object Storage Bucket:
    使用 rclone mount 命令将 Bucket 挂载为一个本地目录:

    bash
    sudo mkdir -p /etc/systemd/system/rclone-mount.service.d/  # 创建服务配置目录
    sudo nano /etc/systemd/system/rclone-mount.service

    将以下内容粘贴到文件中,替换 YourRemoteName 和 YourBucketName

    ini
    [Unit]
    Description=Rclone Mount for Raksmart Object Storage (AI Backups)
    After=network-online.target
    
    [Service]
    Type=notify
    ExecStart=/usr/bin/rclone mount \
        --vfs-cache-mode writes \
        --allow-other \
        --dir-cache-time 24h \
        --vfs-read-chunk-size 128M \
        --vfs-read-chunk-size-limit off \
        --buffer-size 256M \
        --log-level INFO \
        --log-file /var/log/rclone-mount.log \
        YourRemoteName:YourBucketName /mnt/raksmart_backup
    ExecStop=/bin/fusermount -u /mnt/raksmart_backup
    Restart=on-failure
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    • --vfs-cache-mode writes: 启用写缓存,提高性能。

    • --allow-other: 允许其他用户(如您的 AI 进程用户)访问挂载点。

    • --dir-cache-time 24h: 缓存目录列表信息 24 小时,减少 API 调用。

    • --vfs-read-chunk-size 128M--buffer-size 256M: 调整读写块大小和缓冲区以提高大文件(模型)传输效率。

    • --log-level INFO--log-file ...: 设置日志级别和路径方便排查问题。

    • 重要: 将 YourRemoteName 替换为步骤 1 中配置的 remote 名称(如 raksmart_s3),将 YourBucketName 替换为您的备份桶名称(如 ai-backups)。

  3. 启用并启动挂载服务:

    bash
    sudo systemctl daemon-reload
    sudo systemctl enable rclone-mount.service  # 开机自动挂载
    sudo systemctl start rclone-mount.service
  4. 验证挂载:

    bash
    sudo systemctl status rclone-mount.service  # 检查服务状态,应为 active (running)
    ls /mnt/raksmart_backup  # 应该能看到桶的内容(可能是空的)
    df -hT | grep rclone  # 应该能看到 /mnt/raksmart_backup 的挂载信息

步骤 3: (推荐) 准备本地备份目录

如果使用了额外的本地备份硬盘:

  1. 确保硬盘已挂载到 /mnt/local_backup (或您选择的路径)。

  2. 在挂载点下创建用于备份的目录结构:

    bash
    sudo mkdir -p /mnt/local_backup/ai_models
    sudo mkdir -p /mnt/local_backup/ai_logs

    调整目录所有者和权限,确保运行 AI 进程的用户有读写权限:

    bash
    sudo chown -R your_ai_user:your_ai_group /mnt/local_backup/ai_models /mnt/local_backup/ai_logs
    sudo chmod -R u+rwX /mnt/local_backup/ai_models /mnt/local_backup/ai_logs

    (your_ai_user 和 your_ai_group 替换为实际运行模型训练/推理的用户和组,如 ubuntu:ubuntu 或 aiuser:aigroup)

步骤 4: 创建备份脚本 (使用 rsync)

我们将编写一个 Bash 脚本 (ai_backup.sh) 来执行备份逻辑。它将:

  1. 备份 AI 模型目录到本地备份盘 (如果启用)。

  2. 备份 AI 模型目录到挂载的 Object Storage。

  3. 备份 AI 日志目录到挂载的 Object Storage。

  4. 创建脚本文件:

    bash
    sudo nano /usr/local/bin/ai_backup.sh
  5. 编写脚本内容 (替换占位符!):

    bash
    #!/bin/bash
    
    # ===== 配置部分 (根据实际情况修改!) =====
    # 源目录 (AI 模型和日志)
    SOURCE_MODELS="/path/to/your/ai/models"  # 替换为您的模型存储目录绝对路径
    SOURCE_LOGS="/path/to/your/ai/logs"      # 替换为您的日志存储目录绝对路径
    
    # 本地备份目标 (可选)
    ENABLE_LOCAL_BACKUP=true                 # 设置为 false 禁用本地备份
    LOCAL_BACKUP_ROOT="/mnt/local_backup"    # 本地备份盘挂载点
    LOCAL_MODELS_DIR="$LOCAL_BACKUP_ROOT/ai_models"  # 本地模型备份目录
    LOCAL_LOGS_DIR="$LOCAL_BACKUP_ROOT/ai_logs"     # 本地日志备份目录
    
    # Object Storage 挂载点 (来自步骤2)
    OBJECT_STORAGE_MOUNT="/mnt/raksmart_backup"
    # Object Storage 下的目标目录结构
    OBJ_MODELS_DIR="$OBJECT_STORAGE_MOUNT/models"   # 对象存储中的模型目录
    OBJ_LOGS_DIR="$OBJECT_STORAGE_MOUNT/logs"       # 对象存储中的日志目录
    
    # 备份保留策略 (可选,按需调整)
    # 例如,保留最近30天的日志备份 (在对象存储端实现更佳)
    # LOG_RETENTION_DAYS=30
    # find "$OBJ_LOGS_DIR" -type f -mtime +$LOG_RETENTION_DAYS -exec rm -f {} \;
    
    # rsync 选项 (常用)
    RSYNC_OPTS="-avh --delete --progress"  # 归档模式, 详细, 人类可读, 删除目标多余文件, 显示进度
    # ===== 配置结束 =====
    
    # 记录开始时间
    echo "===== AI 模型 & 日志备份开始 @ $(date) ====="
    
    # 检查源目录是否存在
    if [ ! -d "$SOURCE_MODELS" ]; then
        echo "[错误] 模型源目录不存在: $SOURCE_MODELS" >&2
        exit 1
    fi
    if [ ! -d "$SOURCE_LOGS" ]; then
        echo "[警告] 日志源目录不存在: $SOURCE_LOGS" >&2
        # 可以选择 exit 1 或者继续备份模型
    fi
    
    # === 1. (可选) 本地备份 ===
    if [ "$ENABLE_LOCAL_BACKUP" = true ]; then
        echo "-- 开始本地备份 (模型) --"
        # 确保本地备份目录存在
        mkdir -p "$LOCAL_MODELS_DIR"
        # 执行 rsync 备份模型
        rsync $RSYNC_OPTS "$SOURCE_MODELS/" "$LOCAL_MODELS_DIR/"
    
        if [ -d "$SOURCE_LOGS" ]; then
            echo "-- 开始本地备份 (日志) --"
            mkdir -p "$LOCAL_LOGS_DIR"
            rsync $RSYNC_OPTS "$SOURCE_LOGS/" "$LOCAL_LOGS_DIR/"
        fi
    else
        echo "-- 本地备份已禁用 --"
    fi
    
    # === 2. 备份到 Raksmart Object Storage (核心) ===
    # 检查对象存储挂载点是否正常
    if ! mount | grep -q "$OBJECT_STORAGE_MOUNT"; then
        echo "[错误] Object Storage 挂载点 $OBJECT_STORAGE_MOUNT 未挂载!尝试重启服务..." >&2
        systemctl restart rclone-mount.service
        sleep 10
        if ! mount | grep -q "$OBJECT_STORAGE_MOUNT"; then
            echo "[严重错误] 重启后仍无法挂载 Object Storage!备份中止。" >&2
            exit 2
        fi
    fi
    
    # 确保对象存储目标目录存在
    mkdir -p "$OBJ_MODELS_DIR"
    mkdir -p "$OBJ_LOGS_DIR"
    
    # 备份模型到对象存储
    echo "-- 开始云备份 (模型) --"
    rsync $RSYNC_OPTS "$SOURCE_MODELS/" "$OBJ_MODELS_DIR/"
    
    # 备份日志到对象存储 (如果源目录存在)
    if [ -d "$SOURCE_LOGS" ]; then
        echo "-- 开始云备份 (日志) --"
        rsync $RSYNC_OPTS "$SOURCE_LOGS/" "$OBJ_LOGS_DIR/"
    fi
    
    # 记录结束时间
    echo "===== AI 模型 & 日志备份完成 @ $(date) ====="

    重要提示:

    • 仔细替换 SOURCE_MODELS 和 SOURCE_LOGS 为您的实际路径。

    • 如果不需要本地备份,将 ENABLE_LOCAL_BACKUP 设置为 false

    • 确保 OBJECT_STORAGE_MOUNT 与步骤 2 中的挂载点一致。

    • OBJ_MODELS_DIR 和 OBJ_LOGS_DIR 定义了在对象存储桶内创建的子目录结构,按需修改。

    • RSYNC_OPTS 可以根据需求调整。--delete 会删除目标端源端已经不存在的文件,确保严格同步。请谨慎使用,确保目标路径正确! 如果不想删除目标端的旧文件,去掉 --delete

    • 脚本包含了简单的挂载点状态检查和自动重启服务的逻辑,增加健壮性。

  6. 设置脚本权限:

    bash
    sudo chmod +x /usr/local/bin/ai_backup.sh
    # 如果您的 AI 用户需要直接执行,调整所有权:
    sudo chown your_ai_user:your_ai_group /usr/local/bin/ai_backup.sh

步骤 5: 配置 cron 定时任务实现自动化

使用 cron 定期执行备份脚本。

  1. 编辑 crontab:

    bash
    sudo crontab -e  # 编辑 root 的 cron 任务
    # 或者,如果您的 AI 用户有足够权限 (能写挂载点和本地备份目录):
    # sudo -u your_ai_user crontab -e
  2. 添加定时任务行:
    例如,每天凌晨 2 点执行一次备份:

    bash
    0 2 * * * /usr/local/bin/ai_backup.sh >> /var/log/ai_backup.log 2>&1
    • 0 2 * * *: 表示每天 02:00 AM。

    • /usr/local/bin/ai_backup.sh: 备份脚本的完整路径。

    • >> /var/log/ai_backup.log: 将脚本的标准输出追加到日志文件。

    • 2>&1: 将标准错误也重定向到同一个日志文件。
      其他常见计划示例:

    • 每小时一次:0 * * * * ...

    • 每 6 小时一次:0 */6 * * * ...

    • 每周日凌晨 3 点:0 3 * * 0 ... (周日是 0 或 7)
      根据您的模型训练/更新频率和日志量选择合适的时间间隔。

  3. 保存并退出编辑器。

步骤 6: 测试与验证

  1. 手动运行脚本测试:

    bash
    sudo /usr/local/bin/ai_backup.sh  # 或者用您的 AI 用户运行
    • 仔细观察输出,检查是否有错误信息。

    • 检查 /var/log/ai_backup.log (或您指定的日志文件)。

    • 检查本地备份目录 (/mnt/local_backup/ai_models/mnt/local_backup/ai_logs) 是否同步了文件。

    • 检查挂载点下的对象存储目录 (/mnt/raksmart_backup/models/mnt/raksmart_backup/logs) 是否同步了文件。

    • 登录 Raksmart 对象存储控制台,确认 Bucket 中的 models 和 logs 目录下是否出现了预期的文件。

  2. 模拟文件变更测试:

    • 在 SOURCE_MODELS 中添加、修改或删除一个测试文件。

    • 再次手动运行备份脚本。

    • 检查本地备份和目标对象存储是否正确地反映了这次变更(新文件出现、旧文件更新或删除)。

  3. 检查定时任务:

    • 等待设定的备份时间点。

    • 检查 /var/log/ai_backup.log 是否有新的备份记录。

    • 再次检查本地和云端备份目录内容是否更新。

关键注意事项与最佳实践:

  1. 安全性:

    • 保护密钥: Access Key ID 和 Secret Access Key 是最高机密!确保 rclone 配置文件 (~/.config/rclone/rclone.conf) 的权限设置严格 (如 600)。避免在脚本中明文写入密钥。

    • 最小权限: 为备份使用的 API 密钥分配最小必要权限(仅能读写特定的备份 Bucket)。

    • 脚本权限: 确保备份脚本和日志文件权限合理,防止未授权访问。

    • 挂载点权限: --allow-other 选项方便但也扩大了访问范围,确保系统本身安全。

  2. 数据一致性:

    • 备份时机: 如果模型在训练过程中频繁更新,确保备份发生在训练任务结束或检查点保存之后。避免备份到一半的模型文件。可以考虑在训练脚本中显式调用备份脚本。

    • 日志轮转: 如果使用日志轮转工具 (如 logrotate),确保在轮转发生进行备份,或者备份最新的日志文件 (*.log) 和轮转后的归档 (*.log.1.gz 等)。

  3. 存储成本与生命周期:

    • 对象存储成本: 了解 Raksmart Object Storage 的存储费用、请求费用(PUT, GET, LIST)和流量费用。频繁同步小文件会增加请求成本。调整 --dir-cache-time 可以减少 LIST 请求。

    • 生命周期策略: 在 Raksmart 对象存储控制台为您的备份 Bucket 配置 生命周期规则 (Lifecycle Rules)。例如:

      • 将日志文件在 30 天后自动转换为低频访问或归档存储类型以降低成本。

      • 永久保留重要的模型版本快照。

      • 自动删除超过一定期限(如 1 年)的旧日志备份。这通常比在脚本中用 find 删除更可靠和高效。

  4. 性能:

    • 首次备份慢: 第一次运行 rsync 到对象存储会较慢,因为要上传所有数据。后续增量同步会快很多。

    • 网络带宽: 确保服务器的上行带宽足够,避免备份占用过多带宽影响 AI 任务。可以在 rclone mount 或 rsync 中考虑限速选项(如 rclone mount --bwlimit)。

    • rsync vs rclone copy/sync: 直接使用 rclone copy 或 rclone sync 命令也能同步到对象存储,且可能在某些场景下比通过挂载点用 rsync 效率更高。但本教程的挂载点方法更直观,便于统一使用 rsync 处理本地和云端备份,也方便直接浏览备份文件。如果性能成为瓶颈,可以考虑改用 rclone sync SOURCE remote:bucket/path 命令直接同步。

  5. 监控与告警:

    • 监控日志: 定期检查 /var/log/ai_backup.log 和 /var/log/rclone-mount.log,确保备份成功运行。

    • 脚本退出状态: 在更复杂的脚本中,可以捕获 rsync 的退出状态码 ($?),并在失败时发送告警邮件(例如使用 mail 命令或集成监控系统如 Nagios, Prometheus)。

    • 监控挂载点: 确保 rclone-mount.service 持续运行。可以在脚本中加入更健壮的状态检查和告警。

  6. 灾难恢复计划:

    • 定期(如每季度)测试恢复流程!从本地备份和对象存储备份中分别恢复一些模型和日志文件到测试环境,验证备份的有效性和恢复步骤的可行性。这是确保备份价值的关键步骤。

总结:

通过这套方案,您在没有硬件 RAID 保护的 Raksmart Linux 服务器上,利用 rsync 的强大同步能力和 rclone 对对象存储的便捷访问,实现了 AI 模型和日志数据的自动化双重备份(本地+云端)。本地备份提供快速恢复点,Raksmart Object Storage 提供异地的高持久性保障。结合 cron 的定时任务和合理的监控告警,可以显著提升您的 AI 应用的数据安全性和业务连续性。务必牢记测试恢复流程和关注安全配置!

年中钜惠 全线福利价

热销VPS $1.99/月起,多款产品享年付半价还加赠时长!促销产品拼团购买,立享折上8折优惠。

1. 注册成为RAKsmart用户均可领取产品优惠券;

2. 产品折扣券为指定产品的专属折扣券,仅限指定产品下单使用;

3. 产品折扣券有效期与活动同步,在活动会场下单可直接使用;

4. 产品折扣券活动最终解释权为RAKsmart 所有。

爆款秒杀 续费同价 

产品 CPU 内存 硬盘 带宽/流量 秒杀价/月 购买链接
LA E3 – 1230 16G  1T HDD 大陆优化VIP 100M 独享 不限 $49.00 点击购买
LA E3 – 1230 16G 1T HDD  国际BGP 1G 独享 不限 $59.00 点击购买
LA Bare – E5 – 2620 32G 1T 机械硬盘 1T 机械硬盘 $109.00 点击购买
LA E5 – 2683v4*2 64G 1T SSD 国际BGP 1G 独享 不限 $199.00 点击购买

1. 秒杀产品购买后,不支持退款;

2. 秒杀产品美国时间0点(北京时间16点)开放库存;

3. 秒杀产品每日限量20台,先到先得,售完即止;

4. 秒杀产品每个用户当月限购5台;

5. 新用户专享秒杀限30天内新注册用户购买,每个秒杀产品限购1台;

6. 秒杀活动注册成为RAKsmart用户均可参与,且最终解释权为RAKsmart所有。更多年中钜惠全线活动可查看详情页

主机推荐小编温馨提示:以上是小编为您整理发布的Raksmart Linux服务器部署AI模型系列教程:无RAID卡数据安全rsync自动备份模型与日志到Raksmart Object Storage。更多知识分享可持续关注我们,raksmart机房更有多款云产品免费体验,助您开启全球上云之旅。

本文由网上采集发布,不代表我们立场,转载联系作者并注明出处:https://www.tuihost.com/12625.html

联系我们

在线咨询:点击这里给我发消息

微信号:17713241060

工作日:9:30-18:30,节假日休息