shell magic
authorPeter Palfrader <peter@palfrader.org>
Mon, 18 Jun 2012 11:12:17 +0000 (13:12 +0200)
committerPeter Palfrader <peter@palfrader.org>
Mon, 18 Jun 2012 11:12:17 +0000 (13:12 +0200)
input/howto/export-iscsi.creole

index 54ce165..ce89ce8 100644 (file)
@@ -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
 }}}