Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:06:contents:04 [2014/03/29 22:48]
mihai.carabas [04. Configurarea unui target iSCSI (Linux IO Target)]
saisp:labs:06:contents:04 [2016/04/11 21:01] (current)
alexandru.carp [04. [15p] Configurarea unei sesiuni iSCSI client-server]
Line 1: Line 1:
-==== 04. Configurarea ​unui target ​iSCSI (Linux IO Target) ​====+==== 04. [15p] Configurarea ​unei sesiuni ​iSCSI client-server ​====
  
-Într-un sistem de tipul Cluster/​Grid,​ deseori este necesară accesarea unui block-device de distanță, iar operațiile suportate să fie aceleași ca și cazul în care respectivul block-device (disc) este conectat local, direct la placa de bază a stației respective. Acest lucru este posibil prin protocolul ''​iSCSI''​ care transpune ​împachetează toate comenzile protocolului de comunicație cu discuri ''​SCSI''​ în pachete IP. Astfel este posibilă accesarea la distanță a oricărui disc, ba chiar partajarea acestuia între mai multe entități, nivelul de granularitate fiind blocul de date (nu mai există sistem de fișiere ca în cazul protocolului NFS).+Într-un sistem de tipul Cluster/​Grid,​ deseori este necesară accesarea unui block-device de distanță, iar operațiile suportate să fie aceleași ca și cazul în care respectivul block-device (disc) este conectat local, direct la placa de bază a stației respective. Acest lucru este posibil prin protocolul ''​iSCSI''​ care împachetează toate comenzile protocolului de comunicație cu discuri ''​SCSI''​ în pachete IP. Astfel este posibilă accesarea la distanță a oricărui disc, ba chiar partajarea acestuia între mai multe entități, nivelul de granularitate fiind blocul de date (nu mai există sistem de fișiere ca în cazul protocolului NFS).
  
-În nomenclatura iSCSI, serverul ce pune la dispoziția clientului diferite block-device-uri poartă numele de ''​target''​. Pe Linux, target-ul iSCSI implicit inclus în nucleu se numește ''​Linux IO''​. Vom instala serverul de iSCSI pe stația ''​storage1''​ (pachetul poartă numele de ''​targetcli''​ cu opțiunea ''​--no-install-recommends''​ pentru a nu instala pachete recomandate,​ întrucât dimensiunea acestora este foarte ​marea).:<​code>​+În nomenclatura iSCSI, serverul ce pune la dispoziția clientului diferite block-device-uri poartă numele de ''​target''​. Pe Linux, target-ul iSCSI implicit inclus în nucleu se numește ''​Linux IO''​. Vom instala serverul de iSCSI pe stația ''​storage1''​ (pachetul poartă numele de ''​targetcli''​ cu opțiunea ''​--no-install-recommends''​ pentru a nu instala pachete recomandate,​ întrucât dimensiunea acestora este foarte ​mare).: 
 + 
 +<note warning>​ 
 +Inainte de a instala ''​targetcli'',​ modificati, in ''/​etc/​apt/​sources.list'',​ toate aparitiile lui ''​jessie''​ in ''​wheezy'',​ apoi efectuati ''​apt-get update''​. 
 +</​note>​ 
 + 
 +<​code ​bash>
 root@storage1:​~#​ apt-get install --no-install-recommends targetcli root@storage1:​~#​ apt-get install --no-install-recommends targetcli
 </​code>​ </​code>​
-''​targetcli''​ este un ''​command line interface''​ creat pentru management-ul serverului de iSCSI (''​target''​) pe Linux. Target-ul LIO de pe Linux este capabil să exporte discuri ce au mediu de stocare discuri fizice sau fișiere ​printre altele. Vom deschide ''​targetcli''​ pe stația ''​storage1'':<​code>​+''​targetcli''​ este un ''​command line interface''​ creat pentru management-ul serverului de iSCSI (''​target''​) pe Linux. Target-ul LIO de pe Linux este capabil să exporte discuri ce au mediu de stocare discuri fizice sau fișiere. Vom deschide ''​targetcli''​ pe stația ''​storage1'':<​code ​bash>
 root@storage1:​~#​ targetcli root@storage1:​~#​ targetcli
 Warning: Could not load preferences file /​root/​.targetcli/​prefs.bin. Warning: Could not load preferences file /​root/​.targetcli/​prefs.bin.
