Podstawowe informacje o iSCSI
Ten artykuł omawia zasady funkcjonowania protokołu/technologii iSCSI (Internet Small Computer Systems Interface). iSCSI oferuje, podobnie jak Fibre Channel, pełen zestaw komponentów potrzebnych do utworzenia sieci pamięci masowych (SAN, Storage Area Network). Protokół iSCSI zdefiniowany jest w dokumencie RFC 3720.
Komponenty iSCSI
W komunikacji przy użyciu protokołu iSCSI wykorzystywane są dwa komponenty:
- Inicjator iSCSI (initiator)
- Cel iSCSI (target)
Inicjator iSCSI (initiator)
Klient w sieci pamięci masowej nazywany jest inicjatorem iSCSI. Inicjator iSCSI może łączyć się z serwerem (celem iSCSI) wysyłając komendy SCSI. Komendy SCSI znajdują się w pakietach IP.
Inicjatory iSCSI występują w następujących formach:
- Sprzętowy inicjator iSCSI: Karta PCI-X lub PCI-Express, na której zaimplementowana została funkcjonalność inicjatora iSCSI. Taka karta określana jest także jako HBA (Host Bus Adapter) iSCSI. System operacyjny rozpoznaje taką kartę jako kontroler RAID lub HBA Fibre Channel. HBA iSCSI umożliwia bootowanie serwera poprzez iSCSI. Przykładowe karty:
- Programowy inicjator iSCSI: Inicjator iSCSI zaimplementowany programowo. Operacje iSCSI są w tym przypadku wykonywane przez procesor (a nie przez osobną kartę PCI-X/PCI-Express). Dzięki wysokiej wydajności obecnie dostępnych procesorów takie rozwiązanie nie redukujnie zauważalnie wydajności serwera. Do przesyłania komend SCSI wykorzystywane są zwykłe karty sieciowe. Przykłady:
- Open-iSCSI Initiator pod Linuksem
- Programowy inicjator iSCSI pod systemami Microsoft
- Programowy inicjator iSCSI VMware dla VMware ESX/ESXi
Jeżeli bootowanie przez iSCSI nie jest wymagane, nic nie stoi obecnie na przeszkodzie wykorzystaniu inicjatorów programowych. Inicjatory programowe są tańsze, rozpowszechnione i bardzo stabilne. Nie obciążają zauważalnie nowoczesnych procesorów wielordzeniowych. Inicjatory programowe będą mogły być łatwo zaimplementowane w sieciach 10 GBit Ethernet, dzięki popularyzacji kart sieciowych 10 GBit. [1]
Cel iSCSI (target)
Serwer w sieci pamięci masowej określany jest mianem celu iSCSI (iSCSI target). Jeden cel iSCSI może udostępniać jeden lub więcej jednostek logicznych (LU - Logical Units). Jednostki logiczne oznaczane są często skrótem LUN (chociaż skrót ten oznacze w zasadzie numer jednostki logicznej - Logical Unit Number).
Cele iSCSI występują w następujących formach:
- Sprzętowej, jako macierz storage iSCSI (np. EMC AX4-5i lub IBM DS3300).
- Programowej, jako oprogramowanie iSCSI Target do instalacji na zwykłym serwerze. Pod Linuksem dostępny jest np. iSCSI Enterprise Target.
Serwery iSCSI implementują funkcjonalność celu iSCSI na różne sposoby[2]:
- niektóre macierze storage iSCSI mają dokładnie jeden cel iSCSI (sama macierz storage)
- inne macierze storage iSCSI mają wiele targetów iSCSI, np.
- jeden cel iSCSI na każdy interfejs fizyczny:
- NetApp
- EMC CLARiiON (dla pamięci masowych EMC CLARiiON AX4-5i jest to przedstawione na tym przykładzie)
- jeden cel iSCSI na każdy LUN:
- Dell/EqualLogic
- HP/LeftHand
- definiowalna przez użytkownika konfiguracja targetów iSCSI:
- w macierzach EMC Celerra można skonfigurować do 1000 celów iSCSI i przypisać je do dowolnych sprzętowych lub wirtualnych interfejsów sieciowych
- jeden cel iSCSI na każdy interfejs fizyczny:
Źródła SCSI
iSCSI ma początki w normalnym interfejsie SCSI (Small Computer Systems Interface). Dokładnie mówiąc iSCSI to transformacja poleceń SCSI na format TCP/IP i na odwrót.[3]:
- 'Komendy SCSI' przesyłane są jako 'zapytania iSCSI'
- 'Odpowiedzi SCSI' i 'statusy SCSI' przesyłane są jako 'odpowiedzi iSCSI'
Inicjator iSCSI i cel iSCSI dzielą komunikację na pojedyncze komunikaty. Jeden taki komunikat określany jest jako 'iSCSI protocol data unit'.
Komunikacja iSCSI
Jak opisano wyżej w komunikacji iSCSI dochodzi do wymiany komunikatów pomiędzy inicjatorem i celem iSCSI. Komunikacja zawsze rozpoczyna się od wysłania zapytania przez inicjator iSCSI. W komunikacji wykorzystane może być jedno lub wiele połączeń iSCSI (iSCSI connection). Jedno połączenie iSCSI odpowiada jednemu połączeniu TCP. Komunikacja pomiędzy inicjatorem i celem iSCSI określana jest mianem sesji iSCSI.
Poniższa grafika obrazuje schematyczną budowę zestawu iSCSI:
Typy sesji iSCSI
Występują dwa typy sesji iSCSI[4]:
- Normal operational session: nielimitowana sesja iSCSI.
- Discovery session: Ta sesja służy tylko do wykrywania celów iSCSI. Cel iSCSI przyjmuje tylko zapytania SendTargets.
Typ sesji iSCSI definiowany jest podczas logowania iSCSI.
iSCSI Multipathing
Technika Multipathing z wykorzystaniem iSCSI może zostać zaimplementowana na następujące sposoby:
- przez technologię Storage Multipathing, zaimplementowaną niezależnie od technologii przesyłu danych ponad warstwą protokołu iSCSI
- przez wielokrotne połączenia iSCSI na sesję (MC/S)
Technologia Storage Multipathing
Istnieją dwa obszary, w których funkcjonuje technologia Storage Multipathing:
- Storage Multipathing przy wykorzystaniu narzędzi systemamów operacyjnych (np. Linux Device Mapper MPIO)
- Storage Multipathing przy wykorzystaniu rozwiązań programowych dostarczanych przez producentów pamięci masowych (np. EMC Powerpath)
Więcej informacji na ten temat znajduje się w artykule Technologie Storage Multipathing.
Wielokrotne połączenia iSCSI na sesję (MC/S)
iSCSI oferuje bezpośrednio w protokole możliwość Multipathingu poprzez technologię MC/S (Multiple Connections per Session), o ile technologia ta jest wspierana przez inicjator i cel iSCSI.
Inicjator | Wsparcie MC/S? | Dalsze informacje |
---|---|---|
Linux Open-iSCSI Software Initiator | Nie | iSCSI Multipathing pod Linuksem |
Microsoft iSCSI Software Initiator | Tak | https://technet.microsoft.com/en-us/library/dd759096.aspx |
Cel | Wsparcie MC/S? | Dalsze informacje |
---|---|---|
EMC CLARiiON | Nie | |
EMC Celerra | Tak | https://technet.microsoft.com/en-us/library/dd759096.aspx |
NetApp | Tak | https://technet.microsoft.com/en-us/library/dd759096.aspx https://blogs.netapp.com/dropzone/2009/05/the-free-consultant-iscsi-part-ii.html |
Odniesienia
- ↑ A “Multivendor Post” to help our mutual iSCSI customers using VMware Question 3: Do I use the Software Initiator or the Hardware Initiator?
- ↑ A “Multivendor Post” to help our mutual iSCSI customers using VMware Cytat: "iSCSI target = an iSCSI server, usually on an array of some type. Arrays vary in how they implement this. Some have one (the array itself), some have many, some map them to physical interfaces, some make each LUN an iSCSI target." und Question 1: How do I configure MPIO
- ↑ RFC 3720 Section 3.2. iSCSI Concepts and Functional Overview
- ↑ RFC 3720 Section 3.3 iSCSI Session Types