Files
iSCSI-Scripts/testPerformance
T
2023-05-12 11:15:38 +02:00

67 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
IQN=$1
if [[ -z "${IQN}" ]]; then
echo "usage: $0 TargetIQN"
echo ""
exit
fi
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
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
MOUNTPOINT=$(grep "${BLOCKDEVICE}" /proc/mounts | head -n 1 | cut -d " " -f 2)
if [[ -z "${MOUNTPOINT}" || ! -d "${MOUNTPOINT}" ]]; then
echo "IQN ${IQN} is not mounted"
echo ""
exit
fi
dd if=/dev/zero of=${MOUNTPOINT}/test1.img bs=1G count=1 oflag=dsync
dd if=/dev/zero of=${MOUNTPOINT}/test2.img bs=512 count=1000 oflag=dsync
rm -f ${MOUNTPOINT}/test1.img
rm -f ${MOUNTPOINT}/test2.img