{{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