Commit 072bb644 authored by Vitaly Lipatov's avatar Vitaly Lipatov

improve raid_restore.sh

parent a2cf9abf
...@@ -3,14 +3,16 @@ get_array_uuid() ...@@ -3,14 +3,16 @@ get_array_uuid()
{ {
local dev="$1" local dev="$1"
# "Array UUID for 1.2 and UUID for 0.9" # "Array UUID for 1.2 and UUID for 0.9"
mdadm -E $dev | grep " UUID : " | sed -e "s|.* UUID : ||" mdadm -E $dev | grep " UUID : " | head -n1 | sed -e "s|.* UUID : ||"
} }
get_md_by_uuid() get_md_by_uuid()
{ {
#ARRAY /dev/md/1 metadata=1.2 UUID=1912da86:6089954c:2aead1ca:77f06477 name=azbykar.localdomain:1 #ARRAY /dev/md/1 metadata=1.2 UUID=1912da86:6089954c:2aead1ca:77f06477 name=azbykar.localdomain:1
# TODO: use UUID: in mdadm -D /dev/md? # TODO: use UUID: in mdadm -D /dev/md?
grep "UUID=$1" /etc/mdadm.conf | cut -d" " -f 2 local STRUUID=$(grep "UUID=$1" /etc/mdadm.conf)
[ -n "$STRUUID" ] && echo "$STRUUID" | cut -d" " -f 2 && return
echo "can't grep UUID=$1 in /etc/mdadm.conf" >>$0.log
} }
get_dm_status() get_dm_status()
...@@ -44,13 +46,15 @@ print_dev_type() ...@@ -44,13 +46,15 @@ print_dev_type()
dmsetup remove_all dmsetup remove_all
if [ -z "$1" ] ; then
echo "Drive list:" echo "Drive list:"
for dev in /dev/sd? ; do for dev in /dev/sd? ; do
echo " $(print_dev_type $dev): $dev" echo " $(print_dev_type $dev): $dev"
done done
fi
DEVS="/dev/sd*" DEVS="/dev/sd*"
[ -n "$1" ] && DEVS="$1" [ -n "$1" ] && DEVS="$*"
for dev in $DEVS ; do for dev in $DEVS ; do
ARRAYUUID=$(get_array_uuid $dev) ARRAYUUID=$(get_array_uuid $dev)
...@@ -61,7 +65,7 @@ for dev in $DEVS ; do ...@@ -61,7 +65,7 @@ for dev in $DEVS ; do
continue continue
fi fi
STATUS="$(get_dm_status $MDDEV)" STATUS="$(get_dm_status $MDDEV)"
echo "$dev - $ARRAYUUID - $MDDEV, status: $STATUS" echo "$dev - Array UUID: $ARRAYUUID - MDdev: $MDDEV, status: $STATUS"
[ -n "$ARRAYUUID" ] && [ -z "$MDDEV" ] && echo "!!!! can't detect md for $dev" [ -n "$ARRAYUUID" ] && [ -z "$MDDEV" ] && echo "!!!! can't detect md for $dev"
[ -n "$MDDEV" ] || continue [ -n "$MDDEV" ] || continue
# TODO: check only missed in array # TODO: check only missed in array
...@@ -73,6 +77,7 @@ for dev in $DEVS ; do ...@@ -73,6 +77,7 @@ for dev in $DEVS ; do
fi fi
done done
if [ -z "$1" ] ; then
echo echo
echo "Drives not in RAID:" echo "Drives not in RAID:"
for dev in /dev/sd* ; do for dev in /dev/sd* ; do
...@@ -82,5 +87,6 @@ for dev in /dev/sd* ; do ...@@ -82,5 +87,6 @@ for dev in /dev/sd* ; do
cat /proc/mdstat | grep -q " $(basename $dev)[0-9]*\[" && continue cat /proc/mdstat | grep -q " $(basename $dev)[0-9]*\[" && continue
echo " $dev" echo " $dev"
done done
fi
# TODO: how to check? # TODO: how to check?
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment