From: Peter Palfrader Date: Mon, 18 Jun 2012 11:12:17 +0000 (+0200) Subject: shell magic X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fdsa-wiki.git;a=commitdiff_plain;h=b1c2f86669262e2df112d1b9016339cad192d15e shell magic --- diff --git a/input/howto/export-iscsi.creole b/input/howto/export-iscsi.creole index 54ce165..ce89ce8 100644 --- a/input/howto/export-iscsi.creole +++ b/input/howto/export-iscsi.creole @@ -37,4 +37,64 @@ This document describes how to add new new volumes on gustini and add them into * map the new volume to traetta.debian.org, LUN 12 + map volume berlioz-boot lun 12 host traetta access rw (again, there is a 'help map volume' command with lots of informations) + +* Run 'show host-maps $host' again, then, on the host, run: + convert_sn() { + local sn a b c d + sn="$1" + a="${sn%??????????????????????????}"; sn="${sn#??????}" + b="${sn%????????????????????}"; sn="${sn#??????}" + c="${sn%??????????????}"; sn="${sn#??????}" + d="$sn" + + if [ "${c#0000}" = "$c" ]; then + echo >&2 "sn has unexpected value ($1: $a - $b - $c - $d)" + return 1 + fi + + echo "36${a}000${b}${c#0000}${d}" + return 0 + } + + parse_volume() { + host=`hostname` + echo "Paste appropriate 'show host-maps $host' output line:" + read name sn id lun access channels + + if [ "$access" != "rw" ]; then + echo >&2 "Do not have rw access" + return 1 + fi + + if [ "$(echo -n "$sn" | wc -c)" != "32" ]; then + echo >&2 "Unexpected sn length in '$sn' (wanted 32 chars)" + return 1 + fi + + wwid=$(convert_sn "$sn") + + if [ -z "$wwid" ]; then + return 1 + fi + + echo "" + echo " multipath {" + echo " wwid $wwid" + echo " alias $name" + echo " }" + echo "" + + mp="$(multipath -ll $wwid)" + if [ -z "$mp" ]; then + echo >&2 "Warning: multipath does not know about $wwid" + return 1 + fi + + if ! echo "$mp" | grep -q ":$lun "; then + echo >&2 "Warning: Are you sure $wwid is lun $lun? multipath -ll disagrees" + return 1 + fi + } + + parse_volume }}}