cephfs snapshot schedule 测试

本文详述了CephFS中snapshot schedule的启用、配置与测试,包括周期设定、添加删除方法,以及在遇到故障如ceph-mds故障时的处理。测试显示,虽然可能出现snapshot延迟,但通过调整能恢复同步。此外,还探讨了配合snapshot mirror进行数据同步的场景。
摘要由CSDN通过智能技术生成

用途

支持 CephFS 中的 snapshot
用于协助 CephFS snapshot mirror 共同使用
实现本地 CephFS 集群自动创建 snapshot
配合 snapshot mirror 用于同步两个 CephFS 集群数据
由于 snapshot mirro r只会在创建 snapshot 后才执行同步所以属于异步同步

参考

cephfs snapshot mirror 调研

启用 snapshot schedule 功能

建议使用 ceph-17 版本
默认 snapshot schedule 默认不启用

# ceph mgr module ls | grep snap_schedule
snap_schedule      -     <- 默认不开启

启用 snapshot_schedule 功能

# ceph mgr module enable snap_schedule
# ceph mgr module ls | grep snap_schedule
snap_schedule      on

周期说明

设定 snapshot schedule 需要定义目录,时间周期,启动时间
重复的时间周期可以通过下面方法定义

参考下面时间定义方法, 最小时间周期为小时

h(our)
d(ay)
w(eek)
M(onth) 
Y(ear)

可以对同一个目录重复设定多个时间周期

7d 意味着可以保留 7 个快照,每次快照像相隔 1 天
10h 代表可以保留 10 个快照,每个快照相隔一个小时
。。。 以此类推

添加, 删除 snap-schedule 方法

example 1

ceph fs snap-schedule add / 1h   # 每小时一次, 现在开始
ceph fs snap-schedule add / 1h 11:55  # 每小时一次从 11:56 开始
ceph fs snap-schedule add / 2h 11:55  # 两小时一次,从 11:56 开始
ceph fs snap-schedule remove / 1h 11:55 # 只删除从 11:55 开始的 schedule
ceph fs snap-schedule remove / 1h # 删除所有 1 小时周期的 schedule 
ceph fs snap-schedule remove /    # 删除所有跟 / 相关的 schedule

example 2 保留策略

ceph fs snap-schedule retention add / h 24 # 每小时一次 snapshot,保留 24 个副本
ceph fs snap-schedule retention add / d 7 # 每天一个 snapshot, 保留 7 副本
ceph fs snap-schedule retention remove / h 24 # 移除每小时一次 24 副本策略
ceph fs snap-schedule retention add / 24h4w # 24 小时一次副本, 保留 4 周
ceph fs snap-schedule retention remove / 7d4w # 移除上面的策略

example 3

ceph fs snap-schedule activate /    # 激活 / 相关所有策略
ceph fs snap-schedule deactivate /  # 屏蔽所有  / 相关策略

限制

根据官方文档提示有下面几种限制
ceph snapshot schedule 通过 python 实现,可能由于某些原因,时钟漂移,系统繁忙等, schedule 时间可能会延时,但不会影响整体 snapshot 计划
每个 snapshot 目录最大只能够保留 50 个副本

In order to somewhat limit the overall number of snapshots in a file system, 
the module will only keep a maximum of 50 snapshots per directory. 
If the retention policy results in more then 50 retained snapshots, 
the retention list will be shortened to the newest 50 snapshots.

测试

利用下面脚本实现每分钟创建 200 个文件
文件目录都只写入 /mnt/test_fs/store/ai/train 下
对 /mnt/test_fs/store/ai/train 目录创建 snapshot 计划 (一小时一个副本保留 1 天)

测试脚本

#!/bin/bash
#
#  directory example
#
#
#  /mnt/test_fs/store/ai/train   <- snapshot 当前目录
#
#  下面是 branch 目录结构
#  每分钟生成一个目录  ( yyyymmdd/hh/mm/ )  然后创建 branchdir 目录,文件写入该目录
#
#  20240220/09/10/branchdir/files
#  20240220/09/11/branchdir/files
#  20240220/09/12/branchdir/files
#  为避免打爆 cephfs 空间,branch file 数据至保留 10 天足够

dest_dir="/mnt/test_fs/store/ai/train"
source_file=/tmp/1m.txt


function create_file_200 {
    dst=$1
    if [ ! -d "$dst/branch" ]
    then
            mkdir -p $dst/branch
            for num in `seq 1 200`
            do
                    cp $source_file $dst/branch/$num.txt
            done
    fi
}

while [ 1 ]
do
    date_dir=`date +%Y%m%d`
    hour_dir=`date +%H`
    min_dir=`date +%M`

    remove_date=`date +%Y%m%d --date='10 days ago'`
    remove_dir=$dest_dir/$remove_date

    detail_dir=$dest_dir/$date_dir/$hour_dir/$min_dir

    if [ ! -d  $detail_dir ]
    then
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值