70 lines
1.6 KiB
Bash
70 lines
1.6 KiB
Bash
#!/bin/sh
|
|
PVNAME=$1
|
|
|
|
source /etc/sysconfig/lvm
|
|
|
|
/sbin/lvm pvs --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -o vg_name,vg_attr,pv_uuid,vg_uuid --ignorelockingfailure --noheadings $PVNAME 2>/dev/null | while read vgname vgattr pvuuid vguuid; do
|
|
if [[ $vgattr =~ mode. ]]; then
|
|
continue
|
|
fi
|
|
if [[ $vgattr =~ .....c ]]; then
|
|
exit 1
|
|
fi
|
|
|
|
lvlist=$(/sbin/lvm lvs --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -o lv_name,lv_attr --ignorelockingfailure --noheadings $vgname 2>/dev/null | while read lvname lvattr; do
|
|
if [[ $lvattr =~ mode. ]] ; then
|
|
continue
|
|
fi
|
|
if [[ $lvattr =~ ....-. ]]; then
|
|
echo -n $lvname
|
|
fi
|
|
done)
|
|
|
|
if [ -z "$lvlist" ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
pvlist=$(/sbin/lvm vgdisplay --config "devices {filter = [ \"a|$PVNAME|\", \"r/.*/\" ]}" --partial -v $vgname 2>/dev/null | while read str1 str2 val; do
|
|
if [[ $str1 =~ PV && $str2 =~ UUID ]]; then
|
|
echo $val
|
|
fi
|
|
done)
|
|
|
|
echo PVUUID=$pvuuid
|
|
echo VGUUID=$vguuid
|
|
echo VGNAME=$vgname
|
|
|
|
if [[ -n $LVM_VGS_ACTIVATED_ON_BOOT ]]; then
|
|
found=0
|
|
for autovg in $LVM_VGS_ACTIVATED_ON_BOOT; do
|
|
if [[ $vgname == $autovg ]]; then
|
|
found=1
|
|
break
|
|
fi
|
|
done
|
|
if [[ $found == 0 ]]; then
|
|
echo COLLECT=1
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
collected=0
|
|
for pv in $pvlist; do
|
|
if [[ x$pv = x$pvuuid ]]; then
|
|
continue
|
|
fi
|
|
if [[ ! -h /dev/disk/by-id/lvm2-pvuuid-$pv ]]; then
|
|
echo COLLECT=1
|
|
collected=1
|
|
break
|
|
fi
|
|
done
|
|
if [[ $collected = 0 ]]; then
|
|
echo COLLECT=0
|
|
fi
|
|
|
|
# /lib/udev/collect $vguuid $pvuuid $pvlist
|
|
# echo COLLECT=$?
|
|
done
|
|
|