简单的统计剩余ceph迁移时间

需求

由于迁移忽快忽慢,需要知道大概的迁移的时间,做了一个简单的统计脚本,可能不准,大概能够知道在什么范围内

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/sh
while ( 2>1 )
do
start=`ceph -s|grep pgs|grep mis|awk '{print $2}'|cut -d / -f 1`
sleep 5
end=`ceph -s|grep pgs|grep mis|awk '{print $2}'|cut -d / -f 1`
speed=$((start-end))
#echo $end
#echo $speed
second=$((end/speed*5))

hour=$(( $second/3600 ))
min=$(( ($second-${hour}*3600)/60 ))
sec=$(( $second-${hour}*3600-${min}*60 ))
echo 当前时间:`date`
echo 迁移剩余:$end
echo 迁移速度:$((speed/5))
echo 迁移还需要:${hour}小时${min}${sec}

done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/sh
while ( 2>1 )
do
start=`ceph -s -f json-pretty|grep misplaced_objects|cut -d ":" -f 2|cut -d ',' -f 1`
sleep 5
end=`ceph -s -f json-pretty|grep misplaced_objects|cut -d ":" -f 2|cut -d ',' -f 1`
speed=$((start-end))
#echo $end
#echo $speed
second=$((end/speed*5))

hour=$(( $second/3600 ))
min=$(( ($second-${hour}*3600)/60 ))
sec=$(( $second-${hour}*3600-${min}*60 ))
echo 当前时间:`date`
echo 迁移剩余:$end
echo 迁移速度:$((speed/5))
echo 迁移还需要:${hour}小时${min}${sec}

done

上面的脚本有的时候获取的字段不对,后面的一个脚本获取的好一点
上面的统计周期为5秒,理论上设置的周期越长,统计的越接近真实的