Line 29: Line 35:
 </​code>​ </​code>​
 Cu ajutorul comenzii ''​ls''​ vedem toate configurațiile de la un moment dat. Acestea sunt organizate ca o ierarhie de fișiere. Observați toate tipurile de ''​backstores''​ care pot fi exportate. Noi vom lucra cu tipul ''​fileio''​ (fișiere) și ''​iblock''​ (discuri fizice). Cu ajutorul comenzii ''​ls''​ vedem toate configurațiile de la un moment dat. Acestea sunt organizate ca o ierarhie de fișiere. Observați toate tipurile de ''​backstores''​ care pot fi exportate. Noi vom lucra cu tipul ''​fileio''​ (fișiere) și ''​iblock''​ (discuri fizice).
-Dorim să creăm un ''​backstore''​ de tipul ''​fileio'':<​code>​+Dorim să creăm un ''​backstore''​ de tipul ''​fileio'':<​code ​bash>
 /> cd backstores /> cd backstores
 /​backstores>​ cd fileio /​backstores>​ cd fileio
Line 36: Line 42:
   create name file_or_dev [size] [generate_wwn] [buffered]   create name file_or_dev [size] [generate_wwn] [buffered]
 </​code>​ </​code>​
-Observați că putem să explorăm ierarhia de configurații folosind comanda ''​cd''​. Am folosit comanda ''​help create''​ pentru a vedea ce opțiuni avem pentru crearea unui ''​backstore''​. Vom crea un backstore de dimensiunea 100M ce are ca suport fișierul ''/​disk1.img'':<​code>​+Observați că putem să explorăm ierarhia de configurații folosind comanda ''​cd''​. Am folosit comanda ''​help create''​ pentru a vedea ce opțiuni avem pentru crearea unui ''​backstore''​. Vom crea un backstore de dimensiunea 100M ce are ca suport fișierul ''/​disk1.img'':<​code ​bash>
 /​backstores/​fileio>​ create disk1 /disk1.img 100MB /​backstores/​fileio>​ create disk1 /disk1.img 100MB
 Generating a wwn serial. Generating a wwn serial.
Line 42: Line 48:
 Created fileio disk1. Created fileio disk1.
 </​code>​ </​code>​
-Următorul pas va fi să creăm un ''​IQN''​ (iSCSI Qualified Name) pentru target-ul nostru în subierarhia de configurare ''​iscsi'':<​code>​+Următorul pas va fi să creăm un ''​IQN''​ (iSCSI Qualified Name) pentru target-ul nostru în subierarhia de configurare ''​iscsi'':<​code ​bash>
 /​backstores/​fileio>​ cd /iscsi /​backstores/​fileio>​ cd /iscsi
 /iscsi> help create /iscsi> help create
Line 52: Line 58:
 Successfully created TPG 1. Successfully created TPG 1.
 </​code>​ </​code>​
-În continuare vom dezactiva autentificarea asociată cu acest ''​IQN''​. Vom folosi comanda ''​cd''​ urmată de valoarea ''​IQN''​ generată pentru a intra în modul de configurare ale acesteia (puteți folosi ''​auto-complete''​), după care vom folosi intra:<​code>​+În continuare vom dezactiva autentificarea asociată cu acest ''​IQN''​. Vom folosi comanda ''​cd''​ urmată de valoarea ''​IQN''​ generată pentru a intra în modul de configurare ale acesteia (puteți folosi ''​auto-complete''​):<​code ​bash>
 /iscsi> cd iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d/​ /iscsi> cd iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d/​
 /​iscsi/​iqn.20....25e09e86bb4d>​ ls /​iscsi/​iqn.20....25e09e86bb4d>​ ls
