heartbeat是开源的高可用集群软件,在红旗5.0和asianux3上面都是默认安装的,但是版本是1.2.2比较低。对于磁盘阵列的挂载和卸载部分,heartbeat自带filesystem来处理,正在看其中的脚本,可以从中了解hb到底是怎么判断磁盘挂载卸载的,以备后用。
前几天实施redflag ha cluster le版本时遇到磁盘阵列的问题。用户采购了两套le镜像版本,而且他的软件环境的确是镜像版本可实现的,但是由于其中一套ha环境监控的应用服务和主机上的另一个装在盘阵上的视频应用服务息息相关,也就是说本来这个使用磁盘阵列的视频应用想在单机跑,然而由于其与ha监控的应用必须在一台机器上才行,所以这个视频应用也要加到ha中来。
redflag ha cluster le版本是专门针对镜像磁盘的,配置文件中无法添加磁盘阵列的分区,也就是说这个le版本无法处理磁盘阵列。当然,redflag ha cluster 中启动停止应用都是脚本来做的,这样就非常灵活了,可以将磁盘阵列的处理部分放在脚本里面启动应用之前。
另外在脚本挂载和卸载部分还加入了一步:将磁盘设置为只读。采用的是blockdev命令
/sbin/blockdev --setrw ${device}
/sbin/blockdev --setro ${device}
此处贴出挂载盘阵和卸载盘阵时对盘阵分区的判断脚本:
挂载分区脚本部分:
## mount storage disk ##
device=/dev/sdb1
mountpoint=/opt/trs
/sbin/blockdev --setrw ${device} >/dev/null 2>&1
mount ${device} ${mountpoint} >/dev/null 2>&1
case $? in
0)
echo "done."
;;
32)
echo "already mounted, proceeding."
fuser -s -m -k ${device} >/dev/null 2>&1
sleep 5
umount ${device}
mount ${device} ${mountpoint} >/dev/null 2>&1
;;
*)
echo "-----------------------------------" >>/opt/redflag/hacluster/log/mount.txt
date >>/opt/redflag/hacluster/log/mount.txt
echo "-----------------" >>/opt/redflag/hacluster/log/mount.txt
echo "con not mount ${device}" >>/opt/redflag/hacluster/log/mount.txt
;;
esac
## mount storage disk ok ##
|
卸载分区脚本部分:
## umount storage disk ##
device=/dev/sdb1
mountpoint=/opt/trs
fuser -s -m -k ${device} >/dev/null 2>&1
sleep 3
umount ${device} >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo " done."
else
echo " failed, attempting kill ... \c"
fuser -s -m -k ${device} >/dev/null 2>&1
sleep 5
fuser -s -k ${device} >/dev/null 2>&1
sleep 5
fuser -m -k ${device} >/dev/null 2>&1
sleep 2
umount ${device} >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "--------------------------------------" >>/opt/redflag/hacluster/log/umount.txt
date >>/opt/redflag/hacluster/log/umount.txt
echo "-----------------" >>/opt/redflag/hacluster/log/umount.txt
echo "can not umount ${device}" >>/opt/redflag/hacluster/log/umount.txt
fuser -m ${device} >>/opt/redflag/hacluster/log/umount.txt
ps -wef >>/opt/redflag/hacluster/log/umount.txt
fi
fi
/sbin/blockdev --setro ${device} >/dev/null 2>&1
## umount storage disk ok ##
|
阅读(2515) | 评论(0) | 转发(1) |