{"id":10,"date":"2025-12-23T21:00:00","date_gmt":"2025-12-23T20:00:00","guid":{"rendered":"https:\/\/airex.se\/blogg\/iscsi-discovery-efter-nas-uppgradering\/"},"modified":"2026-08-02T15:44:11","modified_gmt":"2026-08-02T13:44:11","slug":"iscsi-discovery-efter-nas-uppgradering","status":"publish","type":"post","link":"https:\/\/airex.se\/blogg\/iscsi-discovery-efter-nas-uppgradering\/","title":{"rendered":"Connection failure 0x0004: n\u00e4r iSCSI-discovery slutar fungera efter en NAS-uppgradering"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En NAS fick en st\u00f6rre uppgradering av sitt operativsystem. Efter\u00e5t rapporterade hypervisorn <code>Connection failure (0x0004)<\/code> p\u00e5 samtliga iSCSI-targets, och de virtuella maskiner som l\u00e5g p\u00e5 den lagringen ville inte starta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ingenting var borta. Diskarna fanns kvar, volymerna fanns kvar, och all data l\u00e5g or\u00f6rd. Det som hade g\u00e5tt s\u00f6nder var f\u00f6rm\u00e5gan att <em>hitta<\/em> lagringen \u2014 och det tog en stund att inse, f\u00f6r symptomen ser ut precis som n\u00e4r n\u00e5got \u00e4r trasigt p\u00e5 riktigt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Symptomet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Alla targets p\u00e5 den aktuella adaptern gick ner samtidigt. Inte en, inte n\u00e5gra \u2014 allihop. Det \u00e4r i sig en ledtr\u00e5d v\u00e4rd att ta p\u00e5 allvar: n\u00e4r precis allt slutar fungera p\u00e5 en g\u00e5ng \u00e4r det s\u00e4llan diskarna som g\u00e5tt s\u00f6nder. Det \u00e4r n\u00e5got gemensamt i kedjan, och det gemensamma h\u00e4r var uppt\u00e4cktsmekanismen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jag l\u00e4t en agent g\u00e5 igenom fels\u00f6kningen medan jag f\u00f6ljde med i vad den hittade. N\u00e4tverket svarade. Porten var \u00f6ppen. M\u00e5lsystemet lyssnade. \u00c4nd\u00e5 fick initiatorn inget vettigt svar n\u00e4r den fr\u00e5gade &#8221;vilka targets finns h\u00e4r?&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grundorsaken: discovery, inte lagring<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">iSCSI kan hitta sina targets p\u00e5 tv\u00e5 s\u00e4tt. Antingen fr\u00e5gar initiatorn m\u00e5lsystemet &#8221;r\u00e4kna upp vad du har&#8221; \u2014 dynamisk uppt\u00e4ckt, <code>SENDTARGETS<\/code> \u2014 eller s\u00e5 f\u00e5r den veta exakt vilket target den ska ansluta till, en statisk uppgift som n\u00e5gon har skrivit in f\u00f6r hand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Den dynamiska varianten \u00e4r bekv\u00e4mare, och det var den som anv\u00e4ndes. Efter uppgraderingen svarade m\u00e5lsystemet inte l\u00e4ngre p\u00e5 den fr\u00e5gan p\u00e5 det s\u00e4tt initiatorn f\u00f6rv\u00e4ntade sig. Till det kom att \u00e5tkomstlistorna \u2014 vilka initiatorer som alls f\u00e5r ansluta \u2014 hade f\u00e5tt nya standardv\u00e4rden i och med den nya versionen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Med andra ord: tv\u00e5 oberoende beteenden \u00e4ndrades tyst i en uppgradering som annars gick sm\u00e4rtfritt. Inget felmeddelande sa &#8221;din discovery-metod st\u00f6ds inte l\u00e4ngre&#8221;. Bara <code>Connection failure<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fixen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tre steg, i den ordningen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u00d6ppna \u00e5tkomsten igen p\u00e5 lagringssidan.<\/strong> M\u00e5lsystemet beh\u00f6vde till\u00e5ta initiatorerna att ansluta \u2014 i det h\u00e4r fallet genom att l\u00e5ta det generera \u00e5tkomstregler automatiskt i st\u00e4llet f\u00f6r att kr\u00e4va handskrivna.<\/li>\n<li><strong>Byt fr\u00e5n dynamisk till statisk uppt\u00e4ckt.<\/strong> Peka ut varje target explicit p\u00e5 initiatorsidan, med adress, port och fullst\u00e4ndigt targetnamn. Tr\u00e5kigare att s\u00e4tta upp, betydligt sv\u00e5rare att tappa bort.<\/li>\n<li><strong>Montera volymerna manuellt.<\/strong> N\u00e4r filsystemen kom tillbaka betraktades de som \u00f6gonblicksbilder av n\u00e5got som redan fanns, och monterades d\u00e4rf\u00f6r inte automatiskt. De m\u00e5ste monteras explicit innan de blir anv\u00e4ndbara igen.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Punkt tre \u00e4r den som skr\u00e4mmer mest i stunden. Volymen syns, den har r\u00e4tt storlek, och \u00e4nd\u00e5 v\u00e4grar systemet anv\u00e4nda den. Det ser ut som datakorruption. Det \u00e4r det inte \u2014 det \u00e4r ett skyddsbeteende som finns just f\u00f6r att man inte ska montera tv\u00e5 kopior av samma filsystem samtidigt och skriva s\u00f6nder b\u00e5da.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">S\u00e5 vet du att det funkar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Att en maskin startar bevisar ingenting. Det gjorde den innan uppgraderingen ocks\u00e5.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Testet \u00e4r en omstart av hypervisorn, hela v\u00e4gen, och en kontroll av att lagringen kommer tillbaka <em>av sig sj\u00e4lv<\/em>. Det \u00e4r f\u00f6rst d\u00e5 man vet om fixen sitter i konfigurationen eller bara i det aktuella k\u00f6rl\u00e4get. Jag har sett iSCSI se fullt frisk ut \u00e4nda fram till n\u00e4sta str\u00f6mavbrott.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kontrollera ocks\u00e5 att alla targets faktiskt \u00e4r anslutna, inte bara att de virtuella maskinerna startade. En maskin kan starta p\u00e5 en av sina diskar och fungera i timmar innan den r\u00f6r den andra.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad jag tar med mig<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bekv\u00e4mlighet i infrastrukturlagret \u00e4r en skuld man betalar vid uppgraderingar.<\/strong> Dynamisk uppt\u00e4ckt sparar fem minuter n\u00e4r man s\u00e4tter upp systemet och kostar en kv\u00e4ll varje g\u00e5ng n\u00e5got i kedjan \u00e4ndrar beteende. Statisk konfiguration \u00e4r trist, och trist \u00e4r precis vad man vill ha i lagringslagret.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>St\u00f6rre versionslyft \u00e4ndrar tysta standardv\u00e4rden.<\/strong> Det som st\u00e5r i releasenoteringarna \u00e4r s\u00e4llan det som stj\u00e4lper en. \u00c5tkomstlistor, standardprotokoll och r\u00e4ttighetsmodeller \u00e4ndras utan att n\u00e5gon skriver en rad om det, f\u00f6r i tillverkarens huvud \u00e4r det en f\u00f6rb\u00e4ttring.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>L\u00e4s symptomet bokstavligt.<\/strong> &#8221;Connection failure&#8221; betyder att anslutningen misslyckades, inte att disken \u00e4r trasig. Skillnaden mellan att inte n\u00e5 n\u00e5got och att ha f\u00f6rlorat det avg\u00f6r om n\u00e4sta steg \u00e4r fels\u00f6kning eller \u00e5terl\u00e4sning fr\u00e5n backup \u2014 och panik leder alltid till det senare f\u00f6rst.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Alla iSCSI-targets gick ner samtidigt efter ett st\u00f6rre versionslyft p\u00e5 lagringen. Ingenting var borta \u2014 det som g\u00e5tt s\u00f6nder var f\u00f6rm\u00e5gan att hitta lagringen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-10","post","type-post","status-publish","format-standard","hentry","category-drift"],"_links":{"self":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":1,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":14,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/10\/revisions\/14"}],"wp:attachment":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}