支持固定硬盘插槽脚本实例

57 篇文章 4 订阅

背景:当设备支持2个及两个以上硬盘插槽时(这里举例有两个硬盘插槽C0和C1),用户无法判断哪个硬盘插槽是hda,哪个是hdb,因为内核检测机制是哪个硬盘先被扫描到,哪个就认为是hda。通过修改hotplug脚本,可以实现固定硬盘插槽,比如C0对应hda,C1对应hdb。

脚本实例:

#一个是disk,表示设备本身,对应的$DEVPATH $MAJOR $MINOR分别是/block/hda0: 8 0
#一个是partition,表示设备上的分区,对应的$DEVPATH $MAJOR $MINOR分别是 /block/sda/hda0: 8 1

#硬盘插入:
if [ $ACTION == "add" ];then

	if  ( echo $DEVPATH | grep "/block/sd" > /dev/null 2>&1 ) && [ $DEVTYPE == "partition" ];  then
			for i in a b c d e f
			do
				if ( echo $DEVPATH | grep "/block/sd""$i""" > /dev/null 2>&1 ) then
					if ( readlink -f /sys/block/sd"$i"/device/ | grep "host0" > /dev/null 2>&1) then
						DEVPATH="/block/sda/hda0:"
						/sbin/hotplug_inner
						echo "notice!!!! $DEVTYPE $DEVPATH $MAJOR $MINOR not process" >> /var/log/hotplug.log
						break
					elif ( readlink -f /sys/block/sd"$i"/device/ | grep "host1" > /dev/null 2>&1 ) then
					DEVPATH="/block/sdb/hdb0:"
						/sbin/hotplug_inner
						echo "notice!!!! action=$ACTION $DEVTYPE $DEVPATH $MAJOR $MINOR not process" >> /var/log/hotplug.log
						break
					fi	
				fi
			done
	elif  ( echo $DEVPATH | grep "/block/hd" > /dev/null 2>&1 ) && [ $DEVTYPE == "disk" ];  then
		for i in a b c d e f
		do
			if ( echo $DEVPATH | grep "/block/hd""$i""" > /dev/null 2>&1 ) then
				if ( readlink -f /sys/block/sd"$i"/device/ | grep "host0" > /dev/null 2>&1) then
					DEVPATH="/block/hda0:"
					/sbin/hotplug_inner
					echo "notice!!!! action=$ACTION $DEVTYPE $DEVPATH $MAJOR $MINOR not process" >> /var/log/hotplug.log
					break
				elif ( readlink -f /sys/block/sd"$i"/device/ | grep "host1" > /dev/null 2>&1) then
					DEVPATH="/block/hdb0:"
					/sbin/hotplug_inner
					echo "notice!!!! action=$ACTION $DEVTYPE $DEVPATH $MAJOR $MINOR not process" >> /var/log/hotplug.log
					break
				fi	
			fi
		done
	fi
fi

#硬盘拔出

if [ $ACTION == "remove" ];then
		if  ( echo $DEVPATH | grep "/block/sd" > /dev/null 2>&1 ) && [ $DEVTYPE == "partition" ];  then
			for i in a b 
			do
				p=$(ls -l /dev/hd"$i"0: | awk '{print $5}' | sed 's/,//g')
				q=$(ls -l /dev/hd"$i"0: | awk '{print $6}')
				if [[ $MAJOR == $p && $MINOR == $q ]]; then

					DEVPATH="/block/sd"$i"/hd"$i"0:"
					#/sbin/hotplug_inner
					echo "notice!!!! p=$p q=$q action=$ACTION $DEVTYPE $DEVPATH $MAJOR $MINOR not process" >> /var/log/hotplug.log
					break
				fi
			done
		elif  ( echo $DEVPATH | grep "/block/hd" > /dev/null 2>&1 ) && [ $DEVTYPE == "disk" ];  then
			for i in a b 
			do
				#输出结果的第5列内容,并将逗号去掉(注意print $x ,x从1开始数)
				p=$(ls -l /dev/hd"$i": | awk '{print $5}' | sed 's/,//g')
				#输出结果的第6列内容
				q=$(ls -l /dev/hd"$i": | awk '{print $6}')
				if [[ $MAJOR == $p && $MINOR == $q ]]; then
					DEVPATH="/block/hd"$i"0:"
					#/sbin/hotplug_inner
					echo "notice!!!! p=$p q=$q action=$ACTION $DEVTYPE $DEVPATH $MAJOR $MINOR not process" >> /var/log/hotplug.log
					break
				fi	

			done
		fi
	
fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值