====== Mdadm Helpers ======
*************
===== Debian Disable/Enable Raid Monthly Checks =====
dpkg-reconfigure mdadm
or edit cron job
nano /etc/cron.d/mdadm
[[https://askubuntu.com/questions/1304738/mdadm-checking-raid-5-array-after-each-restart|External Link]]
===== How do I replace a disk marked as removed from a linux md raid-5 array =====
== If drives are "hot swap", don't need to power off server/pc... ==
First identify removed drive:
lsblk
Find serial number, if necessary:
smartctl -a /dev/sdb | grep Serial
If drive is **just remved**:
mdadm --zero-superblock /dev/sdXn
mdadm /dev/md0 --add /dev/sdXn
If **replacing damaged** drive, then only:
mdadm /dev/md0 --add /dev/sdXn
=== Check every drive manually ===
mdadm --examine /dev/sdX
====== “not enough to start the array” – error while staring mdadm RAID array ======
Stop failed array:
mdadm -S /dev/md0
Assemble the pre-existing array:
mdadm -A -f /dev/md0
====== Test Email Settings ======
mdadm --monitor --scan --test
If got error: **"mdadm: Only one autorebuild process allowed in scan mode, aborting"**
mdadm --monitor /dev/md0 --test
====== Simple Script to read Hdd serial numbers ======
#!/bin/bash
smartctl -a /dev/sda | grep -i 'Serial';
echo "";
echo "";
for i in {a..z} ; do
echo $i
smartctl -a /dev/sd$i | grep -i 'Serial';
done
====== A SparesMissing event had been detected on md device ======
Removing the spares=1 option or just recreating the mdadm.conf from scratch fixes the problem:
====== **Update MDADM config file** ======
/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf.copy
Double check new configuration ad then save as mdadm.conf
====== **Just in case** ======
Run update-initramfs -u
====== Speed Up or Slow Down Raid rebuild ======
To see current limits, enter:
sysctl dev.raid.speed_limit_min
sysctl dev.raid.speed_limit_max
To change minimal speed (ex. min.= 10000), enter:
echo value > /proc/sys/dev/raid/speed_limit_min
or
sysctl -w dev.raid.speed_limit_min=value
To change maximal speed (ex. max.= 200000), enter:
echo value > /proc/sys/dev/raid/speed_limit_max
or
sysctl -w dev.raid.speed_limit_max=value
If you want to override the defaults you could add these two lines to: nano /etc/sysctl.conf
#################NOTE ################
## You are limited by CPU and memory too #
###########################################
dev.raid.speed_limit_min = 50000
## good for 4-5 disks based array ##
dev.raid.speed_limit_max = 2000000
## good for large 6-12 disks based array ###
dev.raid.speed_limit_max = 5000000
Source: [[https://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html|External Link]]
===== Speed Change Script Example =====
#!/bin/bash
clear;
speed=$(cat /proc/sys/dev/raid/speed_limit_max)
echo ""
echo -e "\e[92m *\e[0m Speed Was: \e[92m$speed\e[0m"
echo ""
echo -e "\e[92m *\e[0m Switching to:\e[0m"
tput setaf 2
tput bold
if [[ $speed == '150000' ]]; then
sysctl -w dev.raid.speed_limit_max=10000 | cut -c 28- | sed -e 's/^/ /'
sysctl -w dev.raid.speed_limit_min=1000 | cut -c 28- | sed -e 's/^/ /'
else
sysctl -w dev.raid.speed_limit_max=150000 | cut -c 28- | sed -e 's/^/ /'
sysctl -w dev.raid.speed_limit_min=10000 | cut -c 28- | sed -e 's/^/ /'
fi
tput sgr0