Mdadm
Restoring failed drive
In case the mdadm raid is somehow lost or if you move your hard-drives to another computer, you might have to “re-create” the raid array.
First, mdadm stores it's configuration on each drive, so let's try to have mdadm automatically find the array back by itself :
mdadm --examine --scan
It should show the HDDs participating in the array, if it's the case, try to have mdadm automatically start the array :
mdadm --assemble --examine -v
If for some reason some HDDs appear out of sync in the output of the previous command, there is one last chance. For this, you must be sure that the array was clean the last time it was disconnected ! First stop the (failed) array created earlier :
mdadm --stop /dev/md0
Then force-create the array :
mdadm --create --force /dev/md0 /dev/sd[acd]1
This should do the trick, if not, search the internet for more ideas…
Improving rebuild-speed
Tip #1: /proc/sys/dev/raid/{speed_limit_max,speed_limit_min} kernel variables
This tip is not very efficient on my setup.
### Display the current values : ### sysctl dev.raid.speed_limit_min sysctl dev.raid.speed_limit_max ### Modify them : ### sysctl -w dev.raid.speed_limit_min=1000 sysctl -w dev.raid.speed_limit_max=200000
Tip #2: Set read-ahead option
This tip is very efficient on my setup.
### Set read-ahead to 32 MiB ### blockdev --setra 65536 /dev/md0
Tip #3: Set stripe-cache_size for RAID5 or RAID 6
echo 32768 > /sys/block/md0/md/stripe_cache_size
Tip #4: Disable NCQ on all disks
This tip is not useful since NCQ (Native Command Queing) is not supported by my hardware…
for i in sd[[abcde]] do echo 1 > /sys/block/$i/device/queue_depth done
Tip #5: Bitmap Option
This tip does not work when the array is already in resync state !
### To enable it : ### mdadm --grow --bitmap=internal /dev/md0 ### Once complete, to disable it : ### mdadm --grow --bitmap=none /dev/md0
(Source : http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html)