2023-09-14 09:55:23 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
|
|
source ./error_inject.sh
|
|
|
|
|
|
|
|
|
|
function add_fio()
|
|
|
|
|
{
|
|
|
|
|
while :
|
|
|
|
|
do
|
|
|
|
|
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
|
|
|
|
|
do
|
2023-09-21 15:17:39 +08:00
|
|
|
fio_cnt=$(ps aux | grep fio | grep $dev -c)
|
|
|
|
|
if [ $fio_cnt -gt 20 ]; then
|
|
|
|
|
echo "$fio_cnt larger than 20, do not add"
|
|
|
|
|
continue
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
threads=$[RANDOM%5+1]
|
|
|
|
|
echo "add $threads fio for $dev"
|
|
|
|
|
fio -filename=$dev -name=rand_write -rw=randrw -bs=4k -direct=1 -size=1G -numjobs=$threads -runtime=240 -group_reporting 2>&1 > /dev/null &
|
|
|
|
|
|
2023-09-14 09:55:23 +08:00
|
|
|
done
|
|
|
|
|
|
|
|
|
|
sleep 10
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function add_error()
|
|
|
|
|
{
|
|
|
|
|
while :
|
|
|
|
|
do
|
|
|
|
|
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
|
|
|
|
|
do
|
|
|
|
|
inject=$[RANDOM%3]
|
|
|
|
|
if [ $inject -eq 0 ]; then
|
|
|
|
|
errtype=$[RANDOM%35+1]
|
|
|
|
|
echo add error to $(basename $dev)
|
|
|
|
|
error_inject$errtype $(basename $dev)
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
sleep 3
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function add_recovery_error()
|
|
|
|
|
{
|
|
|
|
|
while :
|
|
|
|
|
do
|
|
|
|
|
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
|
|
|
|
|
do
|
|
|
|
|
inject=$[RANDOM%3]
|
|
|
|
|
if [ $inject -eq 0 ]; then
|
|
|
|
|
recovtype=$[RANDOM%7+1]
|
|
|
|
|
echo add recovery error to $(basename $dev)
|
|
|
|
|
recovery_inject$recovtype $(basename $dev)
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
sleep 3
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function clear_error()
|
|
|
|
|
{
|
|
|
|
|
while :
|
|
|
|
|
do
|
|
|
|
|
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
|
|
|
|
|
do
|
|
|
|
|
inject=$[RANDOM%3]
|
|
|
|
|
if [ $inject -eq 0 ]; then
|
|
|
|
|
echo clear error $(basename $dev)
|
2023-09-14 11:31:13 +08:00
|
|
|
clear_disk_error $(basename $dev)
|
2023-09-14 09:55:23 +08:00
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
sleep 100
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function set_running()
|
|
|
|
|
{
|
|
|
|
|
while :
|
|
|
|
|
do
|
|
|
|
|
for dev in `lsscsi | grep scsi_debug | awk '{print $6}'`
|
|
|
|
|
do
|
2023-09-14 11:31:13 +08:00
|
|
|
disk=$(basename $dev)
|
|
|
|
|
state=$(cat /sys/block/$disk/device/state)
|
|
|
|
|
if [ "$state" == "offline" ]; then
|
|
|
|
|
echo clear error $disk
|
|
|
|
|
clear_disk_error $disk 2>&1 > /dev/null
|
|
|
|
|
echo "set $disk running"
|
|
|
|
|
echo "running" > /sys/block/$disk/device/state
|
|
|
|
|
fi
|
2023-09-14 09:55:23 +08:00
|
|
|
done
|
|
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|