Outils pour utilisateurs

Outils du site


tech:notes_san_iscsi

Ceci est une ancienne révision du document !


Notes SAN iSCSI

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 à Configurer le Jumbo Frame sur les cartes réseaux

Multipath vs Bonding

Voir :

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)

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

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
tech/notes_san_iscsi.1742825205.txt.gz · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki