I takt med att allt snabbare ethernetbaserade lösningar växer fram ökar behovet av kunskap kring lagringslösningar som baseras på den tekniken. Vi ska här titta på de delar som ingår och sätta upp ett enkelt san baserat på iscsi.

Det finns många olika tillverkare av iscsi-lagringslösningar. Vi har valt att använda en Windowsbaserad produkt vid namn Starwind för att hålla oss i en välbekant miljö och fokusera på konceptet iscsi snarare än på en specifik lagringsprodukt.

Låt oss börja med att se vad du bör tänka på när du inför iscsi för att sedan sätta upp ett lastbalanserat san.



Så kan en iscsi-topologi se ut. Klienter ansluter som vanligt till fysiska eller virtuella servrar via klientnätet. Servrarna – eller hypervisorn om man vill lagra virtuella servrar på en iscsi-lagringsprodukt – ansluter sedan till iscsi-lagringsytan. All lagringstrafik flyter lastbalanserat via dedikerade växlar i lagringsnätet, men kräver ingen specialiserad hårdvara. Van­liga övervakningsbara gigabitsväxlar duger oftast bra.

1 Nätverksdesign


Till att börja med måste vi ställa oss ett par frågor kring nätverkstopo­login. En grund­läggande regel är att man inte ska blanda iscsi-lagringstrafik med vanlig klientrelaterad nättrafik. Separeringen sker både av prestanda- och säkerhetsskäl. Minimikravet är att du separerar trafiken med vlan, men det allra bästa är att ge lagringsnätet egna växlar. För att få redundans i lösningen behöver du då troligen minst två fysiska växlar av god kvalitet. Det är en fördel om de är övervakningsbara så att du kan se statistik och göra event­uella finjusteringar avseende qos, duplexinställningar eller annat.

Många är också överens om att iscsi-trafik inte ska routas, utan att initiator och target (mål) alltid ska ligga på samma subnät, även om det rent tekniskt givetvis inte finns något hinder för routning. Det är ju trots allt vanlig tcp/ip som är bärare.

I det här fallet arbetar vi med en enklare lösning och utnyttjar vanliga, inbyggda nätverkskort i en server. För att få maximala prestanda i en iscsi-lösning använder man dedikerade iscsi hba-kort som bara är till för iscsi-trafik. De innehåller optimeringar för att avlasta servern vid hantering av iscsi och gör dessutom att man oftast kan starta hela servern från ett iscsi san.



Du bör använda dedikerade nätverkskort till iscsi. Här har vi avmarkerat fil- och skrivardelning och anger en adress på ett separat subnät.

2 Ip-adressering


Vi tänker oss att vi har en server med två nätverkskort som ska kommunicera last­balanserat med ett iscsi-san som i sig också har två nätverkskort. Eftersom vi kommer att arbeta med en Windowsbaserad lösning behöver vi placera våra båda nätverkskort på två olika subnät för att initiatorn ska förstå att den har två vägar till samma mål.

Du börjar alltså med att sätta i två nätverkskort som är dedi­kerade till iscsi-trafik och anger ip-adresser på två olika subnät. Vi valde 192.168.1.0/24 och 192.168.2.0/24. Du bör avmarkera fil- och skrivardelning från denna anslutning. Ingen gateway eller dns behöver pekas ut. På själva iscsi-lagringsenheten måste givetvis också ip-adresser konfigureras på samma subnät så att de kan nå varandra.

3 Skapa iscsi-mål


När kommunikationen är färdig skapar du lun som mål (”targets”) på din lagringsenhet. Vi valde i det här fallet att ­använda Starwind som produkt för att skapa våra mål. Många produkter har inbyggda funktioner för olika ändamål, som replikering för att skydda mot katastrofer, tunna volymer för att spara disk­yta samt diverse olika sätt att hantera lastbalansering, till exempel via virtuella ip-adresser.

Här fokuserar vi på iscsi i sig, men du bör givetvis väga in många olika parametrar i ditt val av lagringslösning.

Ett mål består i praktiken av en lagringsyta som byggs upp av en eller flera hårddiskar, ofta orga­niserade i disklådor som i sig ger extra skydd om hårddiskar går sönder. Målet får ett iqn-id och presenteras ut mot nätverket via någon form av admi­nistrationsprogram.

Det finns givetvis inget hinder för att flera servrar pratar med en och samma iscsi-lagringslösning. Om du planerar att formatera dina mål med ntfs får där­emot två servrar inte ansluta till en och samma mål eftersom ntfs inte är ett klustrat filsystem. Andra filsystem, som Vmwares wmfs, är skapade för att sam­tidigt kunna användas av flera servrar mot samma mål. Iscsi lägger sig egentligen inte i tilllämpningen, det gäller helt ­enkelt att veta i förväg hur lösningen ska användas.



