Nimble 볼륨에 대한 다중 경로 별칭을 생성하는 스크립트를 찾아 freenas에서 작동하도록 수정했습니다.
#/bin/bash
# This script will scan the system for attached Nimble Volumes
# and output a list of multipath alias statements for the linux
# /etc/multipath.conf. This will allow for the volume to be
# referenced by the volume name in place of the normal mpathX
#
# To use the script, just run it. If Nimble volumes are present
# it will output the confiugration data to standard out
# Just copy and paste that output in to /etc/multipath.conf
# Take care when adding these lines to make sure another alias
# is not present or if there are other multipath statements
# Start by checking to see if we have any Nimble volumes connected
ls -l /dev/disk/by-path | grep freenas > /dev/null
if [ $? -eq 0 ]
then
#Build list of Nimble devices
DEV_LIST=$(ls -l /dev/disk/by-path | grep freenas | awk '{print $NF'} | sed 's/..\/..\///')
# Output the first line of the config
echo "multipaths {"
# For each device found we determine the name and the mpathid
for i in $DEV_LIST
do
SUBSTRING=$(ls -l /dev/disk/by-path | grep $i | awk -F: '{print $4}')
# This uses pattern matching to find the name of the volume
OFFSET=$(echo $SUBSTRING | awk --re-interval 'match($0, /\-[v][a-z0-9]{16}/) { print RSTART-1 }')
NIMBLEVOL=${SUBSTRING::$OFFSET}
# Here we collect the MPATHID
MPATHID=$(multipath -ll /dev/$i | grep FreeBSD | awk '{print $2}' | sed -e 's\(\\g' | sed -e 's\)\\g')
# Enable for debug
#echo "Volume name for $device is $nimblevol with multipath ID is $mpathid"
# Putting it all together with proper formatting using printf
MULTIPATH=$(printf "multipath {\n \t\twwid \t\t%s \n \t\talias\t\t %s\n \t}" $MPATHID $NIMBLEVOL)
MATCH='multipaths {'
echo "$MULTIPATH"
done
# End the configuration section
echo "}"
else
# If no Nimble devices found, exit with message
echo "No Nimble Devices Found, have you met leeloo?"
exit 1
fi
exit 0
내가 실행하면
multipaths {
multipath {
wwid 36589cfc000000e9f2e24f431339ec7b0
alias
}
multipath {
wwid 36589cfc00000026c07d6caed9e43aa22
alias
}
multipath {
wwid 36589cfc000000f051b0d5718e0b46b2f
alias
}
multipath {
wwid 36589cfc000000af38b5be525e3cf1cb4
alias
}
multipath {
wwid 36589cfc000000824684e211c61d58fc5
alias
}
multipath {
wwid 36589cfc000000f0f579280a94ef72125
alias
}
multipath {
wwid 36589cfc000000e9f2e24f431339ec7b0
alias
}
multipath {
wwid 36589cfc00000026c07d6caed9e43aa22
alias
}
multipath {
wwid 36589cfc000000f051b0d5718e0b46b2f
alias
}
multipath {
wwid 36589cfc000000af38b5be525e3cf1cb4
alias
}
multipath {
wwid 36589cfc000000824684e211c61d58fc5
alias
}
multipath {
wwid 36589cfc000000f0f579280a94ef72125
alias
}
}
별칭 없이 제안할 사항이 있나요?
답변1
OFFSET=
and로 시작하는 줄을 주석 처리 NIMBLEVOL=
하고 삽입하세요.
NIMBLEVOL=$(echo $SUBSTRING | sed -e 's/^\(.*\)-lun.*/\1/')
주석 줄 바로 아래에 있습니다.
...
#OFFSET=$(echo $SUBSTRING | awk --re-interval 'match($0, /\-[v][a-z0-9]{16}/) { print RSTART-1 }')
#NIMBLEVOL=${SUBSTRING::$OFFSET}
NIMBLEVOL=$(echo $SUBSTRING | sed -e 's/^\(.*\)-lun.*/\1/')
...
data1, data2 등을 별칭으로 사용한다고 가정할 때 실제로 유효한 구성이 생성되는지 확실하지 않습니다.