Line 61: Line 67:
     o- portals ..................................................... [0 Portals]     o- portals ..................................................... [0 Portals]
 </​code>​ </​code>​
-Observați că trebuie să mergem pe intrarea ''​tpgt1''​ (este un tag intern asociat IQN-ului). Aici vom configura parametrii de autentificare:<​code>​+Observați că trebuie să mergem pe intrarea ''​tpgt1''​ (este un tag intern asociat IQN-ului). Aici vom configura parametrii de autentificare:<​code ​bash>
 /​iscsi/​iqn.20....25e09e86bb4d>​ cd tpgt1/ /​iscsi/​iqn.20....25e09e86bb4d>​ cd tpgt1/
 /​iscsi/​iqn.20...e86bb4d/​tpgt1>​ set parameter AuthMethod=None /​iscsi/​iqn.20...e86bb4d/​tpgt1>​ set parameter AuthMethod=None
Line 68: Line 74:
 Parameter authentication is now '​0'​. Parameter authentication is now '​0'​.
 </​code>​ </​code>​
 +<​note>​In cazul in care nu puteti configura ''​AuthMethod'',​ este suficient sa configurati doar ''​authentication''​.</​note>​
 +
 Observați alte 3 sub-categorii de configurații:​ Observați alte 3 sub-categorii de configurații:​
   * ''​acls''​ - filtrarea accesului ​   * ''​acls''​ - filtrarea accesului ​
   * ''​luns''​ (Logical Unit Number) - dispozitiv logic adresat de client   * ''​luns''​ (Logical Unit Number) - dispozitiv logic adresat de client
   * ''​portals''​ - nivelul rețea prin care se va face legătura la target   * ''​portals''​ - nivelul rețea prin care se va face legătura la target
-În concluzie trebuie să creăm cel puțin un ''​portal''​ pentru accesul la IQN prin rețea:<​code>​+În concluzie trebuie să creăm cel puțin un ''​portal''​ pentru accesul la IQN prin rețea:<​code ​bash>
 /​iscsi/​iqn.20...e86bb4d/​tpgt1>​ cd portals /​iscsi/​iqn.20...e86bb4d/​tpgt1>​ cd portals
 /​iscsi/​iqn.20...tpgt1/​portals>​ create /​iscsi/​iqn.20...tpgt1/​portals>​ create
Line 80: Line 88:
 /​iscsi/​iqn.20...tpgt1/​portals>​ cd .. /​iscsi/​iqn.20...tpgt1/​portals>​ cd ..
 </​code>​ </​code>​
-Observați că automat a selectat adresa IP a interfeței ''​eth0''​ și portul ''​3260''​. Vom crea un dispozitiv logic cu ajutorul căruia vom referenția backstore-ul:<​code>​+Observați că automat a selectat adresa IP a interfeței ''​eth0''​ și portul ''​3260''​. Vom crea un dispozitiv logic cu ajutorul căruia vom referenția backstore-ul:<​code ​bash>
 /​iscsi/​iqn.20...e86bb4d/​tpgt1>​ cd luns /​iscsi/​iqn.20...e86bb4d/​tpgt1>​ cd luns
 /​iscsi/​iqn.20...4d/​tpgt1/​luns>​ create /​backstores/​fileio/​disk1 /​iscsi/​iqn.20...4d/​tpgt1/​luns>​ create /​backstores/​fileio/​disk1
Line 86: Line 94:
 Successfully created LUN 0. Successfully created LUN 0.
 </​code>​ </​code>​
-În submeniul ''​acls''​ va trebuie să înregistrăm clienții iSCSI folosind ''​IQN''​-ul acestora. Deocamdată nu știm ''​IQN-ul''​ clienților,​ îl vom configura după ce instalăm clienții de iSCSI. Să vizualizăm configurația actuală:<​code>​+În submeniul ''​acls''​ va trebuie să înregistrăm clienții iSCSI folosind ''​IQN''​-ul acestora. Deocamdată nu știm ''​IQN-ul''​ clienților,​ îl vom configura după ce instalăm clienții de iSCSI. Să vizualizăm configurația actuală:<​code ​bash>
 /> ls /> ls
 o- / .................................................................................... [...] o- / .................................................................................... [...]
