Protokół iSCSI jest typowym protokołem działającym jako klient - serwer. Narzędzie to pozwala na wystawienie zasobu dyskowego ( target ) dla klienta , który jest nazywany inicjatorem. iSCI określa serwer udostępniający dyski wirtualne za pośrednictwem sieci mianem "celu" iSCSI. Klient montujący te dyski nazywany jest inicjatorem, co nabiera sensu mając na uwadze, że polecenia iSCSI wychodzą od klienta, a serwer na nie odpowiada. W relacji iSCSI za implementacje celu i inicjatora odpowiadają odrębne składniki programowe. Wszystkie nowoczesne systemy operacyjne zawierają inicjator (choć czasem jest to składnik opcjonalny) oraz większość systemów posiada już wbudowaną implementacje celu. Specyfikację standardu iSCSI określa dokument RFC 3720.
Istniały co najmniej cztery różne implementacje inicjatora iSCSI dla środowisk Linux. Kilka wyginęło śmiercią naturalną, a inne zostały połączone. Jedynym jaki przetrwał do tej pory wydaję się być Open-iSCSI, standardowy inicjator dostępny dla wszystkich dystrybucji Linux. By móc z niego skorzystać instalujemy pakiet open-iscsi w przypadku Ubuntu lub iscsi-initiator-utils w systemie RedHat.
KONFIGURACJA UDOSTĘPNIANEGO ZASOBU DYSKOWEGO (TARGET)
Krok 1 - Instalacja wymaganych pakietów.
# yum install -y scsi-target-utils.i686
Krok 2 - Sprawdzenie czy pakiet zainstalował się i jest dostępny w systemie
# rpm -qa | grep scsi
scsi-target-utils-1.0.14-4.el6.i686
Krok 3 - Ustawienie uruchamiania usługi w raz z starte/restartem systemu
# chkconfig tgtd on
Krok 4 - Sprawdzenie ustawień uruchamiania
# chkconfig tgtd --list
tgtd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Do konfiguracji udostępniania wykorzystywane jest narzędzie tgtadm wraz z dostępnymi przełącznikami.
Lista przełączników znajduje się w podręczniku systemowym i można z niej skorzystać wydając polecenie:
man tgtadm
KONFIGURACJA Udostępnionego zasobu
Krok 1 - Stworzenie targetu
# tgtadm --lld iscsi --op new --mode target --tid 1 --targetname nowy_target
Krok 2 - Sprawdzenie czy nowy target został utworzony
# tgtadm --lld iscsi --op show --mode target
Target 1: nowy_target
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
Account information:
ACL information:
Jak widać powyżej nowy target został utworzony zawiera już nowy Logical Unit - LUN 0, który służy do zarządzania targetem. Widać również nadaną nazwę (nowy_target) i użyty sterownik iscsi.
Krok 3 - Utworzenie nowego własnego Logical Unit (LUN)
# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-store /dev/sdb2
Krok 4 - Sprawdzenie utworzenia nowego LUN'a
# tgtadm --lld iscsi --op show --mode target
Target 1: nowy_target
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 2155 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb2
Backing store flags:
Account information:
ACL information:
PODSTAWOWE USTAWIENIA BEZPIECZEŃSTWA
Podczas sprawdzania i wyświetlania informacji o utworzonym targecie i LUN w ostatniej linii znajduję się zapis : ACL information który określa prawa dostępu do utworzonego LUN'a.
Krok 1 - Ograniczenie udostępniania zasobu dla wybranego hosta
# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address 192.168.56.101
Krok 2 - Sprawdzenie wprowadzonych zmian
# tgtadm --lld iscsi --op show --mode target
Target 1: nowy_target
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 2155 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb2
Backing store flags:
Account information:
ACL information:
192.168.56.101
KONFIGURACJA ZAPORY SYSTEMOWEJ - IPTABLES
Krok 1 - Sprawdzenie na jakim porcie działa usługa tgtd
# netstat -taupen | grep tgtd
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 0 15896 2048/tgtd
tcp 0 0 :::3260 :::* LISTEN 0 15897 2048/tgtd
Krok 2 - Dodanie odpowiednich zasad do zapory systemowej iptables
# iptables -I INPUT 16 -p tcp -m tcp --dport 3260 -j ACCEPT
Po wykonaniu powyższych kroków mamy już udostępniony wybrany zasób. W naszym przypadku był to /dev/sdb2.
ZAPISANIE KONFIGURACJI
Jeżeli wszystkie powyższe kroki zostały wykonane poprawnie, przydało by się by umożliwić udostępnianie po ponownym uruchomieniu systemu. Konfiguracja targetów znajduje się w pliku :
/etc/tgt/targets.conf
W pliku tym zapisujemy informacje o utworzonym targecie.
Krok 1 - Wygenerowanie aktualnych informacji o skonfigurowanym targecie.
# tgt-admin --dump
default-driver iscsi
<target nowy_target>
backing-store /dev/sdb2
initiator-address 192.168.56.101
</target>
Informacje te muszą znaleźć się w /etc/tgt/targets.conf można więc odrazu zrobić przekierowanie
# tgt-admin --dump > /etc/tgt/targets.conf
KONFIGURACJA INICJATORA - KLIENTA
Krok 1 - Instalacja wymaganych pakietów
# yum install -y iscsi-initiator-utils.i686
Krok 2 - Sprawdzenie instalacji pakietu
# rpm -qa | grep scsi
iscsi-initiator-utils-6.2.0.872-34.el6.i686
Krok 3 - Ustawienie uruchamiania usługi wraz ze startem systemu
UWAGA
Usługi zostaną uruchomione pod warunkiem , że wcześniej będzie ustawiony target jaki ma zostać zamontowany.
Po instalacji usługi są skonfigurowane by były uruchamiane wraz z systemem
# chkconfig --list | grep scsi
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
ODKRYWANIE UDOSTĘPNIONEGO TARGETU
Krok 1 - Odkrycie udostępnionego zasobu
Jak poprzednio i tym razem przyda się podręcznik systemowy w którym znajdziemy wszystkie potrzebne polecenia:
# man iscsiadm
polecenia znajdują się w sekcji EXAMPLES
Odkrywamy nowy zasób
# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.56.102 --discover
192.168.56.102:3260,1 nowy_target
Krok 2 - Zalogowanie do nowego zasobu podając nazwę targetu i adres hosta
# iscsiadm --mode node --targetname nowy_target --portal 192.168.56.102:3260 --login
Logging in to [iface: default, target: nowy_target, portal: 192.168.56.102,3260] (multiple)
Login to [iface: default, target: nowy_target, portal: 192.168.56.102,3260] successful.
Krok 3 - Sprawdzenie podłączenia nowego zasobu
# cat /proc/partitions
major minor #blocks name
8 0 20971520 sda
8 1 512000 sda1
8 2 20458496 sda2
253 0 18391040 dm-0
253 1 2064384 dm-1
8 16 2104515 sdb
Jeżeli chcemy odłączyć zasób wykonujemy polecenie:
# iscsiadm --mode node --targetname nowy_target --portal 192.168.56.102:3260 --logout
Logging out of session [sid: 1, target: nowy_target, portal: 192.168.56.102,3260]
Logout of [sid: 1, target: nowy_target, portal: 192.168.56.2,3260] successful.
# iscsiadm --mode node --targetname nowy_target --portal 192.168.56.102:3260 --logout
Logging out of session [sid: 1, target: nowy_target, portal: 192.168.56.102,3260]
Logout of [sid: 1, target: nowy_target, portal: 192.168.56.2,3260] successful.
Komentarze
Prześlij komentarz