{"id":28,"date":"2013-07-02T17:05:07","date_gmt":"2013-07-02T15:05:07","guid":{"rendered":"http:\/\/www.theta-soft.de\/blog\/?p=28"},"modified":"2013-07-07T20:47:32","modified_gmt":"2013-07-07T18:47:32","slug":"installieren-des-linux-iscsi-target-lio-unter-opensuse-12-2","status":"publish","type":"post","link":"https:\/\/www.theta-soft.de\/blog\/2013\/installieren-des-linux-iscsi-target-lio-unter-opensuse-12-2\/","title":{"rendered":"Installieren des Linux-iSCSI-Target (LIO) unter openSUSE 12.2"},"content":{"rendered":"<p>Heute wollte ich mal wieder das <a href=\"http:\/\/www.linux-iscsi.org\/\" target=\"_blank\">Linux-iSCSI-Target<\/a>\u00a0(LIO) unter openSUSE 12.2 zum Laufen bringen. Die erforderlichen Module sind seit Version\u00a02.6.38 im Kernel enthalten, allerdings m\u00fcssen bei openSUSE die Tools zur Konfiguration (lio-utils, targetcli) nachtr\u00e4glich installiert werden.\u00a0Das letzte Mal, dass ich eine solche Installation vorgenommen habe, liegt schon einige Zeit zur\u00fcck, und damals habe ich mir dummerweise nicht aufgeschrieben, was dabei zu beachten ist. Au\u00dferdem hat sich bei LIO inzwischen einiges getan, einige Pakete sind <em>deprecated<\/em>, und die Installation hat sich dementsprechend ge\u00e4ndert.\u00a0Die Anleitung, die man im <a href=\"http:\/\/www.linux-iscsi.org\/wiki\/Downloads#Installation\" target=\"_blank\">LIO-Wiki<\/a> findet, funktioniert unter openSUSE leider nicht, da einige Python-Packages nicht verf\u00fcgbar sind. Man muss daher ein wenig basteln.<\/p>\n<p>Zun\u00e4chst installiert man <em>git<\/em> (falls noch nicht vorhanden) sowie ein paar weitere Packages. Diese Aufgabe l\u00e4sst sich noch bequem mittels <em>zypper<\/em> erledigen:<\/p>\n<pre>zypper in git python-devel python-ipaddr python-netifaces python-configobj \\\r\n    net-snmp-devel<\/pre>\n<p>Die oben erw\u00e4hnten Python-Packages, die nicht mittels <em>zypper<\/em> installierbar sind, l\u00e4dt man sich einfach aus dem Netz herunter. Da w\u00e4re zun\u00e4chst <a href=\"https:\/\/pypi.python.org\/packages\/source\/e\/epydoc\/epydoc-3.0.1.tar.gz#md5=36407974bd5da2af00bf90ca27feeb44\">epydoc<\/a>, das man nach dem Herunterladen und Entpacken einfach mittels <code>make install<\/code>\u00a0kompiliert und installiert. Die ebenfalls ben\u00f6tigten Pakete\u00a0<a href=\"https:\/\/pypi.python.org\/packages\/source\/S\/SimpleParse\/SimpleParse-2.1.1.tar.gz#md5=d67aaceca86acc763d6eebee919cc8aa\">SimpleParse<\/a>\u00a0und <a href=\"https:\/\/pypi.python.org\/packages\/source\/u\/urwid\/urwid-1.1.1.tar.gz#md5=932d199de6fc847eab2c151512220665\">urwid<\/a> m\u00fcssen im Python-Stil mittels <code>python setup.py install<\/code> installiert werden.<\/p>\n<p>Als Werkzeug f\u00fcr die Konfiguration des LIO-Targets dient das Tool <em>targetcli<\/em>. Dieses kann zusammen mit weiteren erforderlichen Bibliotheken mittels <em>git<\/em> heruntergeladen werden. Wir beginnen zun\u00e4chst mit der <em>RTSlib<\/em>, welche die API enth\u00e4lt, sowie <em>configshell<\/em>, das f\u00fcr die Text-Oberfl\u00e4che verwendet wird:<\/p>\n<pre>git clone git:\/\/risingtidesystems.com\/rtslib.git\r\n(cd rtslib;\u00a0.\/setup.py install)\r\ngit clone git:\/\/risingtidesystems.com\/configshell.git\r\n(cd configshell;\u00a0.\/setup.py install)<\/pre>\n<p>W\u00fcrde man die\u00a0<em>RTSlib<\/em> \u00fcber eine Paketverwaltung installieren (RPM o.\u00e4.), w\u00fcrden auch noch ein paar Dateien an die richtige Stelle kopiert. (Zu sehen ist das z.B. in der Datei\u00a0<code>rpm\/python-rtslib.spec.tmpl<\/code>.) Bei einer manuellen Installation muss das Kopieren manuell erledigt werden:<\/p>\n<pre>cp -r rtslib\/specs \/var\/target\/fabric<\/pre>\n<p>Eigentlich sollte es jetzt mit\u00a0<em>targetcli<\/em> weitergehen. Die Installation schl\u00e4gt jedoch mit der Meldung <em>&#8222;Module \u2018tcm_dump\u2019 not found&#8220;<\/em> fehl. Lustigerweise ben\u00f6tigt man anscheinend f\u00fcr\u00a0<em>targetcli<\/em> die fr\u00fcher verwendeten und heute als\u00a0<em>deprecated<\/em>\u00a0gekennzeichneten\u00a0<em>lio-utils<\/em>. Wir installieren selbige mal schnell:<\/p>\n<pre>git clone git:\/\/risingtidesystems.com\/lio-utils.git\r\ncd lio-utils\r\nmake\r\nmake install<\/pre>\n<p>Und schon ist man mit dem n\u00e4chsten Problem konfrontiert: Die in den\u00a0<em>lio-utils<\/em>\u00a0enthaltenen Python-Module werden in das Verzeichnis\u00a0<code>\/usr\/local\/lib\/python2.7\/site-packages<\/code> installiert. Das scheint eine Besonderheit von OpenSUSE zu sein, denn das Installationsprogramm erwartet die Module in <code>\/usr\/lib\/python2.7\/site-packages<\/code> (ohne &#8222;local&#8220;) und legt dementsprechend einige symbolische Links falsch an. Zum Gl\u00fcck l\u00e4sst sich das leicht korrigieren:<\/p>\n<pre>ln -sf \/usr\/local\/lib\/python2.7\/site-packages\/tcm_dump.py \/usr\/sbin\/tcm_dump\r\nln -sf \/usr\/local\/lib\/python2.7\/site-packages\/tcm_fabric.py \/usr\/sbin\/tcm_fabric\r\nln -sf \/usr\/local\/lib\/python2.7\/site-packages\/tcm_loop.py \/usr\/sbin\/tcm_loop\r\nln -sf \/usr\/local\/lib\/python2.7\/site-packages\/tcm_node.py \/usr\/sbin\/tcm_node\r\nln -sf \/usr\/local\/lib\/python2.7\/site-packages\/lio_dump.py \/usr\/sbin\/lio_dump\r\nln -sf \/usr\/local\/lib\/python2.7\/site-packages\/lio_node.py \/usr\/sbin\/lio_node<\/pre>\n<p>Au\u00dferdem m\u00fcssen die frisch verlinkten Programme auch noch ausf\u00fchrbar gemacht werden:<\/p>\n<pre>chmod 755 \/usr\/sbin\/tcm_* \/usr\/sbin\/lio_*<\/pre>\n<p><span style=\"line-height: 1.714285714; font-size: 1rem;\">Ob man abschlie\u00dfend wirklich noch\u00a0<\/span><em style=\"line-height: 1.714285714; font-size: 1rem;\">targetcli<\/em><span style=\"line-height: 1.714285714; font-size: 1rem;\"> installiert, ist Geschmackssache, denn die in den\u00a0<\/span><em style=\"line-height: 1.714285714; font-size: 1rem;\">lio-utils<\/em><span style=\"line-height: 1.714285714; font-size: 1rem;\"> enthaltenen Tools gen\u00fcgen eigentlich vollkommen, um das iSCSI-Target zu konfigurieren. (Details dazu findet man im &#8222;<\/span><a style=\"line-height: 1.714285714; font-size: 1rem;\" href=\"http:\/\/linux-iscsi.org\/builds\/docs\/LIO-3.0-Users_Reference_Manual.pdf\" target=\"_blank\">LIO User&#8217;s Reference Manual<\/a><span style=\"line-height: 1.714285714; font-size: 1rem;\">&#8222;.) Wenn man sich f\u00fcr die Installation von\u00a0<\/span><em style=\"line-height: 1.714285714; font-size: 1rem;\">targetcli<\/em><span style=\"line-height: 1.714285714; font-size: 1rem;\"> entscheidet, ist das aber auch nicht mehr weiter schwierig:<\/span><\/p>\n<pre>git clone git:\/\/risingtidesystems.com\/targetcli.git\r\ncd targetcli\r\n.\/setup.py install<\/pre>\n<p>Bevor man nun wirklich iSCSI-Laufwerke anlegen kann, m\u00fcssen die entsprechenden Kernel-Module geladen und das config-Dateisystem gemountet werden. Beides erledigt das init-Script <code>\/etc\/init.d\/target<\/code>. Hat man dieses gestartet, kann \u00fcber <em>targetcli<\/em> oder <em>tcm_node<\/em> \/ <em>lio_node<\/em> das iSCSI-Target konfiguriert werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heute wollte ich mal wieder das Linux-iSCSI-Target\u00a0(LIO) unter openSUSE 12.2 zum Laufen bringen. Die erforderlichen Module sind seit Version\u00a02.6.38 im Kernel enthalten, allerdings m\u00fcssen bei openSUSE die Tools zur Konfiguration (lio-utils, targetcli) nachtr\u00e4glich installiert werden.\u00a0Das letzte Mal, dass ich eine solche Installation vorgenommen habe, liegt schon einige Zeit zur\u00fcck, und damals habe ich mir dummerweise [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[1],"tags":[5,4,6],"class_list":["post-28","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-iscsi","tag-linux","tag-lio"],"_links":{"self":[{"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/posts\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":8,"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":60,"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/posts\/28\/revisions\/60"}],"wp:attachment":[{"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/categories?post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.theta-soft.de\/blog\/wp-json\/wp\/v2\/tags?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}