Line 109: Line 117:
   o- tcm_fc ....................................................................... [0 Targets]   o- tcm_fc ....................................................................... [0 Targets]
 </​code>​ </​code>​
-Înainte să realizăm configurația clientului de iSCSI, vom salva configurația target-ului pentru a se păstra în cazul unui restart al serverului:<​code>​+Înainte să realizăm configurația clientului de iSCSI, vom salva configurația target-ului pentru a se păstra în cazul unui restart al serverului:<​code ​bash>
 /> saveconfig /> saveconfig
 WARNING: Saving storage1 current configuration to disk will overwrite your boot settings. WARNING: Saving storage1 current configuration to disk will overwrite your boot settings.
Line 116: Line 124:
 </​code>​ </​code>​
  
-Pe sistemele Linux, clienții iSCSI trebuie să instaleze pachetul ''​open-iscsi''​ care conține comanda ''​iscsiadmn''​. Vom instala acest pachet pe stația ''​storage2'':<​code>​+Pe sistemele Linux, clienții iSCSI trebuie să instaleze pachetul ''​open-iscsi''​ care conține comanda ''​iscsiadm''​. Vom instala acest pachet pe stația ''​storage2'':<​code ​bash>
 root@storage2:​~#​ apt-get install open-iscsi root@storage2:​~#​ apt-get install open-iscsi
 </​code>​ </​code>​
-Vom genera un ''​IQN''​ pentru stația ''​storage2''​ folosind comanda ''​iscsi-iname''​ și vom pune numele în fișierul ''/​etc/​iscsi/​initiatorname.iscsi'':<​code>​+Vom genera un ''​IQN''​ pentru stația ''​storage2''​ folosind comanda ''​iscsi-iname''​ și vom pune numele în fișierul ''/​etc/​iscsi/​initiatorname.iscsi'':<​code ​bash>
 root@storage2:​~#​ iscsi-iname root@storage2:​~#​ iscsi-iname
 root@storage2:​~#​ cat /​etc/​iscsi/​initiatorname.iscsi root@storage2:​~#​ cat /​etc/​iscsi/​initiatorname.iscsi
Line 125: Line 133:
 </​code>​ </​code>​
  
-Înainte de a termina configurarea clientului, trebuie să adăugăm IQN-ul clientului ''​storage2''​ în ACL-ul target-ului. Pe stația ''​storage1''​. Nu uitați să salvați configurația:<​code>​+Apoi, reporniti serviciul ''​open-iscsi'':​ 
 +<​code>​ 
 +root@storage2:​~#​ service open-iscsi restart 
 +</​code>​ 
 + 
 +Înainte de a termina configurarea clientului, trebuie să adăugăm IQN-ul clientului ''​storage2''​ în ACL-ul target-ului. Pe stația ''​storage1''​. Nu uitați să salvați configurația:<​code ​bash>
 root@storage1:​~#​ targetcli root@storage1:​~#​ targetcli
 /> cd /​iscsi/​iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d/​tpgt1/​ /> cd /​iscsi/​iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d/​tpgt1/​
Line 143: Line 156:
 </​code>​ </​code>​
  
-Ne întoarcem la configurația clientului ''​storage2''​. În primul rând clientul trebuie să verifice dacă există vreun target la adresa IP/​hostname-ul serverului:<​code>​+Ne întoarcem la configurația clientului ''​storage2''​. În primul rând clientul trebuie să verifice dacă există vreun target la adresa IP/​hostname-ul serverului:<​code ​bash>
 root@storage2:​~#​ iscsiadm --mode discovery --type st --portal 192.168.1.1 root@storage2:​~#​ iscsiadm --mode discovery --type st --portal 192.168.1.1
 192.168.1.1:​3260,​1 iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d 192.168.1.1:​3260,​1 iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d
 </​code>​ </​code>​
 Observați noțiunea de ''​portal''​ folosită și la client (la server am creat portal-ul ''​192.168.1.1''​). ''​--type''​ se referă la tipul pachetului folosit pentru ''​discovery''​ (''​st=send target''​). Observați noțiunea de ''​portal''​ folosită și la client (la server am creat portal-ul ''​192.168.1.1''​). ''​--type''​ se referă la tipul pachetului folosit pentru ''​discovery''​ (''​st=send target''​).
