--- date: 2012-03-20 title: Add SAN functions to Highly Available NFS/NAS category: linux --- This based on my last post where I documented building a Highly Available NFS/NAS server. There is not a huge amount that needs to be done in order to add iSCSI functionality as well. Add a file called */etc/drbd/iscsi.res* containing: resource iscsi { on nfs1 { device /dev/drbd1; disk /dev/vdc; meta-disk internal; address 10.0.0.1:7789; } on nfs2 { device /dev/drbd1; disk /dev/vdc; meta-disk internal; address 10.0.0.2:7789; } } This differs from the previous resource in 2 ways. Obviously it using a different physical disk. Also the port number of the address is incremented; each resource has to have its own port to communicate on. # Configure Heartbeat Add a new resource to */etc/ha.d/haresources*: iscsi1.snellwilcox.local IPaddr::10.0.0.101/24/eth0 drbddisk::iscsi tgtd Same primary host, new IP address, new drbd resource and of course the service to be controlled (tgtd in this case). I also made a couple of changes to */etc/ha.d/ha.cf*: keepalive 500ms deadtime 5 warntime 10 initdead 120 This changes the regularity of the heartbeat packets from every 2 seconds to 2 every second. We also say that a node is dead after only 5 seconds rather than after 30. # Configure an iSCSI Target Tgtd has a config file that you can use in */etc/tgt/targets.conf*. It is an XML file, so add entry like: # provided devicce as a iSCSI target backing-store /dev/vg_matthew/lv_iscsi1 # iSCSI Initiator's IP address you allow to connect initiator-address 192.168.1.20 # authentication info ( set anyone you like for "username", "password" ) The target name is by convention *iqn.year-month.reverse-domainname:hostname.targetname*. Each backing store will be a seperate LUN. A discussion of this is out of the scope of this article. By default, this config file is disabled. Enable it by un-commenting the line `#TGTD_CONFIG=/etc/tgt/targets.conf` in */etc/sysconfig/tgtd*. You can now enable the target with service tgtd reload. Now when you run `tgtadm –mode target –op show` you should get something like: Target 1: iqn.2012-03.com.example:iscsi.target1 System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Readonly: No Backing store type: null Backing store path: None Backing store flags: LUN: 1 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 8590 MB, Block size: 512 Online: Yes Removable media: No Readonly: No Backing store type: rdwr Backing store path: /dev/drbd/by-res/iscsi Backing store flags: Account information: ACL information: ALL # Connect An Initiator Install the iscsi utils: yum install iscsi-initiator-utils chkconfig iscsi on chkconfig iscsid on Discover the targets on the host and login to the target. iscsiadm -m discovery -t sendtargets -p 10.0.0.101 iscsiadm -m node --login If you run `cat /proc/partitions` you will see an new partition has appeared. You can do whatever you want with it.