Add Multipath support
This commit is contained in:
@@ -5,26 +5,46 @@ IQN=$1
|
||||
PrintIQN() {
|
||||
IQN=$1
|
||||
|
||||
IQNTEST=$(grep -h ${IQN} /sys/class/iscsi_session/*/targetname)
|
||||
if [ "${IQNTEST}" != "${IQN}" ]; then
|
||||
echo "IQN not found"
|
||||
echo ""
|
||||
MULTIPATH=0
|
||||
IQNTESTLIST=$(grep -h ${IQN} /sys/class/iscsi_session/*/targetname)
|
||||
for IQNTEST in ${IQNTESTLIST}; do
|
||||
if [ "${IQNTEST}" != "${IQN}" ]; then
|
||||
echo "IQN not found"
|
||||
echo ""
|
||||
|
||||
exit
|
||||
exit
|
||||
fi
|
||||
|
||||
MULTIPATH=$((MULTIPATH + 1))
|
||||
done
|
||||
|
||||
SESSIONFOLDERLIST=$(grep -l ${IQN} /sys/class/iscsi_session/*/targetname | xargs realpath)
|
||||
|
||||
declare -A ADDRESSES
|
||||
declare -A BLOCKDEVICES
|
||||
for SESSIONFOLDER in ${SESSIONFOLDERLIST}; do
|
||||
SESSION=$(echo "${SESSIONFOLDER}" | sed 's/.*session\([0-9]*\).*/\1/g')
|
||||
HOST=$(echo "${SESSIONFOLDER}" | sed 's/.*host\([0-9]*\).*/\1/g')
|
||||
|
||||
SCSIADDRESS=$(echo "${SESSIONFOLDER}" | sed 's/\(.*\)\/iscsi_session.*/\1/g' | xargs ls -1 | grep "target${HOST}" | sed 's/target//g')
|
||||
MAJOR=$(echo "${SCSIADDRESS}" | cut -d ":" -f 2)
|
||||
MINOR=$(echo "${SCSIADDRESS}" | cut -d ":" -f 3)
|
||||
|
||||
FULLSCSIADDRESS=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}/g" | xargs ls -1 | grep ":")
|
||||
LUN=$(echo "${FULLSCSIADDRESS}" | cut -d ":" -f 4)
|
||||
|
||||
ADDRESS="[${SESSION}]:scsi$HOST:${MAJOR}:${MINOR}:${LUN}"
|
||||
ADDRESSES+="${ADDRESS} "
|
||||
|
||||
BLOCKDEVICE=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}\/${FULLSCSIADDRESS}\/block/g" | xargs ls -1 | xargs printf "/dev/%s")
|
||||
BLOCKDEVICES+="${BLOCKDEVICE} "
|
||||
done
|
||||
|
||||
MULTIPATHDEVICE=$(multipath -l ${BLOCKDEVICES[0]} | grep 'mpath' | sed -e 's/^\([a-z]*\) .*/\1/g')
|
||||
if [ ! -z "${MULTIPATHDEVICE}" ]; then
|
||||
BLOCKDEVICE="/dev/mapper/${MULTIPATHDEVICE}"
|
||||
fi
|
||||
|
||||
SESSIONFOLDER=$(grep -l ${IQN} /sys/class/iscsi_session/*/targetname | xargs realpath)
|
||||
SESSION=$(echo "${SESSIONFOLDER}" | sed 's/.*session\([0-9]*\).*/\1/g')
|
||||
HOST=$(echo "${SESSIONFOLDER}" | sed 's/.*host\([0-9]*\).*/\1/g')
|
||||
|
||||
SCSIADDRESS=$(echo "${SESSIONFOLDER}" | sed 's/\(.*\)\/iscsi_session.*/\1/g' | xargs ls -1 | grep "target${HOST}" | sed 's/target//g')
|
||||
MAJOR=$(echo "${SCSIADDRESS}" | cut -d ":" -f 2)
|
||||
MINOR=$(echo "${SCSIADDRESS}" | cut -d ":" -f 3)
|
||||
|
||||
FULLSCSIADDRESS=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}/g" | xargs ls -1 | grep ":")
|
||||
LUN=$(echo "${FULLSCSIADDRESS}" | cut -d ":" -f 4)
|
||||
|
||||
BLOCKDEVICE=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}\/${FULLSCSIADDRESS}\/block/g" | xargs ls -1 | xargs printf "/dev/%s")
|
||||
MOUNTPOINT=$(grep "${BLOCKDEVICE}" /proc/mounts | head -n 1 | cut -d " " -f 2)
|
||||
|
||||
echo "IQN: ${IQN}"
|
||||
@@ -33,17 +53,19 @@ PrintIQN() {
|
||||
#echo " Channel: ${MAJOR}";
|
||||
#echo " Id: ${MINOR}";
|
||||
#echo " LUN: ${LUN}";
|
||||
echo " Address: [${SESSION}] scsi$HOST:${MAJOR}:${MINOR}:${LUN}"
|
||||
for ADDRESS in ${ADDRESSES}; do
|
||||
echo " Address: ${ADDRESS}"
|
||||
done
|
||||
echo " Device: ${BLOCKDEVICE}";
|
||||
echo " Mountpoint: ${MOUNTPOINT}";
|
||||
echo
|
||||
}
|
||||
|
||||
if [[ -z "${IQN}" ]]; then
|
||||
IQNLIST=$(cat /sys/class/iscsi_session/*/targetname)
|
||||
IQNLIST=$(cat /sys/class/iscsi_session/*/targetname | sort -u)
|
||||
for IQN in ${IQNLIST}; do
|
||||
PrintIQN ${IQN}
|
||||
done;
|
||||
done
|
||||
else
|
||||
PrintIQN ${IQN}
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user