I recently upgraded to Debian 7.4 and found that I needed to redo my external write intent bitmap hack. My old methods no longer worked.
First I needed to disable mdadm assembly when running from the ramdisk. Edit /etc/default/mdadm and set the following:
Rebuild the ramdisk image with:
You still need to prevent mdadm from assembling the array listed in /etc/mdadm/mdadm.conf so that
I created a new mdadm config file names /etc/mdadm/mdadm.delayed.conf which is a copy of /etc/mdadm/mdadm.conf but leaving
Next I created a new script /etc/init.d/delayedRaid
And I added to the start-up procedures with
After reboot check to see if
INITRDSTART='none'
Rebuild the ramdisk image with:
update-initramfs -u
You still need to prevent mdadm from assembling the array listed in /etc/mdadm/mdadm.conf so that
DEVICE /dev/null
I created a new mdadm config file names /etc/mdadm/mdadm.delayed.conf which is a copy of /etc/mdadm/mdadm.conf but leaving
DEVICE partitions
as is. I also specify the bitmap file on the ARRAY definition line
ARRAY /dev/md/127 metadata=0.90 bitmap=/md127-raid5-bitmap UUID=....
Next I created a new script /etc/init.d/delayedRaid
#!/bin/sh
#
# Start all arrays specified in the delayed configuration file.
#
# Copyright © 2014 Joshua Allen
# Distributable under the terms of the GNU GPL version 2.
#
### BEGIN INIT INFO
# Provides: delayedRaid
# Required-Start: $local_fs mdadm-raid
# Should-Start:
# X-Start-Before:
# Required-Stop:
# Should-Stop: $local_fs mdadm-raid
# X-Stop-After:
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: Delayed MD array assembly
# Description: This script assembles delayes assembly of MD raid
# devices. Useful for raid devices that use external
# write intent bitmaps.
# Settings are in /etc/mdadm/mdadm.delayed.conf
### END INIT INFO
. /lib/lsb/init-functions
do_start()
{
log_action_begin_msg "Starting delayed raid"
mdadm --assemble --scan --config=/etc/mdadm/mdadm.delayed.conf
log_action_end_msg $?
mount /mnt/raid5
}
do_stop()
{
umount /mnt/raid5
mdadm --stop --scan --config=/etc/mdadm/mdadm.delayed.conf
}
case "$1" in
start)
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
do_stop
;;
*)
echo "Usage: delayedRaid [start|stop]" >&2
exit 3
;;
esac
And I added to the start-up procedures with
insserv -d delayedRaid
After reboot check to see if
Intent Bitmap : {some file name}
is present when running
mdadm --detail /your/raid/device
Hopefully I didn't miss anything.
No comments:
Post a Comment