{{tag>Brouillon SAN}}
= Notes SAN iSCSI
Voir aussi :
* NBD : Network Block Devices
* FCoE (Fibre Channel over Ethernet)
Voir :
* [[https://fr.wikipedia.org/wiki/ISCSI|iSCSI]]
* [[Notes TCP IP Jumbo Frame Trame géante MTU|Jumbo Frame]]
* https://doc.ubuntu-fr.org/iscsi
* [[https://guide.ubuntu-fr.org/server/iscsi-initiator.html]]
* https://wiki.debian.org/SAN/iSCSI
* http://www.memoinfo.fr/tutoriels-linux/configurer-client-iscsi-debian/
* http://trac.evolix.net/infogerance/wiki/HowtoISCSI
* [[https://kb.wisc.edu/page.php?id=15607]]
* http://www.brocade.com/content/html/en/deployment-guide/brocade-vcs-fabric-skyera-skyhawk-ssd-vt/GUID-E9A6F823-A87A-48A6-8A36-FDBDF9E2FF8F.html
* http://rickardnobel.se/troubleshoot-iscsi-tcp-connectivity-from-esxi-with-netcat/
Matériel / schémas :
* https://support.purestorage.com/FlashArray/PurityFA/Replication/ActiveCluster/001_Overview/ActiveCluster_Solution_Overview
Voir :
* http://serverfault.com/questions/557013/basic-iscsi-target-setup-on-proxmox-ve-debian-7-not-working
== Notes vocabulaire / Infos
Par défaut, c'est le port **TCP 3260** qui est utilisé.
IQN : iSCSI Qualified Name \\
Identifiant unique de la carte
Les clients sont appelés **initiateurs** (ou **Initiator** en anglais)
Les périphériques de stockage SCSI sur des serveurs distants sont appelés **Cible** (ou **targets** en anglais)
Pensez à [[notes_tcp_ip_jumbo_frame_trame_geante_mtu|Configurer le Jumbo Frame sur les cartes réseaux]]
=== Multipath vs Bonding
Voir :
* [[Notes Multipath I/O MPIO]]
En général il faut privilégier le Multipath, le bonding peut être utilisé en active-passif.
== Sur Targets (serveur) & Initiateurs (client)
''/etc/sysctl.d/98-san.conf''
net.ipv4.conf.enp0s9.rp_filter=0
net.ipv4.conf.enp0s9.arp_ignore=1
net.ipv4.conf.enp0s9.arp_announce=2
net.ipv4.conf.enp0s10.rp_filter=0
net.ipv4.conf.enp0s10.arp_ignore=1
net.ipv4.conf.enp0s10.arp_announce=2
sysctl -p /etc/sysctl.d/98-san.conf
**A adapter !** \\
**Remplacer enp0s9, enp0s10 par vos cartes réseaux dédiées au SAN**
== Targets (serveur) sur Debian
Il existe :
* iscsitarget
* tgt
* sg3_utils / sg_scan
=== Avec iscsitarget
apt-get install iscsitarget iscsitarget-dkms
Pour lister les LUN
cat /proc/net/iet/volume
''/etc/default/iscsitarget''
ISCSITARGET_ENABLE=true
# Comment binder sur plusieurs interfaces ?
# Finalement je vais jouer avec iptables
#ISCSITARGET_OPTIONS="--address 192.168.25.12"
''/etc/iet/targets.allow''
#ALL ALL
#ALL 192.168.25.12 # IP de la carte de ce serveur (Target)
ALL 192.168.25.12,192.168.26.12
Aucun service à redémarré
''/etc/iet/initiators.allow''
#ALL ALL
#nom-libre:fs.iscsi.disk 192.168.25.21
nom-libre:fs.iscsi.disk iqn.1994-05.com.redhat:b51429c7fc6
Aucun service à redémarré \\
La règle d'autorisation au LUN **nom-libre:fs.iscsi.disk** peut se faire avec l'adresse IP \\ ''nom-libre:fs.iscsi.disk 192.168.25.21''\\
Ou bien avec l'IQN : \\
''nom-libre:fs.iscsi.disk iqn.1994-05.com.redhat:b51429c7fc6''
**Faire la conf dans ''/etc/iet/ietd.conf''**
systemctl restart iscsitarget
Vérif
cat /proc/net/iet/volume
=== Avec tgt
apt-get install tgt
=== Avec targetcli-fb (Debian 9)
Voir :
* http://linux-iscsi.org/wiki/ISCSI
* https://wiki.archlinux.org/index.php/ISCSI_Target
* https://www.server-world.info/en/note?os=Debian_9&p=iscsi
* https://wiki.rvijay.in/index.php/Configuring_iSCSI_target_using_targetcli
* http://atodorov.org/blog/2015/04/07/how-to-configure-iscsi-target-on-red-hat-enterprise-linux-7/
* https://www.ibm.com/developerworks/community/blogs/mhhaque/entry/configure_iscsi_target_initiator_on_rhel7_or_powerlinux?lang=en
=== Par-feu iptables
# Interface LAN : eth0 eth1
# Intercace SAN : eth2 eth3
# VLAN SAN : 192.168.25.0/24 (eth2), 192.168.26.0/24 (eth3)
# ALL : Autoriser les pings
iptables -A INPUT -p icmp -j ACCEPT
# SAN : Permettre réponse
iptables -A OUTPUT -o eth2 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth3 -m state --state NEW,ESTABLISHED -j ACCEPT
# SAN : Ouverture port TCP 3260
iptables -A INPUT -i eth2 -p tcp -m tcp --dport 3260 -j ACCEPT
iptables -A INPUT -i eth3 -p tcp -m tcp --dport 3260 -j ACCEPT
# Hors SAN : Bloquer le port TCP 3260
iptables -A INPUT -p tcp -m tcp --dport 3260 -j REJECT
# SAN : utilisable que pour le SAN
iptables -A INPUT -i eth2 -j REJECT
iptables -A INPUT -i eth3 -j REJECT
== Initiateurs (client)
Voir
* '' /sys/class/iscsi_session/''
* ''lsscsi''
=== RedHat
yum install iscsi-initiator-utils
Changer éventuellement le IQN
''/etc/iscsi/initiatorname.iscsi''
InitiatorName=iqn.1994-05.com.redhat:b51429c7fc6
Générer un nouveau nom IQN
iscsi-iname
Pour prendre en compte le changement d'IQN initiatorname.iscsi
systemctl restart iscsid.service
==== Accès au LUN
Lister les LUNs disponibles
#iscsiadm -m discovery --type sendtargets --portal 192.168.25.12
iscsiadm -m discovery -t st -p 192.168.25.12
Connexion à tous les LUNs dispo et autorisé
iscsiadm -m discovery -t st -p 192.168.25.12 --login
Connexion à un LUN spécifique
iscsiadm -m discovery -t st -p 192.168.25.12
192.168.25.12:3260,1 nom-libre:fs.iscsi.disk
iscsiadm -m node -p 192.168.25.12 -T nom-libre:fs.iscsi.disk --login
Vérif
iscsiadm -m session
ls -l /dev/disk/by-path/*iscsi*
Déconnexion
#iscsiadm -m node -u -p $(iscsiadm -m session |awk '{print $3}')
#iscsiadm -m node -u -T $(iscsiadm -m session | cut -d ' ' -f 4)
iscsiadm -m node -p 192.168.25.12 -u
Connaître tous les disques /dev/sd[a-z] SAN
ls -l /dev/disk/by-path/*iscsi*
lrwxrwxrwx 1 root root 9 9 nov. 14:18 /dev/disk/by-path/ip-192.168.25.12:3260-iscsi-nom-libre:fs.iscsi.disk-lun-0 -> ../../sdc
lrwxrwxrwx 1 root root 10 9 nov. 14:18 /dev/disk/by-path/ip-192.168.25.12:3260-iscsi-nom-libre:fs.iscsi.disk-lun-0-part1 -> ../../sdc1
==== Reset
Info
tree /var/lib/iscsi/
iscsiadm -m node
iscsiadm -m session -P3
Effacement config
umount /dev/disk/by-path/*iscsi*[1-9]
iscsiadm -m node --portal 192.168.25.12 -u
systemctl stop iscsid.service
systemctl stop iscsid.socket
yum remove iscsi-initiator-utils-iscsiuio iscsi-initiator-utils
rm -rf /var/lib/iscsi/
rm -rf /etc/iscsi/
==== Supervision
iscsiadm -m session -P1 |grep State
**OK**
iSCSI Connection State: LOGGED IN
iSCSI Session State: LOGGED_IN
Internal iscsid Session State: NO CHANGE
**NKO**
iSCSI Connection State: TRANSPORT WAIT
iSCSI Session State: FREE
Internal iscsid Session State: REOPEN
=== Debian
apt-get install open-iscsi
=== Diag
dmesg |grep sd
[ 241.189053] sd 4:0:0:0: [sdc] Attached SCSI disk
iscsiadm -m session
iscsiadm -m session -P 3
=== Autres
yum install -y targetcli
Notes
#iscsiadm -m discovery --type sendtargets --portal 192.168.25.12
#iscsiadm -m node --targetname nom-libre:fs.iscsi.disk --portal 192.168.25.12 --login
iscsiadm -m iface -I iface0 --op=new -n iface.hwaddress -v "08:00:27:85:d1:16"
iscsiadm -m discovery --type sendtargets --portal 192.168.25.12 -I iface0
iscsiadm -m node --targetname nom-libre:fs.iscsi.disk --portal 192.168.25.12:3260 -I iface0 --login
iscsiadm -m discoverydb
192.168.25.12:3260 via sendtargets
192.168.56.12:3260 via sendtargets
192.168.26.12:3260 via sendtargets
iscsiadm -m discoverydb -o delete -p 192.168.56.12:3260 -t st
== Pb
=== Pb1
iscsiadm -m session
tcp: [1] 192.168.25.12:3260,1 nom-libre:fs.iscsi.disk (non-flash)
iscsiadm -m node -p 192.168.25.12 -T nom-libre:fs.iscsi.disk -u
Logging out of session [sid: 1, target: nom-libre:fs.iscsi.disk, portal: 192.168.25.12,3260]
iscsiadm: Could not logout of [sid: 1, target: nom-libre:fs.iscsi.disk, portal: 192.168.25.12,3260].
iscsiadm: initiator reported error (9 - internal error)
iscsiadm: Could not logout of all requested sessions
iscsiadm -m session --sid=1 --op=delete
iscsiadm: This command will remove the record [iface: default, target: nom-libre:fs.iscsi.disk, portal: 192.168.25.12,3260], but a session is using it. Logout session then rerun command to remove record.
iscsiadm: Could not execute operation on all records: session exists
A tester
systemctl stop iscsi
systemctl stop iscsid
systemctl start iscsid
systemctl start iscsi
=== Erreur detected conn error (1020) / 24 - iSCSI login failed due to authorization failure
# dmesg
detected conn error (1020)
# iscsiadm -m discovery -t st -p 192.168.6.130 -l
24 - iSCSI login failed due to authorization failure
==== Solution
''/etc/iscsi/iscsid.conf''
discovery.sendtargets.timeo.login_timeout = 15
discovery.sendtargets.reopen_max = 5
discovery.sendtargets.timeo.auth_timeout = 45
discovery.sendtargets.timeo.active_timeout = 30
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
iscsiadm -m discovery -t st -p 192.168.6.130 -l
Où alors autoriser les accès concurrentiels sur le SAN, si c'est souhaité.
== Autres ISCSI
udevinfo -a -p $(udevinfo -q path -n /dev/sdb)
== Autres SAN
=== Pure - Linux Recommended Settings
Manually Changing Queue Settings
Not required unless LUNs are already in use with wrong settings.
These settings can be safely changed on a running system, by locating the Pure LUNs:
grep PURE /sys/block/sd*/device/vendor
And writing the desired values into sysfs files:
echo noop > /sys/block/sdx/queue/scheduler
An example for loop is shown here to quickly set all Pure luns to the desired 'noop' elevator:
for disk in $(lsscsi | grep PURE | awk '{print $6}'); do
echo noop > /sys/block/${disk##/dev/}/queue/scheduler
done
All changes in this section take effect immediately, without rebooting for RHEL5 and higher. RHEL 4 releases will
require a reboot. These changes will not persist unless they are added to the udev rule.
Notice, noop has [noop] to designate it as the desired scheduler.
$ cat /sys/block/sdb/queue/scheduler
[noop] deadline cfq