-Comanda ''​iscsiadm -m node -L all''​ va face încerca să se autentifice automat la toate target-ul descoperite folosind modul ''​discovery''​ al comenzii ''​iscsiadm''​ (''​--mode discovery''​):<​code>​+ 
 +Comanda ''​iscsiadm -m node -L all''​ va face încerca să se autentifice automat la toate target-ul descoperite folosind modul ''​discovery''​ al comenzii ''​iscsiadm''​ (''​--mode discovery''​):<​code ​bash>
 root@storage2:​~#​ iscsiadm -m node -L all root@storage2:​~#​ iscsiadm -m node -L all
 Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d,​ portal: 192.168.1.1,​3260] (multiple) Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d,​ portal: 192.168.1.1,​3260] (multiple)
 Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d,​ portal: 192.168.1.1,​3260] successful. Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d,​ portal: 192.168.1.1,​3260] successful.
 </​code>​ </​code>​
-Pentru a inspecta sesiunile active vom folosi modul ''​session''​ al utilitarului ''​iscsi'':<​code>​+Pentru a inspecta sesiunile active vom folosi modul ''​session''​ al utilitarului ''​iscsi'':<​code ​bash>
 root@storage2:​~# ​ iscsiadm -m session root@storage2:​~# ​ iscsiadm -m session
 tcp: [1] 192.168.1.1:​3260,​1 iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d (non-flash) tcp: [1] 192.168.1.1:​3260,​1 iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d (non-flash)
 </​code>​ </​code>​
-Pentru a vedea informații detaliate despre o sesiunea ​vom folosi parametrul ''​-P''​ al comenzii urmat de indexul sesiunii:<​code>​+Pentru a vedea informații detaliate despre o sesiuni ​vom folosi parametrul ''​-P''​ al comenzii urmat de nivelul de verbozitate (''​1'',​ ''​2''​ sau ''​3''​):<​code ​bash>
 root@storage2:​~# ​ iscsiadm -m session -P 1 root@storage2:​~# ​ iscsiadm -m session -P 1
 Target: iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d (non-flash) Target: iqn.2003-01.org.linux-iscsi.storage1.x8664:​sn.25e09e86bb4d (non-flash)
Line 177: Line 191:
 </​code>​ </​code>​
  
-În acest moment utilitarul ''​iscsiadm''​ a mai adăugat un disc pe client ''/​dev/​sdd'':<​code>​+În acest moment utilitarul ''​iscsiadm''​ a mai adăugat un disc pe client ''/​dev/​sdd'':<​code ​bash>
 root@storage2:​~#​ dmesg|tail -10 root@storage2:​~#​ dmesg|tail -10
 [10654.656653] scsi2 : iSCSI Initiator over TCP/IP [10654.656653] scsi2 : iSCSI Initiator over TCP/IP
Line 193: Line 207:
 Creați o tabelă de partiții și formatați discul cu un sistem de fișiere. Montați sistemul de fișiere creat și realizați operații de citire/​scriere. Creați o tabelă de partiții și formatați discul cu un sistem de fișiere. Montați sistemul de fișiere creat și realizați operații de citire/​scriere.
 <​solution -hidden> <​solution -hidden>
-<​code>​+<​code ​bash>
 root@storage2:​~#​ fdisk /dev/sdd root@storage2:​~#​ fdisk /dev/sdd
 root@storage2:​~#​ mkfs.ext4 /dev/sdd1 root@storage2:​~#​ mkfs.ext4 /dev/sdd1
saisp/labs/06/contents/04.1396126083.txt.gz · Last modified: 2014/03/29 22:48 by mihai.carabas
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0