Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
etersoft-admin-essentials
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
etersoft-admin-essentials
Commits
aa4f557c
Commit
aa4f557c
authored
Nov 22, 2019
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
raid_restore.sh: rewrite via /dev/md* listing
parent
72b2878b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
45 additions
and
4 deletions
+45
-4
raid_restore.sh
hdd/raid_restore.sh
+45
-4
No files found.
hdd/raid_restore.sh
View file @
aa4f557c
#!/bin/sh
get_array_uuid
()
# TODO: mdadm --assemble --scan -v
# device as param (/dev/sdb2)
get_array_uuid_by_device
()
{
local
dev
=
"
$1
"
# "Array UUID for 1.2 and UUID for 0.9"
mdadm
-E
$dev
|
grep
" UUID : "
|
head
-n1
|
sed
-e
"s|.* UUID : ||"
}
# /dev/md1
get_array_uuid_by_md
()
{
mdadm
-D
"
$1
"
|
grep
"UUID : "
|
sed
-e
"s|.* UUID : ||"
}
get_device_list_by_uuid
()
{
local
UUID
=
"
$(
echo
$1
|
sed
-e
's|:||g'
)
"
blkid /dev/sd
*
|
sed
-e
's|-||g'
|
grep
"/dev/sd[a-z].*: UUID=
\"
$UUID
\"
"
|
sed
-e
"s|:.*||"
}
get_md_by_uuid
()
{
local
md
for
md
in
/dev/md
*
;
do
mdadm
-D
$md
|
grep
-q
"UUID :
$1
"
&&
echo
"
$md
"
&&
return
done
#ARRAY /dev/md/1 metadata=1.2 UUID=1912da86:6089954c:2aead1ca:77f06477 name=azbykar.localdomain:1
# TODO: use UUID: in mdadm -D /dev/md?
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
...
...
@@ -53,11 +72,32 @@ for dev in /dev/sd? ; do
done
fi
DEVS
=
"/dev/sd*"
DEVS
=
"/dev/sd[a-z]*"
MDS
=
"/dev/md[0-9]*"
[
-n
"
$1
"
]
&&
DEVS
=
"
$*
"
echo
"
$1
"
|
grep
-q
"/dev/md"
&&
MDS
=
"
$*
"
echo
"List by
$(
echo
$MDS
)
..."
for
md
in
$MDS
;
do
ARRAYUUID
=
$(
get_array_uuid_by_md
$md
)
STATUS
=
"
$(
get_dm_status
$md
)
"
echo
"
$md
UUID:
$ARRAYUUID
status:
$STATUS
"
[
-n
"
$ARRAYUUID
"
]
||
echo
"!!! cant' get UUID for
$md
"
echo
"
$STATUS
"
|
grep
-q
"degraded"
||
continue
for
dev
in
$(
get_device_list_by_uuid
$ARRAYUUID
)
;
do
[
-r
$dev
]
||
continue
echo
"
$STATUS
"
|
grep
-q
"recovering"
&&
echo
"Skip
$md
, already recovering ..."
&&
continue
echo
"Restore degrated
$md
..."
# TODO: --readwrite for SSD
mdadm
$md
--add
$dev
done
done
if
false
;
then
echo
"List by
$(
echo
$DEVS
)
..."
for
dev
in
$DEVS
;
do
ARRAYUUID
=
$(
get_array_uuid
$dev
)
ARRAYUUID
=
$(
get_array_uuid
_by_device
$dev
)
if
[
-n
"
$ARRAYUUID
"
]
;
then
MDDEV
=
$(
get_md_by_uuid
$ARRAYUUID
)
||
MDDEV
=
''
else
...
...
@@ -76,6 +116,7 @@ for dev in $DEVS ; do
mdadm
$MDDEV
--add
$dev
fi
done
fi
if
[
-z
"
$1
"
]
;
then
echo
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment