Created
October 6, 2014 23:26
mdadm raid1 array check script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# При запуске без параметров `bash mdadm-check.sh` проверяет все массивы из `raids`. | |
# Если один из дисков неиправен, то заменяет его на резервный из `backup_disk`. | |
# Передав параметр `install` `bash mdadm-check.sh install` можно внести запись | |
# в cron, для выполнения проверки каждую минуту (Установка работает в Ubuntu 14.04). | |
# После этого можно испортить один из дисков командой `test` `bash mdadm-check.sh test`, | |
# чтобы проверить работу. При этом будет сломан диск из `test_disk`. | |
# В принципе, просто заменить поврежденный диск в одном из массивов можно командой | |
# sudo mdadm -D /dev/md0 | grep faulty | rev | cut -d ' ' -f1 | rev | xargs sudo mdadm /dev/md0 -r | sudo mdadm /dev/md0 -a /dev/sdf1 | |
export PATH=/sbin/:$PATH | |
script_path=$(pwd -P) | |
backup_disk='/dev/sdf1' | |
test_disk='/dev/sdb1' | |
raids=('/dev/md0' '/dev/md1') | |
case "$1" in | |
install) | |
echo 'Installing...' | |
crontab -l | { cat; echo "* * * * * /bin/bash $script_path/$0"; } | crontab - | |
service cron restart | |
;; | |
test) | |
echo 'Testing...' | |
mdadm --manage --set-faulty ${raids[0]} $test_disk | |
;; | |
*) | |
echo 'Scanning' ${raids[*]} '...' | |
for raid in ${raids[*]} | |
do | |
faulty=$(mdadm -D $raid | grep faulty) | |
if [[ $faulty ]] | |
then | |
disk=$(mdadm -D /dev/md0 | grep faulty | rev | cut -d ' ' -f1 | rev) | |
echo 'Faulty found in' $raid 'disk' $disk | |
mdadm $raid -r $disk && mdadm $raid -a $backup_disk | |
if [ "$?" -eq "0" ] | |
then | |
echo 'Array' $raid 'repaired' | |
fi | |
else | |
echo 'Array' $raid 'is OK' | |
fi | |
done | |
echo 'Scan finished!' | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment