#!/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