iSCSI

SCST

"svn checkout svn://svn.code.sf.net/p/scst/svn/trunk scst-trunk" oder "lynx http://scst.svn.sourceforge.net/viewvc/scst/trunk/" und Tar Ball herunterladen "wget http://scst.svn.sourceforge.net/viewvc/scst/trunk/?view=tar" Leider ist das SCST relativ instabiel :-(
	"ntpdate pool.ntp.org"
	"tar -xvzf scst-trunk.tar.gz"
	"cd trunk"
	"cd /usr/src/linux-3.5.4"
	"patch -p1 < /root/temp/trunk/iscsi-scst/kernel/patches/put_page_callback-3.5.patch"
	"patch -p1 < /root/temp/trunk/scst/kernel/scst_exec_req_fifo-3.5.patch"
	"time make clean ; make && make modules; make modules_install && make install;" besser "time make dep clean bzImage modules modules_install"
		Den rest siehe "kernel_update_bei_SuSE.txt" Doku
	make scst
	make scst_install
	make scstadm_install
	make iscsi
	make iscsi_install
	make srpt
	make srpt_install
	make usr
	make usr_install
	make scst_local
	make scst_local_install
	oder "make scst; make scst_install; make scstadm_install; make iscsi; make iscsi_install; make srpt; make srpt_install; make usr; make usr_install; make scst_local; make scst_local_install;"
	"reboot"
#Config für scst##################################
"vi /etc/scst.conf"	-> (Achtung bei Windows sollte der Target Name nach den : nicht länger als 3 Zeichen lang sein)

HANDLER vdisk_blockio {

        DEVICE disk01 {
                filename /dev/sdc
                nv_cache 1
        }

               DEVICE disk01 {
                filename /dev/6_tb_vg/6_tb_lv
                nv_cache 1
        }

    
}

HANDLER vdisk_fileio {
        DEVICE disk03 {
                        filename /dev/loop2
                        nv_cache 1
        }


}

TARGET_DRIVER iscsi{

        enabled 1

        TARGET iqn.2012-10.realtech.net:crm {
                LUN 0 disk01
                LUN 1 disk02
                LUN 2 disk03
                LUN 3 disk04

                enabled 1
        }

        TARGET iqn.2012-10.realtech.net:6TB {
                LUN 0 disk05
                LUN 1 disk06
                LUN 2 disk07

                enabled 1
        }


}
#####################

"modprobe scst"
"modprobe scst_vdisk"
"modprobe iscsi-scst"
"iscsi-scstd"
"scstadmin -config /etc/scst.conf"
"lsmod" ->
	lsmod | grep -i scs
	iscsi_scst            183178  4
	scst_vdisk             86159  0
	scst                  680275  2 iscsi_scst,scst_vdisk
	mptscsih               24735  1 mptspi
	mptbase                71663  3 mptctl,mptspi,mptscsih
"netstat -apn | grep -i 3260" ->
	tcp        0      0 0.0.0.0:3260            0.0.0.0:*               LISTEN      2885/iscsi-scstd
	tcp        0      0 :::3260                 :::*                    LISTEN      2885/iscsi-scstd
"/etc/init.d/iscsid start"
"iscsiadm -m discovery -t sendtargets -p 127.0.0.1" ggf. vorher "/sbin/iscsid"
"iscsiadm -m node -T iqn.2006-10.net.vlnb:tgt -p 127.0.0.1 -l"

#Zusatzinfo zu scstadmin
"scstadmin -disable_target iqn.2012-10.realtech.net:crm -driver iscsi" schließt das Target


####################################################################################
####################################################################################
####################################################################################
####################################################################################

Unterstützt nur 2.6er Kernel :-(
iSCSI (SCSI übers Netzwerk)

Server:
Läßt sich nicht unter Kernel 2.6.28 kompilieren, da an der Kernel Block Device API rumgeschraubt wurde.
(VMware im original SuSE Kernel booten)
bei SuSE mit Kernel 3
	"lynx http://software.opensuse.org/package/iscsitarget-kmp-desktop"
	"rpm -iv iscsitarget-kmp-default-1.4.20.3_k3.1.9_1.4-9.3.1.x86_64.rpm"
	"lynx http://software.opensuse.org/package/iscsitarget"
	"rpm -iv iscsitarget-1.4.20.3-9.3.1.x86_64.rpm"
"wget http://iscsitarget.sourceforge.net/"
"tar -xzf iscsitarget-0.4.17.tar.gz"
"cd iscsitarget-0.4.17"
"make"
"make install"

"insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/firmware/iscsi_ibft.ko"
"insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/scsi_transport_iscsi.ko"
"insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/libiscsi.ko"
"insmod /lib/modules/2.6.27.7-9-default/kernel/iscsi/iscsi_trgt.ko"
"insmod /lib/modules/2.6.27.7-9-default/kernel/net/ipv6/ipv6.ko"
"insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/iscsi_tcp.ko"

Bei openSuse 12.1 Kernel 3.1.5
"insmod /lib/modules/3.1.5-default/kernel/drivers/scsi/libiscsi.ko"
"insmod /lib/modules/3.1.5-default/kernel/drivers/scsi/libiscsi_tcp.ko"
"insmod /lib/modules/3.1.5-default/kernel/drivers/scsi/iscsi_boot_sysfs.ko"
"insmod /lib/modules/3.1.5-default/kernel/drivers/scsi/iscsi_tcp.ko"

"vi /etc/ietd.conf" ->
	#IncomingUser root vmcommander
	#OutgoingUser root vmcommander
	Target iqn.2009-09.corp.wenning:storage.disk1.sys1.xyz
		Lun 0 Path=/dev/sdb,Type=fileio
		Alias iSCSI
		#IncomingUser root vmcommander
		#OutgoingUser root vmcommander
		
"ietd -c /etc/ietd.conf" = startet den iSCSI Daemon bzw. Server. Oder mit Debug Output "ietd  -f -d 10 -c /etc/ietd.conf"
####################################################################################
openSuse 12.1 Kernel 3.4.4
via Yast2 alle iSCSI intsallieren
Testen unter "lynx http://stgt.sourceforge.net/"	(unterstützt leider kein "Persistent (SCSI-3)" das für das Windows Clustering benötigt wird)
	Bei openSuse mit Kernel 3.5.4 läßt es sich ohne Probleme kompilieren.
	"tar -xzf fujita-tgt-v1.0.31-3-ga98ff62.tar.gz"
	"cd fujita-tgt-a98ff62"
	"make"
	"make install"
	"tgtd"
Alternarive 1: "lynx http://scst.sourceforge.net/comparison.html" läßt sich aber nicht mit Kernel 3.5 kompilieren. Leider ist das SCST relativ instabil :-(
	"tar -xzf scst-2.2.x.tar.gz"
	"cd 2.2.x"
	"vi scst/src/scst_targ.c" -> Nur bei Kernel 3.5.XX Patchen
			put_io_context(p_cmd_threads->io_context);
			} else {
			-			current->io_context = ioc_task_link(p_cmd_threads->io_context);				//Diese Zeile loeschen
			+			ioc_task_link(p_cmd_threads->io_context);									//Diese Zeile hinzufügen
			+			current->io_context = p_cmd_threads->io_context;							//Diese Zeile hinzufügen
			TRACE_DBG("Linked IO context %p "
			"(p_cmd_threads %p)", p_cmd_threads->io_context,
			p_cmd_threads);
	"make all"
	Leider läßt kommt es daraufhin zu einem anderen Fehler :-(
	Deshlab "lynx http://download.opensuse.org/repositories/home:/oertel/" und die RPM Packet für Suse herunterladen
#Config für stgt##################################
"/etc/init.d/tgtd start"
"tgtadm -C 0 --op show --mode target"
"tgtadm --lld iscsi --mode target --op new --tid=1 --targetname iqn.2012-06.net.de.realtech:crm1"
"tgtadm --lld iscsi --mode logicalunit --op new --tid=1 --lun=1 --backing-store=/dev/sdb"
"tgtadm --lld iscsi --mode target --op bind --tid=1 -I ALL"
"tgtadm --lld iscsi --mode account --op new --user root --password vmcommanderrr"						Falls geplant ist Windows anzuschließen muss das Passwort mind. 12 Zeichen und max. 16 Zeichen lang sein
"tgtadm --lld iscsi --mode account --op bind --tid 1 --user root --outgoing"
"tgtadm --lld iscsi --mode account --op new --user root --password vmcommanderrr"
"tgtadm --lld iscsi --mode account --op bind --tid 1 --user root"
"netstat -apne | grep -i 3260"
"lsof -i:3260"
"tgtadm --lld iscsi --mode target --op show"

#löschen
"tgtadm --lld iscsi --mode logicalunit --op delete --tid=1 --lun=1"
"tgtadm --lld iscsi --mode target --op delete --tid=1"
"killall -s 9 /usr/sbin/tgtd"
"ps -ef | grep -i tgtd"

##
Prerequirements (bei opensuse leap 42.1) :
	"wget https://www.kernel.org/pub/linux/utils/util-linux/v2.27/util-linux-2.27.1.tar.xz"
	"tar -xf util-linux-2.27.1.tar.xz"
	"cd util-linux-2.27.1"
	"./autogen.sh"
	"./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib64 --includedir=/usr/include"
	"make"
	"make install"
	"chcpu -V"

Client (Initiator only):
Läßt sich bei SuSE nur per Yast installieren bzw. läßt sich nicht unter Kernel 2.6.28 kompilieren.
Ggf. "glibc-devel-static" vorher via Yast2 installieren. da sonst Fehler: "../../../x86_64-suse-linux/bin/ld: cannot find -lc"
"wget http://www.open-iscsi.org/bits/open-iscsi-2.0-870.3.tar.gz"
"tar -xvzf open-iscsi-2.0-870.3.tar.gz
"cd open-iscsi-2.0-870.3"
"make"
"make install"
"cp -frv /root/temp/open-iscsi-2.0-873/utils/open-isns/*.h /usr/include/libisns/"
"cp -frv /root/temp/open-iscsi-2.0-873/utils/open-isns/*.h /usr/include/"

Eventuell noch Kernel Module nachladen.
"insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/scsi_transport_iscsi.ko"
"insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/libiscsi.ko"
"insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/iscsi_tcp.ko"

"/etc/init.d/iscsid start"	oder "/sbin/iscsid"	Bei openSuse 12.1 und Kernel 3.4.4

"vi /etc/iscsi/iscsid.conf" -> Mann kann auch alle werte auf Default lassen. Das tutz völlig.
	DiscoveryAddress = 172.16.190.20
	#discovery.sendtargets.auth.authmethod = CHAP
	#discovery.sendtargets.auth.username = root
	#discovery.sendtargets.auth.password = vmcommander

"iscsid -c /etc/iscsi/iscsid.conf" = startet den iSCSI Daemon bzw. Client. Oder mit Debug Output "iscsid -f -d 10 -c /etc/iscsi/iscsid.conf"
"iscsiadm -m discovery -t sendtargets -p 172.16.190.20:3260" = iSCSI Gerät auf Server suchen
"iscsiadm -m node -p 172.16.190.20 -L all" = iSCSI Gerät verbinden. Wenn ein Passwort gesetzt wurde, so muss der Befehl erweitert werden. Oder "iscsiadm -m node -T iqn.2012-10.moore.corp:xen -p 172.16.190.12:3260 --login" um ein bestimmtes Devices einzubinden.
	"/etc/iscsi/iscsid.conf" ->
		node.session.auth.auth.authmethod = CHAP
		node.session.auth.username = root
		node.session.auth.password = vmcommanderrr
		discovery.sendtargets.auth.authmethod = CHAP
		discovery.sendtargets.auth.username = root
		discovery.sendtargets.auth.password = vmcommanderrr
	iscsiadm -m node --targetname "iqn.2012-06.net.de.realtech:crm1" --portal "10.0.56.22:3260" --op=update --name node.session.auth.authmethod --value=CHAP 
	iscsiadm -m node --targetname "iqn.2012-06.net.de.realtech:crm1" --portal "10.0.56.22:3260" --op=update --name node.session.auth.username --value=root
	iscsiadm -m node --targetname "iqn.2012-06.net.de.realtech:crm1" --portal "10.0.56.22:3260" --op=update --name node.session.auth.password --value=vmcommanderrr
	iscsiadm -m node -T iqn.2012-06.net.de.realtech:crm1 -p 10.0.56.22:3260 --login
	"iscsiadm --mode session"
	"lsscsi --verbose"
	"ps -ef | grep -i iscsid"
"fdisk -l" -> sollte jetzt sichtbar sein.
	"/dev/sdd" dritte Platte bzw. iSCSI Gerät
Wahlweise kann jetzt auch ein Raid System mit meherer iSCSI Platten erstellt werden.
"fdisk /dev/sdd"
	p
	n
	p
	1
	1
	1101
	w
"fdisk -l" ->
	"/dev/sdd1               1        1011     1048376+  83  Linux"
"mkfs.ext3 /dev/sdd1"
"mkdir /iscsi_mount"
"mount -t ext3 /dev/sdd1 /iscsi_mount"
Hier ist wieder zu beachten dass das iSCSI Device immer nur auf einem PC gemountet ist da sonst Filesystem Inkonsistenzen auftretten (außer bei OCFS2 und GFS) bzw. "Split Brain"

iSCSI Verbindung beenden.
"iscsiadm -m node -u" oder
"iscsiadm -m node -T iqn.2012-10.moore.corp:xen-iso -p 172.16.190.12:3260 --logout"
"fdisk -l" -> Die sdd Platte ist weg.

#Kommandos#####################################
"iscsiadm -m session"
"cat /proc/scsi/scsi"
"iscsiadm -m node"

#Zusatz Info########################################
Das iSCSI Target ist der Server (Platte)
Das iSCSI Initiator ist der Client

#Client Raid 1 Konfig (Aktiv/Passiv Cluster(ext3)#########################################################
"iscsiadm -m discovery -t sendtargets -p 172.16.190.20:3260"
"iscsiadm -m discovery -t sendtargets -p 172.16.190.21:3260"
"iscsiadm -m node -p 172.16.190.20 -L all"
"fdisk -l"
"mdadm -C /dev/md0 -c 128 -l1 --raid-devices 2 /dev/sdd /dev/sde"
"cat /proc/mdstat"
"mdadm -D /dev/md0"
"mdadm --examine /dev/sdd; mdadm --examine /dev/sde;"
"mkfs.ext3 /dev/md0"
"mkdir /md0_raid_1"
"mount /dev/md0 /md0_raid_1"
"mount"
"mdadm --detail --scan >> /etc/mdadm.conf" Schreibt die Konfig für "mdadm -A /dev/md0". Aber besser ist reinzuschreiben "ARRAY /dev/md0 devices=/dev/sdd,/dev/sde", da nach einem Ausfall eines iSCSI Servers und das spätere wiedereingliedern der Festplatte die Device Namen sich änden können (/dev/sdd,/dev/sde => /dev/sdf,/dev/sdg) und so nur einfach die Namensändeung eingetragen werden muss.
Auch hier ist wieder zu beachten dass das iSCSI Device immer nur auf einem PC gemountet ist da sonst Filesystem Inkonsistenzen auftretten (außer bei OCFS2 und GFS) bzw. "Split Brain"

RAID 5 erstellen
"mdadm --create --verbose /dev/md0 --auto=yes --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd"
"mdadm --examine /dev/sdb /dev/sdc /dev/sdd"
"mdadm --detail --scan >> /etc/mdadm.conf"
"vi /etc/mdadm.conf" ->
	#ARRAY /dev/md0 metadata=1.2 spares=1 name=ln-sql-storage1:0 UUID=dea26d2a:fc07fc8f:9ae9e147:f68f5199
	ARRAY /dev/md0 devices=/dev/sdb,/dev/sdc,/dev/sdd
"fdisk -l /dev/md0"

Und nun testen indem wir node1 (iSCSI Server) ausschalten###
Anders als bei NBD und GNBD merkt mdadm das die Platte fehlt und setzt sie automatisch auf "fault", ansonsten "mdadm /dev/md0 --set-faulty /dev/sdd" 
"mdadm /dev/md0 --remove /dev/sdd"
Dann nach einiger Zeit node1 wieder ans Netz nehmen und die Platte wieder hinzufügen "mdadm /dev/md0 --add /dev/sdd". Eventuell die mdadm.conf anpassen, aus dem oben genannten Grund.
"cat /proc/mdstat"
"mdadm --query /dev/md0"

mdadm -S /dev/md0 = Raid stoppem
mdadm --assemble --scan = Raid starten

#RAID löschen
"mdadm --stop /dev/md0"
cat /proc/mdstat 
mdadm --zero-superblock /dev/sdd
mdadm --zero-superblock /dev/sdc
mdadm --zero-superblock /dev/sdb

#Client Raid 1 Konfig (Aktiv/Aktiv Cluster(ocfs2) und Heartbeat2#########################################################
Auf realen PCs mal testen da VMware Probleme macht.
Eventuel muss noch libpacemake installiert werden, da :"heartbeat[4973]: 2009/03/05_19:29:27 WARN: Managed /usr/lib/heartbeat/crmd process 5009 killed by signal 11 [SIGSEGV - Segmentation violation]."
"wget http://hg.clusterlabs.org/pacemaker/stable-1.0/archive/Pacemaker-0.6.3.tar.bz2"
"tar -xf Pacemaker-0.6.3.tar.bz2"
"cd Pacemaker-1-0-Pacemaker-0.6.3"
"./ConfigureMe configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-rpath" nur bei SuSE
"make"
"make install"
Raid 1 wie oben beschrieben einrichten, nur bei der formatierung wird hier weitergemacht.
Aber zuerst den ocfs2 Cluster installieren, siehe Oracle Cluseter File System Doku.
"mkfs.ocfs2 -b 4096 -C 128k -L ocfs2 -N 4 /dev/md0"
"/etc/init.d/o2cb configure" Das Programm kommt nur wenn OCFS2-Tools per Yast installiert wird.
"/etc/init.d/o2cb start"
"/etc/init.d/ocfs2 start"
"mkdir /ocfs2_mount"
"mount -t ocfs2 /dev/md0 /ocfs2_mount"
"dmesg | tail" Zur Kontrolle
"/etc/init.d/o2cb status; /etc/init.d/ocfs2 status;"

und das gleiche wie oben auf allen anderen nodes, außer das formatieren ;-) .

"scp -r -v root@node1:/etc/ocfs2/* /etc/ocfs2/" Alternativ kann die Konfig Datei auch über "ocfs2console->Propagate Configuration" verteilt werden.
"scp -r -v root@node1:/etc/mdadm.conf /etc/"
"mount -t ocfs2 /dev/md0 /ocfs2_mount"
"mounted.ocfs2 -d;mounted.ocfs2 -f" müsste jetzt alle nodes anzeigen auf den ocfs2 gemountet ist

Jetzt ist Hearbeat an der Reihe. Da wir ja bereits Hearbeat installiert haben folgt nun die konfiguration.
Es sind im Prinzip die selben Schritte wie unter "Heartbeat mit NBD Raid mountes und mehr als 2 Nodes".
"vi /etc/heartbeat/ha.d/ha.cf" ->
	logfile	/var/log/ha-log.log
	logfacility	local0
	node node1
	node node2
	node node3
	keepalive 1
	warntime 10
	deadtime 30
	initdead 30
	udpport 694
	ucast eth0 172.16.190.21
	ucast eth0 172.16.190.22
	ucast eth0 172.16.190.23
	bcast eth0
	auto_failback off
	crm on
	apiauth cibmon          uid=root
	respawn hacluster       /usr/lib/heartbeat/cibmon -d
"vi /usr/local/etc/ha.d/haresources" ->
	node1 IPaddr::172.16.190.30
"/usr/lib/heartbeat/haresources2cib.py --stdout -c /etc/heartbeat/ha.d/ha.cf /etc/heartbeat/ha.d/haresources > /var/lib/heartbeat/crm/cib.xml"
"vi /var/lib/heartbeat/crm/cib.xml" -> quorum auf ignore setzen, ca. Zeile 7
	<nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
"chown -R hacluster:haclient /var/lib/heartbeat/crm/cib.xml"
"chown -R hacluster:haclient /var/run/heartbeat/"
Eventuell noch "rm -frv /var/lib/heartbeat/crm/cib.xml.*" und
"chmod 600 /var/lib/heartbeat/crm/cib.xml" bevor eine neue Konfig geschrieben wird.

Jetzt alle Konfs auf die anderen Nodes verteilen
"scp -r -v root@172.16.190.22:/etc/heartbeat/ha.d/* /etc/heartbeat/ha.d/"
"scp -r -v root@172.16.190.22:/var/lib/heartbeat/crm/cib.xml /var/lib/heartbeat/crm/"
"/usr/lib/heartbeat/heartbeat"
"crm_mon"

#iSCSI OCFS2 HEARTBEAT Start Script######################################################
insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/firmware/iscsi_ibft.ko
insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/scsi_transport_iscsi.ko
insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/libiscsi.ko
insmod /lib/modules/2.6.27.7-9-default/kernel/iscsi/iscsi_trgt.ko
insmod /lib/modules/2.6.27.7-9-default/kernel/net/ipv6/ipv6.ko
insmod /lib/modules/2.6.27.7-9-default/kernel/drivers/scsi/iscsi_tcp.ko
iscsid -c /etc/iscsi/iscsid.conf
iscsiadm -m discovery -t sendtargets -p 172.16.190.20:3260
iscsiadm -m discovery -t sendtargets -p 172.16.190.21:3260
iscsiadm -m node -p 172.16.190.20 -L all
sleep 3
mdadm -A /dev/md0
sleep 2
/etc/init.d/o2cb start
/etc/init.d/ocfs2 start
/usr/lib/heartbeat/heartbeat
mount -t ocfs2 /dev/md0 /ocfs2_mount

#######################################################################################
Fehlermeldungen:
cannot find iscsictl in /proc/devices - make sure the kernel module is loaded

Lösung: iscsictl ist für 3er Kernel obsolete. Bitte tgt-iscsi installieren

#Zusatz Infos#####################################################################################
(i)SCSI command

"sg_vpd -p 0x83 /dev/sdd" -> Zeigt den VPD 83h Code.
	Device Identification VPD page:
	Addressed logical unit:
	designator type: NAA,  code set: Binary
	0x6000c2987f597101cc5131fb13a22090

"sg_vpd -p 0x80 /dev/sda" ->
	Unit serial number VPD page:
	Unit serial number: 6000c2987f597101cc5131fb13a22090

"sg_inq -e /dev/sda" = Supported VPD pages: ->
	VPD INQUIRY, page code=0x00:
	[PQual=0  Peripheral device type: disk]
	Supported VPD pages:
	0x0        Supported VPD pages
	0xb1       Block device characteristics (sbc3)

"sg_inq -i /dev/sdb"
	VPD INQUIRY: Device Identification page
	Designation descriptor number 1, descriptor length: 20
	designator_type: NAA,  code_set: Binary
	associated with the addressed logical unit
	NAA 6, IEEE Company_id: 0xc29
	Vendor Specific Identifier: 0x6b3f9250c
	Vendor Specific Identifier Extension: 0x890400570cf14328
	[0x6000c296b3f9250c890400570cf14328]
	
Speedlimit für RAID
"cat /proc/sys/dev/raid/speed_limit_max"
"cat /proc/sys/dev/raid/speed_limit_min"

##
Falls man das virtuell unter VMware testet
im *.vmx File "disk.EnableUUID = "TRUE" " hinzufügen (Notwendig für den Windows Culster betrieb)

#Troubleshoot#####################################################################################################################
Fehler:
"iscsiadm -m discovery -t sendtargets -p 172.19.190.12:3260"
	iscsiadm: Could not stat /etc/iscsi/nodes//,3260,-1/default to delete node: No such file or directory
	iscsiadm: Could not add/update [tcp:[hw=,ip=,net_if=,iscsi_if=default] 172.19.190.12,3260,1 iqn.2012-10.moore.corp:xen]
	iscsiadm: Could not stat /etc/iscsi/nodes//,3260,-1/default to delete node: No such file or directory
	iscsiadm: Could not add/update [tcp:[hw=,ip=,net_if=,iscsi_if=default] 172.16.190.12,3260,1 iqn.2012-10.moore.corp:xen]
	iscsiadm: Could not stat /etc/iscsi/nodes//,3260,-1/default to delete node: No such file or directory
	iscsiadm: Could not add/update [tcp:[hw=,ip=,net_if=,iscsi_if=default] 172.17.190.12,3260,1 iqn.2012-10.moore.corp:xen]
	iscsiadm: Could not stat /etc/iscsi/nodes//,3260,-1/default to delete node: No such file or directory
	iscsiadm: Could not add/update [tcp:[hw=,ip=,net_if=,iscsi_if=default] 172.20.190.12,3260,1 iqn.2012-10.moore.corp:xen]
	172.19.190.12:3260,1 iqn.2012-10.moore.corp:xen
	172.16.190.12:3260,1 iqn.2012-10.moore.corp:xen
	172.17.190.12:3260,1 iqn.2012-10.moore.corp:xen
	172.20.190.12:3260,1 iqn.2012-10.moore.corp:xen
	172.17.190.34:3260,1 iqn.2012-10.moore.corp:xen
	172.19.190.12:3260,1 iqn.2012-10.moore.corp:web
	172.16.190.12:3260,1 iqn.2012-10.moore.corp:web
	172.17.190.12:3260,1 iqn.2012-10.moore.corp:web
	172.20.190.12:3260,1 iqn.2012-10.moore.corp:web
	172.17.190.34:3260,1 iqn.2012-10.moore.corp:web
Lösung:
"rm -frv /etc/iscsi/nodes/*"

######
Fehler:
	2015-12-22T08:48:45.315070+01:00 xen08 kernel: [  203.386629]  connection1:0: detected conn error (1020)
	2015-12-22T08:48:46.106942+01:00 xen08 iscsid: Kernel reported iSCSI connection 1:0 error (1020 - ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed) state (3)
	
	Das System kann sogar einfrieren wenn z.B. Xen 4.6 läuft.
	
Lösung:
	"vi /etc/iscsi/initiatorname.iscsi" -> Der "InitiatorName" darf nicht mehrfach im Netz auftauchen. Bei opensuse Leap 42.1 wird er anscheinent nicht neu gerneriert.
		InitiatorName=iqn.1996-04.de.suse:01:5b7c1a40f37b

#####################################################################################################################
Tuning. (wget https://www.heinlein-support.de/sites/default/files/iscsi-optimization.pdf)

Jumbo Frames aktivieren. Am Switch sowie an der Netzwerkkarte. Achtung nicht jede Netzwerkkarte und Dienst verkraftet Jumboframes (z.B. SSH macht Probleme). 0815 Netzwerkkarten stürzen Ab.
	"ifconfig eth0 mtu 9000"
	"ifconfig eth0.111 mtu 9000"
	"ip link set dev eth0 mtu 9000"
Via ethtool Soweit möglich, SG, TSO, GSO, GRO, LRO aktivieren.
	"ethtool -k eth0"
	"ethtool -k eth0 | grep scatter-gather"
	"ethtool -k eth0 | grep tcp-segmentation-offload"
	"ethtool -k eth0 | grep udp-fragmentation-offload
	"ethtool -k eth0 | grep generic-segmentation-offload"
	"ethtool -k eth0 | grep generic-receive-offload"
	"ethtool -k eth0 | grep large-receive-offload"
	"ethtool -K eth0 sg on"
	"ethtool -K eth0 tso on"
	"ethtool -K eth0 gso on"
	"ethtool -K eth0 gro on"
	"ethtool -K eth0 lro on"
	"ethtool -K eth0 ufo on"
Device-I/O Scheduler:
	#!/bin/sh
	HWBS = $(cat /sys/block/sdb/queue/max_hw_sectors_kb)
	echo $HWBS > /sys/block/sdb/queue/max_sectors_kb
	/sbin/blockdev –setra $HWBS /dev/sdb
	echo "cfq" > /sys/block/sdb/queue/scheduler  oder deadline
	echo 256 > /sys/block/sdb/device/queue_depth
	echo 512 > /sys/block/sdb/queue/nr_requests		oder noch höher 20480
	echo 0 > /sys/block/sdb/que	ue/iosched/slice_idle
	echo 1 > /sys/block/sdb/queue/rq_affinity
CPU/Memory:
	sysctl vm.dirty_ratio=40
	sysctl vm.dirty_background_ratio=15
	sysctl vm.vfs_cache_pressure=60
	sysctl kernel.sched_nr_migrate=64
	sysctl kernel.sched_migration_cost_ns=400000
ISCSI Target Paketgrössen:
	MaxBurstLength und MaxRecvDataSegmentLength auf den gemeinsam größent Wert. (ACHTUNG kleinster Wert gewinnt, ähnlich MTU)
	"scsi-scst-adm --op show --tid=1 --sid=0 #TARGET (SCST)"
	"cat /etc/iscsi/nodes/iqn.2012-10.moore.corp\:xen1/172.16.190.12\,3260\,1/default" # Initator (openIscsi)
	"vi /etc/scst.conf" -> (Target)
		TARGET iqn.2012-10.moore.corp:xen1 {
                LUN 0 disk01
                                enabled 1
                                MaxBurstLength 16776192
								MaxRecvDataSegmentLength 1048576
                }
	"vi /etc/iscsi/iscsid.conf" -> (Initiator)
		#node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
		node.conn[0].iscsi.MaxRecvDataSegmentLength = 1048576
TCP/IP:
	ifconfig eth0.222 txqueuelen 100000
	## 4KB send buffer, 20,480 connections max at worst case
	echo 83886080 > /proc/sys/net/core/wmem_max
	echo 83886080 > /proc/sys/net/core/wmem_default
	## 16KB receive buffer, 20,480 connections max at worst case
	echo 335544320 > /proc/sys/net/core/rmem_max
	echo 335544320 > /proc/sys/net/core/rmem_default
	echo 1 > /proc/sys/net/ipv4/tcp_fastopen
	echo 1 > /proc/sys/net/ipv4/tcp_sack 
	echo 1 > /proc/sys/net/ipv4/tcp_low_latency 


Post Revisions: