{"id":1334,"date":"2009-11-14T17:27:39","date_gmt":"2009-11-14T07:27:39","guid":{"rendered":"http:\/\/nsrd.wordpress.com\/?p=1334"},"modified":"2009-11-14T17:27:39","modified_gmt":"2009-11-14T07:27:39","slug":"networker-and-linuxvtl-redux","status":"publish","type":"post","link":"https:\/\/nsrd.info\/blog\/2009\/11\/14\/networker-and-linuxvtl-redux\/","title":{"rendered":"NetWorker and linuxvtl, Redux"},"content":{"rendered":"<p>Some time ago, I posted a blog entry titled <a title=\"Carry a jukebox with you, if you're using Linux\" href=\"https:\/\/nsrd.info\/blog\/2009\/07\/13\/carry-a-jukebox-with-you-if-youre-using-linux\/\" target=\"_blank\">Carry a Jukebox with you, if you&#8217;re using Linux<\/a>, which referred to using <a title=\"LinuxVTL at Googlepages\" href=\"http:\/\/linuxvtl.googlepages.com\" target=\"_self\">linuxvtl<\/a> with NetWorker. The linuxvtl project is run by my friend Mark Harvey, who has been working with enterprise backup products as long as me.<\/p>\n<p>At the time I blogged, the key problem with the LinuxVTL implementation was that NetWorker didn&#8217;t recognise the alternate device IDs generated by the code \u2013 it relied on WWNN&#8217;s, which were the same for each device.<\/p>\n<p>I was over the moon when I received an email from Mark a short while ago saying he&#8217;s now got multiple devices working in a way that is compatible with NetWorker. This is a huge step forward for Linux VTL.<\/p>\n<p>So, what&#8217;s changed?<\/p>\n<p>While I&#8217;ve not had confirmation from Mark, I&#8217;m working on the basis that you do need the latest source code (mhvtl-2009-11-10.tgz as of the time of writing).<\/p>\n<p>The next step, to quote Mark, is that we need to step away from StorageTek and define the library as SpectraLogic:<\/p>\n<blockquote><p>p.s. The &#8220;fix&#8221; is to define the robot as a Spectralogic NOT an L700.<br \/>\nThe STK L700 does not follow the SMC standards too well. It looks like<br \/>\nNetWorker uses the &#8216;L700&#8217; version and not the standards.<br \/>\nThe Spectralogic follows the SMC standards (or at least their<br \/>\ninterruption is the same as mine \ud83d\ude42 )<\/p><\/blockquote>\n<p>The final part is to update the configuration files to include details that allow the VTL code to generate unique WWNNs for NetWorker&#8217;s use.<\/p>\n<p>Starting out with just 2 devices, here&#8217;s what my inquire output now looks like:<\/p>\n<pre>[root@tara ~]# inquire -l\n\n-l flag found: searching all LUNs, which may take over 10 minutes per adapter\n\tfor some fibre channel adapters.  Please be patient.\n\nscsidev@0.0.0:SPECTRA PYTHON    5500|Autochanger (Jukebox), \/dev\/sg2\n\t\t\t        S\/N:\tXYZZY\n\t\t\t        ATNN=SPECTRA PYTHON          XYZZY\n\t\t\t        WWNN=11223344ABCDEF00\nscsidev@0.1.0:QUANTUM SDLT600   5500|Tape, \/dev\/nst0\n\t\t\t        S\/N:\tZF7584364\n\t\t\t        ATNN=QUANTUM SDLT600         ZF7584364\n\t\t\t        WWNN=11223344ABCDEF01\nscsidev@0.2.0:QUANTUM SDLT600   5500|Tape, \/dev\/nst1\n\t\t\t        S\/N:\tZF7584366\n\t\t\t        ATNN=QUANTUM SDLT600         ZF7584366\n\t\t\t        WWNN=11223344ABCDEF02<\/pre>\n<div><span style=\"font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: small;\"><span style=\"line-height: 18px; white-space: pre;\"><br \/>\n<\/span><\/span><\/div>\n<div id=\"_mcePaste\">As you can see &#8211; each device has a different WWNN now, which is instrumental for NetWorker. (Note, I have adjusted the spacing slightly to make sure it fits in.)<\/div>\n<p>Finally, here&#8217;s what my \/etc\/mhvtl\/device.conf and \/etc\/mhvtl\/library_contents files now look like:<\/p>\n<pre>[root@tara mhvtl]# cat device.conf\n\nVERSION: 2\n\n# VPD page format:\n# &lt;page #&gt; &lt;Length&gt; &lt;x&gt; &lt;x+1&gt;... &lt;x+n&gt;\n\n# NOTE: The order of records is IMPORTANT...\n# The 'Unit serial number:' should be last (except for VPD data)\n# i.e.\n# Order is : Vendor ID, Product ID, Product Rev and serial number finally\n# Zero, one or more VPD entries.\n#\n# Each 'record' is sperated by one (or more) blank lines.\n# Each 'record' starts at column 1\n\nLibrary: 0 CHANNEL: 0 TARGET: 0 LUN: 0\n Vendor identification: SPECTRA\n Product identification: PYTHON\n Product revision level: 5500\n Unit serial number: XYZZY\n NAA: 11:22:33:44:ab:cd:ef:00\n\nDrive: 1 CHANNEL: 0 TARGET: 1 LUN: 0\n Vendor identification: QUANTUM\n Product identification: SDLT600\n Product revision level: 5500\n Max density: 0x46\n NAA: 11:22:33:44:ab:cd:ef:01\n Unit serial number: ZF7584364\n VPD: b0 04 00 02 01 00\n\nDrive: 2 CHANNEL: 0 TARGET: 2 LUN: 0\n Vendor identification: QUANTUM\n Product identification: SDLT600\n Product revision level: 5500\n Max density: 0x46\n NAA: 11:22:33:44:ab:cd:ef:02\n Unit serial number: ZF7584366\n VPD: b0 04 00 02 01 00<\/pre>\n<div><span style=\"font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: small;\"><span style=\"line-height: 18px; white-space: pre;\"><\/p>\n<div>[root@tara mhvtl]# cat library_contents<\/div>\n<div># Define how many tape drives you want in the vtl..<\/div>\n<div># The &#8216;XYZZY_&#8230;&#8217; is the serial number assigned to<\/div>\n<div># this tape device.<\/div>\n<div>Drive 1: ZF7584364<\/div>\n<div>Drive 2: ZF7584366<\/div>\n<div># Place holder for the robotic arm. Not really used.<\/div>\n<div>Picker 1:<\/div>\n<div># Media Access Port<\/div>\n<div># (mailslots, Cartridge Access Port, &lt;insert your favourate name here&gt;)<\/div>\n<div># Again, define how many MAPs this vtl will contain.<\/div>\n<div>MAP 1:<\/div>\n<div>MAP 2:<\/div>\n<div>MAP 3:<\/div>\n<div>MAP 4:<\/div>\n<div># And the &#8216;big&#8217; on, define your media and in which slot contains media.<\/div>\n<div># When the rc script is started, all media listed here will be created<\/div>\n<div># using the default media capacity.<\/div>\n<div>Slot 1:<span style=\"white-space: pre;\"> <\/span>800843S3<\/div>\n<div>Slot 2: 800844S3<\/div>\n<div>Slot 3: 800845S3<\/div>\n<div>Slot 4: 800846S3<\/div>\n<div>Slot 5: 800847S3<\/div>\n<div>Slot 6: 800848S3<\/div>\n<div>Slot 7: 800849S3<\/div>\n<div>Slot 8: 800850S3<\/div>\n<div>Slot 9: 800851S3<\/div>\n<div>Slot 10: 800852S3<\/div>\n<div>Slot 11: 800853S3<\/div>\n<div>Slot 12: 800854S3<\/div>\n<div>Slot 13: 800855S3<\/div>\n<div>Slot 14: 800856S3<\/div>\n<div>Slot 15: 800857S3<\/div>\n<div>Slot 16: 800858S3<\/div>\n<div>Slot 17: 800859S3<\/div>\n<div>Slot 18: 800860S3<\/div>\n<div>Slot 19: 800861S3<\/div>\n<div>Slot 20: 800862S3<\/div>\n<div>Slot 21: BIG990S3<\/div>\n<div>Slot 22: BIG991S3<\/div>\n<div>Slot 23: BIG992S3<\/div>\n<div>Slot 24: BIG993S3<\/div>\n<div>Slot 25: BIG994S3<\/div>\n<div>Slot 26: BIG995S3<\/div>\n<div>Slot 27: BIG996S3<\/div>\n<div>Slot 28: BIG997S3<\/div>\n<div>Slot 29: BIG998S3<\/div>\n<div>Slot 30: BIG999S3<\/div>\n<div>Slot 31: CLN001L1<\/div>\n<div>Slot 32: CLN002L1<\/div>\n<p><\/span><\/span><\/div>\n<p>NOTE in the &#8220;device.conf&#8221; file the NAA entries &#8211; these are key!<\/p>\n<p>With these changes done, jbconfig worked without missing a beat, and suddenly I had a 2 drive VTL running.<\/p>\n<p><strong>Great going, Mark!<\/strong><\/p>\n<p>While I&#8217;ve not yet tested, I suspect this fix will also ensure that the VTL can be configured on multiple storage nodes, which will be a fantastic improvement for library support work as well.<\/p>\n<p><strong><em>[Edit, 2009-11-18]<\/em><\/strong><\/p>\n<p>I&#8217;m pleased to say that the changes that have been made allow for the VTL to be created on more than one storage node. This presents excellent opportunities for debugging, testing and training:<\/p>\n<p><a href=\"http:\/\/nsrd.files.wordpress.com\/2009\/11\/linuxvtl.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1356\" title=\"LinuxVTL on server and storage node\" src=\"http:\/\/nsrd.files.wordpress.com\/2009\/11\/linuxvtl.png?w=270\" alt=\"LinuxVTL on server and storage node\" width=\"270\" height=\"300\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2009\/11\/linuxvtl.png 460w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2009\/11\/linuxvtl-270x300.png 270w\" sizes=\"auto, (max-width: 270px) 100vw, 270px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Some time ago, I posted a blog entry titled Carry a Jukebox with you, if you&#8217;re using Linux, which referred&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[15,16],"tags":[1248,541,1101],"class_list":["post-1334","post","type-post","status-publish","format-standard","hentry","category-linux","category-networker","tag-linux","tag-linuxvtl","tag-vtl"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pKpIN-lw","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts\/1334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/comments?post=1334"}],"version-history":[{"count":0,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts\/1334\/revisions"}],"wp:attachment":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/media?parent=1334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/categories?post=1334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/tags?post=1334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}