Export iSCSI with gustini
This document describes how to add new new volumes on gustini and add them into the OS.
via Web-Frontend
* Log into gustini via webfrontend
* Manage
+ Volume Management
- add volume
add volume size and name but leave LUN blank (NONE)
- volume mapping
find the next free scsi-lun
* run "multipathd -k" on dijkstra
+ show topology
geo2-boot (3600c0ff000d5f6bde2d4cf4901000000) dm-7 HP ,MSA2012i
[size=245M][features=0][hwhandler=0]
\_ round-robin 0 [prio=0][active]
\_ 1:0:0:1 sda 8:0 [active][ready]
\_ 0:0:0:1 sdb 8:16 [active][ready]
^ that is the LUN
find the next unused one and map it
+ on dijkstra: rescan the iscsi bus
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: service multipath-tools reload
via telnet interface
* Log into gustini via telnet
* create a new volume (eg berlioz-boot) on vdisk giustini-vdisk-1:
+ create volume vdisk giustini-vdisk-1 size 256MB berlioz-boot
(there is a 'help create volume' command with lots of informations)
* find the next free LUN numbers on traetta:
+ show host-maps traetta
* 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