Vi skapar ett nytt mål (target) i Starwind. Det får automatiskt en iqn som används som identifierare.

4 Installera mpio


För att vi ska kunna komma i kontakt med vår lagringsenhet via flera lastbalanserade anslutningar måste vi installera stöd för multi path i/o (mpio) i Windows. Vi använder här Windows Server 2008 R2 där det stödet finns. Det aktiveras via serverhanteraren.



I serverhanteraren lägger vi till funktionen mpio för att ge vår iscsi-initiator möjlighet att använda flera vägar till samma lagringsyta.

5 Anslut till portal


Eftersom vi vill få ut maximala prestanda ur vår lösning vill vi som sagt använda lastbalansering. Vi lägger grunden för det genom att ansluta till vår lagringsenhet på de två adresser som vi tilldelade den. Det som vi ansluter till kallas för portal. I fallet Starwind ska vi ansluta till portalen två gånger för att sedan få möjlighet att peka ut två olika adresser till ett och samma mål.

"Eftersom vi vill få
ut ­maximala prestanda vill vi ­
använda lastbalansering."

Olika produkter tacklar det på olika sätt. HP/Lefthand VSA 4000 skapar till exempel en virtuell ip-adress som ”svävar” framför de egentliga adresserna och styr om trafiken åt oss efter en enda portalanslutning.

Starta iscsi-initiatorn, en standardkomponent i Windows, och gå till fliken Discovery för att genomföra konfigurationen.



Vi lägger till två anslutningar, en per portal. I andra iscsi-­tillämpningar krävs endast en portalanslutning. Servern får sedan en lista på mål tillbaka.

6 Två vägar till mål


När portalanslutningarna är på plats ska vi ansluta till vårt mål via två vägar. I Windows iscsi-initiator väljer du ­fliken Targets och klickar på Connect. Här väljer du ”Enable Multi-Path” och klickar på ”Advanced”. Ange vilken ip-adress på lagringsenheten som du vill konfigurera en anslutning till. Om du har krävt att man måste ange lösenord för att ansluta kryssar du i chap och anger lösen­ordet.

Om din lagringsenhet klarar det kan du också konfigurera ipsec för att få en fortlöpande kryptering av all trafik mellan initiator och mål. När du har valt ena adressen och klickat OK upprepar du proceduren med den andra. Du har nu en anslutning mellan din initiator och ditt utdelade mål.

I serverhanterarens diskhanteringsnod ser du just nu två ­diskar, trots att det bara är ett mål ut­delat. Det beror på att vi inte har aktiverat stödet för mpio.



För högre säkerhet, även i ett dedikerat lagringsnät, är det klokt att kräva chap-lösen­ordshantering för att få ansluta till ett mål. Vissa leverantörer kräver någon form av säkerhetslösning för att tillåta anslutning.


Innan mpio är konfigurerat ser vi något av en synvilla. Vårt mål är ju egentligen bara en enda utdelad disk.


Nu definierar vi uttryckligen vilka mål vi ska ansluta till. ­Notera möjligheten att ange det lösenord som vi krävde för ­målet i Starwind tidigare.

7 Aktivera mpio - omstart


När vi la till den nya funktionen mpio fick vi ett litet ­administrationsprogram för den. Starta det och sätt kryss för att ange att iscsi ska utnyttja mpio-stödet. Servern vill nu starta om och det är bara att låta den göra det. När servern startar igen upptäcker den att det egentligen är två vägar till samma sak och du ser numera bara en enda disk i diskhanteraren.

Mpio är den teknik för last­för­delning som har störst stöd bland leverantörer av iscsi-lagringslösningar. I Windows finns en annan teknik som heter Multiple Connections per Server (MCS), men den kan inte hantera olika algoritmer per mål.



När nu stöd för mpio är på plats ser vi vår enda disk igen. Den har nu formaterats med ntfs och är redo att användas.

8 Formatera disken


För att vi ska få någon nytta av vårt mål måste vi först formatera det. Det görs på vanligt sätt i diskhanteraren. Vid forma­teringen av disken ska du fundera över vilken klusterstorlek som ska användas. Kontrollera med leverantören av din lagrings­enhet om de har någon rekommendation om klusterstorlek.

Standardstorleken på ntfs-kluster är 4 kilobyte på volymer upp till 16 terabyte, men det är inte alltid optimalt för just dig.

Ta också reda på om det finns någon speciell rekommendation för alignment av din volym. I så fall bör du skapa din volym med verktyget Diskpart och använda växeln Align=X, där X är det värde som du har ­blivit rekommenderad.

9 Sätt rätt lastpolicy


