使用mutipath -l可以查看到本地是否有日立的外挂存储,接着通过这个条件,过滤出我们需要的所有磁盘信息,再加以处理,就是我们需要的结果:
touch pysi_size.txt hi_size.txt
cat /dev/null > pysi_size.txt
cat /dev/null > hi_size.txt
dm_hit="""`sudo multipath -l |grep "dm-" |grep HITACHI |awk '{print $2}'`"""
dm_pysical="""`sudo multipath -l |grep "dm-" |grep -v HITACHI |awk '{print $2}'`"""
for i in `echo $dm_pysical`; do
pysi_size=`sudo multipath -l |grep "$i" -A1 |grep size |awk '{print $1}' |awk -F= '{if ($2~/G/) sub(/G/,"",$2); print $2}'`
echo $pysi_size >> pysi_size.txt
done
for i in `echo $dm_hit`; do
hit_size=`sudo multipath -l |grep "$i" -A1 |grep size |awk '{print $1}' |awk -F= '{if ($2~/G/) {sub(/G/,"",$2); print $2} else {sub(/T/,"",$2); print 1024*$2}}'`
echo $hit_size >> hi_size.txt
done
cat pysi_size.txt |awk '{(pysi_sum+=$1)} END {print pysi_sum}'
cat hi_size.txt |awk '{(hi_sum+=$1)} END {print hi_sum}'
我们使用的是临时文件的方式,让计算出来的数值,先存入文件;
另外,就是awk的条件判断,通过匹配G和T来进行不同的计算。
上面的脚本执行时候有点问题,后续研究,换了一种方法:
#!/bin/bash
touch pysi_size.txt hit_size.txt
cat /dev/null > pysi_size.txt
cat /dev/null > hit_size.txt
dm_pysical="""`sudo multipath -l |grep "dm-" |grep -v HITACHI |awk '{print $2}'`"""
dm_hit="""`sudo multipath -l |grep "dm-" |grep HITACHI |awk '{print $2}'`"""
for i in `echo $dm_pysical`; do
pysi_size=`sudo multipath -l |egrep "\<$i\>" -A1 |grep size |awk '{print $1}'`
echo $pysi_size >> pysi_size.txt
done
for j in `echo $dm_hit`; do
hit_size=`sudo multipath -l |egrep "\<$j\>" -A1 |grep size |awk '{print $1}'`
echo $hit_size >> hit_size.txt
done
sum_pysi=0
for k in `cat pysi_size.txt`; do
if echo $k |grep G &> /dev/null; then
pysi_num=`echo $i |tr -d G`
elif echo $k |grep T &> /dev/null; then
pysi_tr=`echo $k |tr -d T`
pysi_num=`echo "1024*${pysi_tr}" |bc`
fi
sum_pysi=`echo "${sum_pysi}+${pysi_num}" |bc`
done
sum_hi=0
for l in `cat hit_size.txt`; do
if echo $l |grep G &> /dev/null; then
hi_num=`echo $l |tr -d G`
elif echo $l |grep T &> /dev/null; then
hi_tr=`echo $l |tr -d T`
hi_num=`echo "1024*${hi_tr}" |bc`
fi
sum_hi=`echo "${sum_hi}+${hi_num}" |bc`
done
echo $sum_pysi $sum_hi
rm pysi_size.txt hit_size.txt
转载请注明:liutianfeng.com » 计算本地磁盘和外挂磁盘的脚本