Outils pour utilisateurs

Outils du site


tech:notes_san_iscsi

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tech:notes_san_iscsi [2025/03/24 15:06] – créée - modification externe 127.0.0.1tech:notes_san_iscsi [2026/06/29 14:24] (Version actuelle) Jean-Baptiste
Ligne 1: Ligne 1:
 +<!DOCTYPE markdown>
 +{{tag>Brouillon SAN}}
 +
 +# Notes SAN iSCSI
 +
 +Voir aussi :
 +* NBD : Network Block Devices
 +* FCoE (Fibre Channel over Ethernet) 
 +
 +Voir :
 +* [iSCSI](https://fr.wikipedia.org/wiki/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`
 +~~~ini
 +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
 +~~~
 +
 +~~~bash
 +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
 +
 +~~~bash
 +apt-get install iscsitarget iscsitarget-dkms
 +~~~
 +
 +Pour lister les LUN
 +~~~bash
 +cat /proc/net/iet/volume
 +~~~
 +
 +`/etc/default/iscsitarget`
 +~~~ini
 +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`**
 +
 +~~~bash
 +systemctl restart iscsitarget
 +~~~
 +
 +Vérif 
 +~~~bash
 +cat /proc/net/iet/volume
 +~~~
 +
 +
 +### Avec tgt
 +
 +~~~bash
 +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
 +
 +~~~bash
 +# 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
 +
 +~~~bash
 +yum install iscsi-initiator-utils
 +~~~
 +
 +Changer éventuellement le IQN
 +
 +`/etc/iscsi/initiatorname.iscsi`
 +~~~ini
 +InitiatorName=iqn.1994-05.com.redhat:b51429c7fc6
 +~~~
 +
 +Générer un nouveau nom IQN
 +~~~bash
 +iscsi-iname
 +~~~
 +
 +Pour prendre en compte le changement d'IQN initiatorname.iscsi
 +~~~bash
 +systemctl restart iscsid.service
 +~~~
 +
 +
 +#### Accès au LUN
 +
 +Lister les LUNs disponibles
 +~~~bash
 +#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é
 +~~~bash
 +iscsiadm -m discovery -t st -p 192.168.25.12 --login
 +~~~
 +
 +
 +Connexion à un LUN spécifique
 +
 +~~~bash
 +iscsiadm -m discovery -t st -p 192.168.25.12
 +~~~
 +
 +~~~
 +192.168.25.12:3260,1 nom-libre:fs.iscsi.disk
 +~~~
 +
 +~~~bash
 +iscsiadm -m node -p 192.168.25.12 -T nom-libre:fs.iscsi.disk --login
 +~~~
 +
 +
 +Vérif
 +~~~bash
 +iscsiadm -m session
 +ls -l /dev/disk/by-path/*iscsi*
 +~~~
 +
 +Déconnexion
 +~~~bash
 +#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
 +
 +~~~bash
 +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
 +~~~bash
 +tree /var/lib/iscsi/
 +iscsiadm -m node
 +iscsiadm -m session -P3
 +~~~
 +
 +Effacement config
 +~~~bash
 +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
 +
 +~~~bash
 +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
 +
 +~~~bash
 +apt-get install open-iscsi
 +~~~
 +
 +
 +### Diag
 +
 +~~~bash
 +dmesg | grep sd
 +~~~
 +
 +~~~
 +[  241.189053] sd 4:0:0:0: [sdc] Attached SCSI disk
 +~~~
 +
 +~~~bash
 +iscsiadm -m session
 +iscsiadm -m session -P 3
 +~~~
 +
 +
 +### Autres
 +
 +~~~bash
 +yum install -y targetcli
 +~~~
 +
 +
 +Notes
 +~~~bash
 +#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
 +~~~
 +
 +~~~bash
 +iscsiadm -m discoverydb
 +~~~
 +
 +~~~
 +192.168.25.12:3260 via sendtargets
 +192.168.56.12:3260 via sendtargets
 +192.168.26.12:3260 via sendtargets
 +~~~
 +
 +~~~bash
 +iscsiadm -m discoverydb -o delete -p 192.168.56.12:3260 -t st
 +~~~
 +
 +
 +## Pb
 +
 +### Pb1
 +
 +~~~bash
 +iscsiadm -m session
 +~~~
 +
 +~~~
 +tcp: [1] 192.168.25.12:3260,1 nom-libre:fs.iscsi.disk (non-flash)
 +~~~
 +
 +~~~bash
 +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
 +
 +~~~bash
 +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`
 +~~~ini
 +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
 +~~~
 +
 +~~~bash
 +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
 +
 +~~~bash
 +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:
 +~~~bash
 +grep PURE /sys/block/sd*/device/vendor
 +~~~
 +
 +And writing the desired values into sysfs files:
 +~~~bash
 +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:
 +
 +~~~bash
 +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
 +~~~
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki