输入
ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS
7 ssd 0.01949 1.00000 20 GiB 9.8 MiB 4.6 MiB 0 B 5.2 MiB 20 GiB 0.05 0.02 1 up
6 ssd 0.01949 1.00000 20 GiB 9.9 MiB 4.6 MiB 0 B 5.3 MiB 20 GiB 0.05 0.02 1 up
5 ssd 0.01949 1.00000 20 GiB 10 MiB 4.6 MiB 1 KiB 5.4 MiB 20 GiB 0.05 0.02 1 up
4 ssd 0.01949 1.00000 20 GiB 9.9 MiB 4.6 MiB 0 B 5.4 MiB 20 GiB 0.05 0.02 1 up
3 ssd 0.01949 1.00000 20 GiB 9.9 MiB 4.6 MiB 0 B 5.4 MiB 20 GiB 0.05 0.02 1 up
2 ssd 0.01949 1.00000 20 GiB 10 MiB 4.6 MiB 0 B 5.4 MiB 20 GiB 0.05 0.02 1 up
1 ssd 0.01949 1.00000 20 GiB 10 MiB 4.6 MiB 0 B 5.5 MiB 20 GiB 0.05 0.02 1 up
0 ssd 0.01949 1.00000 20 GiB 3.3 GiB 3.3 GiB 0 B 11 MiB 17 GiB 16.45 7.84 1 up
TOTAL 160 GiB 3.4 GiB 3.3 GiB 1.0 KiB 49 MiB 157 GiB 2.10
如果%USE > 门限值,则进行相应处理。
#!/bin/bash
# 指定阈值
file=$1
threshold=$2
# 读取文件内容,去掉首字符不是数字的行,提取ID字段和%USE字段
while read line; do
#echo "$line"
if [[ "$line" =~ ^[[:digit:]] ]]; then
id=$(echo "$line" | awk -F '[[:space:]][[:space:]]+' '{print $1}')
use=$(echo "$line" | awk -F '[[:space:]][[:space:]]+' '{print $11}')
if (( $(echo "$use > $threshold" | bc -l) )); then
echo "ID:$id use:$use,超过了门限$threshold,执行关闭"
echo ceph osd out $id
fi
fi
done < $file