Det finns olika algoritmer som man kan använda för att balansera lasten mellan de tillgängliga vägarna mellan initiator och mål. Med vårt upplägg är standardalgoritmen round robin. Den fördelar lasten matematiskt jämnt mellan ingående nätverkskort.

Andra algoritmer hanterar fail-over på olika sätt och kan ge möjlighet att vikta belastningen olika mellan olika nätverkskort. Vilken av dem som är bäst att använda beror på vilka behov du har och vilka funktioner som ska prioriteras. Det finns många åsikter i frågan på olika forum på internet.

Oavsett vilken algoritm du ­använt har det nu blivit dags att testa anslutningen. Ett enkelt sätt är att kopiera en stor fil från din klient till ditt mål. Om du först tittar i Task Manager eller Performance Monitor kan du se att trafiken verkligen flyter över alla ingående nätverkskort. Efter­som vi i det här fallet arbetar med en vanlig Windowsserver vore det enkelt att utöka antalet nätverkskort som används. I en iscsi-­lagringslösning baserad på dedikerad och specialiserad hårdvara kan det vara svårare. Det gäller att tänka till i förväg på hur många fysiska ethernetanslutningar du behöver för att nå maximala prestanda.



Här kan vi se att vi har två aktiva anslutningar till vår target och att det är algoritmen round robin som används.


På klienten ser vi här resultatet när vi kopierar en stor fil. Som synes flyter trafiken över båda anslutningarna.

TechWorlds slutsats


Det här var ett exempel på hur Windows hanterar iscsi-anslutningar. Det finns som sagt många fler tillämpningar som utnyttjar protokollet. Många företag har redan en virtualiserad serverpark eller planerar det. Vmwares produkter är vanliga och produktsviten Vsphere med hypervisorn ESX(i) har ­heller inget emot att använda iscsi som lagringsprotokoll över lastbalanserade nätverkskort. För enklare tillämpningar behövs kanske heller ingen lastbalansering alls, utan all lagringstrafik får plats via en enda giga- eller tiogigabitsanslutning. I de här fallen får man en synnerligen enkel iscsi-konfiguration.

"Personalen har i många fall
redan en stor del av den kunskap
som behövs för iscsi."

Iscsi är på frammarsch, främst eftersom det bygger på jäm­förelsevis billig teknik. Dessutom har personalen i många fall redan en stor del av den kunskap som behövs.

En intressant övning du kan göra är att mäta en tid på din nuvarande lagringslösning. Du kan räkna med att en iscsi-lagringslösning kan överföra cirka 100 megabyte per sekund över en enda gigabitanslutning under rätt förhållanden. Om du huvudsakligen ligger under den gränsen kan du få en mycket enkel och billig lösning på plats med iscsi.

Illustration & grafik: Jonas Englund

Fakta

  • Mål, target. Själva lagringsplatsen på iscsi-lagringsenheten som har skapats och exponerats ut mot olika initiatorer. Kan bestå av en fil, en fysisk hårddisk/raid-set eller till och med en ram-disk på en server.
  • Initiator. Den klientkomponent som ansluter till ett mål. Gör så att klienten kan formatera ett mål med sitt eget filsystem och verkligen få nytta av lagringsytan.
  • Iqn. Både mål och initiator har ett iqn-id. Det är helt enkelt ett namn som gör att de kan hålla reda på varandra.
  • Mpio, multi path i/o. En teknik som används inom lagringsvärlden för att samla ihop flera anslutningar mellan initiator och mål för att få redundans och högre hastighet. En liknande teknik på underliggande nätverksnivå heter lacp (link aggregation control protocol) men den godkänns inte av alla tillverkare för användning med iscsi. Den lämpar sig dessutom bäst vid anslutningar mellan många olika noder, inte från en enda punkt till en annan.
  • Chap. Protokoll för säker överföring av lösenord. Chap används för att mål och initiator ska veta att båda parter har rätt att kommunicera med varandra

Alla läs- och skrivoperationer mot en hårddisk på en server sker via scsi-protokollet. De färdas traditionellt direkt i en kabel mellan scsi-kort och hårddisk. För att få större flexibilitet i hanteringen av lagringsplats uppfanns sätt att paketera dessa kommandon via andra transportvägar, som fibre channel-trafik (fc) eller vanlig ethernetbaserad tcp/ip-trafik. Fc är snabbt och pålitligt, men kräver ofta specialkunskaper och dyr utrustning.

Iscsi placerar scsi-kommandon i tcp/ip-paket, vilket innebär att du kan använda ”vanlig” nätverksutrustning. Det är ofta en billigare lösning och du har troligen redan en del kunskap om tcp/ip. De flesta av dagens operativssystem har stöd för iscsi, liksom flera andra tilllämpningar som Vmware ESX.