Dit document beschrijft de installatie en configuratie van een iSCSI target onder Redhat 6.1. Het document is zowel geschikt voor Redhat 6.x, CentOS 6.x als Scientific Linux 6.x.
Redhat levert bij zijn distributie tgt mee, helaas wel in een verouderde versie (1.0.4). Deze zullen we dan ook in dit document updaten.
Ik ga in dit document uit van een minimale installatie van RedHat 6.1. Heb de setup zelf gebouwd op basis van Scientific Linux 6.1, minimale installatie (@core), uiteraard voorzien van de laatste updates.
Op basis van dit document bouw je een iSCSI oplossing die je kunt bouwen op zowel een fysieke machine als virtuele machine. De iSCSI target kun je vervolgens gebruiken binnen een VMware vSphere, Citrix XenServer of VirtualBox omgeving, of gewoon als een storage oplossing voor je desktops.
Er zijn bij de iSCSI target een paar hardware eisen:
Aangezien ik tgt van source ga compileren zijn er wat dependencies te installeren:
yum install man gcc make patch openssl-devel perl perl-Config-General
Ik installeer de tgt versie van Redhat wel, dat zorgt er voor dat er juiste startscripts etc. zijn.
yum install scsi-target-utils sg3_utils
En aangezien het document geschreven is voor een minimale Redhat installatie, is er geen grafische omgeving. Om de software te downloaden is wellicht een text-based browser ook handig.
yum install elinks
Gebruik vervolgens elinks om de laatste versie (op moment van schrijven is dit versie 1.0.19) te downloaden van:
http://stgt.sourceforge.net
Pak eerst het verkregen archiefbestand uit:
tar xzf tgt-1.0.19.tar.gz cd tgt-1.0.19 make make install
Ik maak graag gebruik van LVM, dit zorgt voor meer flexibiliteit in het toekennen van schijfruimte, en bovendien heeft LVM allerlei gave features als bijvoorbeeld het maken van snapshots.
Voor het gemak ga ik even uit van 1 lege harde schijf: /dev/sdb. Allereerst geef je aan dat deze schijf gebruikt moet worden door LVM, vervolgens ga je een volumegroup aanmaken met de naam iscsi-store en maakt meteen /dev/sdb onderdeel van dit volume. Als laatste maak je een zgn. logical volume, een 'partitie' aan met de naam iscsi-vol1 van bijvoorbeeld 8GB.
pvcreate /dev/sdb vgcreate iscsi-store /dev/sdb lvcreate -L 8G -n iscsi-vol1 iscsi-store
De configuratie kan via de commandline gebeuren, maar ook via het configuratie bestand /etc/tgt/targets.conf. In dit bestand zijn diverse voorbeelden opgenomen en ook: man tgt-admin.
Hieronder de configuratie die ik gebruik:
<target iqn.2004-01.nl.xtg:iscsi-server1> direct-store /dev/mapper/iscsi--store-iscsi--vol1 write-cache on initiator-address ALL incominguser gebruiker wachtwoord scsi_id 00010001 vendor_id XTG lun 12 </target> MaxRecvDataSegmentLength 131072 MaxXmitDataSegmentLength 131072 MaxBurstLength 262144 FirstBurstLength 262144 TargetRecvDataSegmentLength=262144 InitiatorRecvDataSegmentLength=262144 MaxOutstandingUnexpectedPDUs=0 MaxOutstandingR2T=1 MaxCommands=128 DataPDUInOrder=Yes DataSequenceInOrder=Yes HeaderDigest=None DataDigest=None InitialR2T=No ImmediateData=Yes DelayedAck=Yes ErrorRecoveryLevel=0 IFMarker=No OFMarker=No DefaultTime2Wait=2 DefaultTime2Retain=0 OFMarkInt=Reject IFMarkInt=Reject MaxConnections=4 RDMAExtensions=No
Het eerste gedeelte definieert de target, configureert het te gebruiken volume en de chap authentication. In dit document ga ik verder niet in op deze configuratie. Voor meer informatie over de advanced parameters is het wellicht een goed idee om de rfc's te lezen:
Note: de gebruikte parameters zijn geschikt voor Citrix XenServer en VMware vSphere.
Nu de tgt service starten en ook laten opstarten bij het bootproces:
chkconfig tgtd on service tgtd start
En als laatste stap de firewall configureren:
iptables --insert INPUT --match state --state new \ --proto tcp --dport 3260 --jump ACCEPT service iptables save