O iSCSI pisałem wielokrotnie. Na przykład tu, tu i tu. Można powiedzieć, że lubię ten protokół i choć wiem, że nie zawsze jest idealnym wyborem – uważam, że warto przynajmniej wiedzieć  jak działa i kiedy dobrze się sprawdzi. Dla typowego ITPro, najcenniejszą cechą iSCSI jest łatwość zastosowania w środowiskach laboratoryjnych. Wykorzystanie "prawdziwej" macierzy nie zawsze jest osiągalne. A maszynę wirtualną z targetem iSCSI można uruchomić w kilka minut, nawet mając tylko kilka GB przestrzeni dyskowej na laptopie. To wystarczy do zbudowania testowego klastra, czy przećwiczenia rozwiązań bezdyskowych.

Historia dostępności programowego targetu iSCSI jest dość ciekawa. Najpierw dostępny był on wyłącznie jako fragment Windows Storage Server. System ten dostępny był jedynie jako OEM na wybranych serwerach i mimo, że dość ciekawy – w praktyce był nieosiągalny dla typowego administratora. Podczas Summitu MVP w 2008 roku, grupa MVP praktycznie wymusiła na odpowiedzialnych za ten system osobach udostępnienie go dla wybrańców. Niedługo później, udało się wynegocjować szerszą dostępność, w ramach subskrypcji TechNet. Odtąd, specjaliści IT mogli pobrać wersję instalacyjną tej edycji systemu wraz z instalatorem programowanego targetu iSCSI. Instalator ten miał jedną niemiłą cechę: weryfikował, czy system operacyjny to edycja Storage Server. Tak więc, dla potrzeb nawet najprostszego targetu iSCSI, w praktyce należało uruchomić dedykowany system. Ewentualnie, można było użyć programu ORCA udostępnianego w ramach Platform SDK i przeedytować plik MSI. Nie było to rozwiązanie zgodne z licencją, ale potrafię zrozumieć tych, którzy używali go w środowiskach laboratoryjnych. Następnie, w kwietniu 2011 opublikowana została wreszcie wersja "normalna". Możliwa do zainstalowania na dowolnym serwerze i pozwalająca na przykład na zbudowanie małego klastra na laptopie wyposażonym w 2GB pamięci RAM. Wreszcie oficjalnie, bez kombinowania i naruszania warunków licencji.

Target iSCSI przechowuje swoje dane w plikach VHD. Format ten jest bardzo elastyczny i pozwala na różne cuda takie jak dynamiczne przydzielanie miejsca czy tworzenie dysków różnicowych. Problem w tym, że w przypadku programowego targetu iSCSI, dość długo, jedynym obsługiwanym sposobem przechowywania danych były dyski "fixed size". Ogranicza to czasem administratora i choć przestrzeń dyskowa zwykle jest niedroga, to jednak niektóre scenariusze musiały być mocno ograniczone ze względu na to wymaganie.

I tu pojawia się tytułowy Microsoft iSCSI Software Target 3.3. Jeszcze ciepły, bo jego ostatnia wersja została opublikowana 24.03.2012. Najważniejszą zmianą w wersji 3.3 jest możliwość współpracy z dyskami różnicowymi, przy czym należy mieć świadomość, że muszą być to dyski stworzone przez ten target a nie na przykład przez interfejs Hyper-V. Tytułowy QFE (Quick Fix Enginnering, czyli po prostu hotfix) zapewnia "świadomość" Windows Server 8, poza tym nie wnosząc wiele znaczących zmian. Tworzenie dysków różnicowych nie jest dostępne ani w GUI ani w PowerShellu, więc wymaga drobnego tricku i zaprzągnięcia do pracy WMI. Klasa WT_Disk ma dwie metody, z czego jedną brzmiącą dość ciekawie: NewDiffWTDisk

wt_disk1

Dokumentacja niby jest, ale jakaś taka niepełna... Mówi na przykład, że metoda działa dopiero w Windows Server 8, ale to nie jest prawda. Na Windows Server 2008 R2 działa równie sprawnie. Wystarczy wpisać (gwmi -namespace "root/wmi" -list "WT_Disk").NewDiffWTDisk("c:\2.vhd", "c:\1.vhd", "", $true) i dostaniemy dysk różnicowy dostępny przez iSCSI.

A gdzie różnicowe dyski przydają się w praktyce? Na przykład w rozwiązaniach wykorzystujących wirtualizację. Tworzymy dysk, instalujemy na nim wzorcową maszynę, koniecznie uruchamiamy sysprep, po czym chcąc stworzyć nową maszynę wirtualną, po prostu tworzymy dysk różnicowy i przez iSCSI podpinamy go tam, gdzie jest potrzebny. Otrzymujemy maszyny  zgodne ze wzorcem i zajmujące niewiele miejsca. Dodatkowo, czas powołania nowej maszyny do życia można liczyć w sekundach. W klastrach można próbować tworzyć podobne rozwiązania z wykorzystaniem CSV, ale nie wszędzie są klastry i nie zawsze ten sposób jest dobry.

Tak więc, niezależnie od tego, czy komuś targety jedzą z ręki, czy też programowe iSCSI jest zupełną nowością – warto po najnowszą wersję sięgnąć. Umie niemało i nieraz może uprościć eksperymenty.

Autor: Grzegorz Tworek [MVP]

PS Jedną z zalet iSCSI jest możliwość szybkiego zbudowania taniego i działającego rozwiązania. Należy jednak pamiętać, że budując rozwiązanie pamięci masowej z tanich elementów dostaniemy "tani" rezultat. Ani wydajność ani niezawodność takiego systemu nie będzie zachwycająca. Wydaje mi się nawet, że samodzielne stworzenie dobrego produkcyjnego rozwiązania iSCSI jest trudniejsze i wcale niekoniecznie tańsze niż zastosowanie profesjonalnej macierzy dyskowej. Tak więc przed zastosowaniem programowego targetu iSCSI w rozwiązaniu produkcyjnym, warto dobrze się zastanowić.