Update trim to trim all mounted IQNs

This commit is contained in:
2023-05-12 11:20:43 +02:00
parent 036bd6a7b5
commit 639fb43018
+28 -23
View File
@@ -2,16 +2,12 @@
IQN=$1 IQN=$1
if [[ -z "${IQN}" ]]; then TrimIQN() {
echo "usage: $0 TargetIQN" IQN=$1
echo ""
exit MULTIPATH=0
fi IQNTESTLIST=$(grep -h ${IQN} /sys/class/iscsi_session/*/targetname)
for IQNTEST in ${IQNTESTLIST}; do
MULTIPATH=0
IQNTESTLIST=$(grep -h ${IQN} /sys/class/iscsi_session/*/targetname)
for IQNTEST in ${IQNTESTLIST}; do
if [ "${IQNTEST}" != "${IQN}" ]; then if [ "${IQNTEST}" != "${IQN}" ]; then
echo "IQN not found" echo "IQN not found"
echo "" echo ""
@@ -20,13 +16,13 @@ for IQNTEST in ${IQNTESTLIST}; do
fi fi
MULTIPATH=$((MULTIPATH + 1)) MULTIPATH=$((MULTIPATH + 1))
done done
SESSIONFOLDERLIST=$(grep -l ${IQN} /sys/class/iscsi_session/*/targetname | xargs realpath) SESSIONFOLDERLIST=$(grep -l ${IQN} /sys/class/iscsi_session/*/targetname | xargs realpath)
declare -A ADDRESSES declare -A ADDRESSES
declare -A BLOCKDEVICES declare -A BLOCKDEVICES
for SESSIONFOLDER in ${SESSIONFOLDERLIST}; do for SESSIONFOLDER in ${SESSIONFOLDERLIST}; do
SESSION=$(echo "${SESSIONFOLDER}" | sed 's/.*session\([0-9]*\).*/\1/g') SESSION=$(echo "${SESSIONFOLDER}" | sed 's/.*session\([0-9]*\).*/\1/g')
HOST=$(echo "${SESSIONFOLDER}" | sed 's/.*host\([0-9]*\).*/\1/g') HOST=$(echo "${SESSIONFOLDER}" | sed 's/.*host\([0-9]*\).*/\1/g')
@@ -42,21 +38,30 @@ for SESSIONFOLDER in ${SESSIONFOLDERLIST}; do
BLOCKDEVICE=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}\/${FULLSCSIADDRESS}\/block/g" | xargs ls -1 | xargs printf "/dev/%s") BLOCKDEVICE=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}\/${FULLSCSIADDRESS}\/block/g" | xargs ls -1 | xargs printf "/dev/%s")
BLOCKDEVICES+="${BLOCKDEVICE} " BLOCKDEVICES+="${BLOCKDEVICE} "
done done
MULTIPATHDEVICE=$(multipath -l ${BLOCKDEVICES[0]} | grep 'mpath' | sed -e 's/^\([a-z]*\) .*/\1/g') MULTIPATHDEVICE=$(multipath -l ${BLOCKDEVICES[0]} | grep 'mpath' | sed -e 's/^\([a-z]*\) .*/\1/g')
if [ ! -z "${MULTIPATHDEVICE}" ]; then if [ ! -z "${MULTIPATHDEVICE}" ]; then
BLOCKDEVICE="/dev/mapper/${MULTIPATHDEVICE}" BLOCKDEVICE="/dev/mapper/${MULTIPATHDEVICE}"
fi fi
MOUNTPOINT=$(grep "${BLOCKDEVICE}" /proc/mounts | head -n 1 | cut -d " " -f 2) MOUNTPOINT=$(grep "${BLOCKDEVICE}" /proc/mounts | head -n 1 | cut -d " " -f 2)
if [[ -z "${MOUNTPOINT}" || ! -d "${MOUNTPOINT}" ]]; then if [[ -z "${MOUNTPOINT}" || ! -d "${MOUNTPOINT}" ]]; then
echo "IQN ${IQN} is not mounted" echo "IQN ${IQN} is not mounted"
echo "" echo ""
exit exit
fi
fstrim -v ${MOUNTPOINT}
}
if [[ -z "${IQN}" ]]; then
IQNLIST=$(cat /sys/class/iscsi_session/*/targetname | sort -u)
for IQN in ${IQNLIST}; do
TrimIQN ${IQN}
done
else
TrimIQN ${IQN}
fi fi
fstrim -v ${MOUNTPOINT}