Document how to fix BASE-IS-OLD
[mirror/dsa-wiki.git] / input / howto / export-iscsi.creole
index 54ce165..6d3b88f 100644 (file)
@@ -23,7 +23,7 @@ This document describes how to add new new volumes on gustini and add them into
     iscsiadm -m node --targetname "iqn.1986-03.com.hp:storage.msa2012i.0834d5ecda.a" --rescan
 
   + on dijkstra: add aliases to the wwids (show topology)
-  + on dijkstra: /etc/init.d/multipath-tools reload
+  + on dijkstra: service multipath-tools reload
 }}}
 
 == via telnet interface ==
@@ -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
 }}}