ISCSI:通过TCP/IP传输scsi指令
1. 工作原理:客户端发送discovery发现包到目标存储服务器端的3260端口,发现可用存储后再发送设备请求。
2. iscsi特点:
支持协议加密
支持chap双向认证
支持多路径功能
支持发现机制,支持事件通知和异步同步
重启后会自动挂载iscsi
3. 软件包需要:
客户端:iscsi-init*.rpm 在Server中
服务器端:scsi-target-*.rpm 在Clusterstorage中
4. iscsi target服务器端命名 必须保证完整性,全局性和唯一性
格式:iqn.<date_code>.<reversed_domain>.<string>[:<substring>]
iqn+日期+反转解析+字符串
5. 服务器端配置
#yum install scsi-target* -y
#chkconfig tgtd on
#service tgtd restart
注:当出现错误tgtadm:can’t connect to the tgt daemon.connection refused.
解决:#rm -rf /var/lock/subsys/tgtd
#fdisk /dev/sda
#tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2011-08:disk1 创建target名称
#tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda7 为target分配设备
#tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.21.0/24 权限控制
#history 4 >> /etc/rc.d/rc.local 写入rc.local开机自动执行
#tgtadm --lld iscsi --mode target --op show 查看target状态
chap认证扩展:
#tgtadm --lld iscsi --op new --mode account --user spunix --password redhat 建立账号
#tgtadm --lld iscsi --op bind --mode account --tid 1 --user spunix 账号与target绑定
#tgtadm --lld iscsi --op show --mode target
6. 客户端配置
#yum install iscsi-init*
#chkconfig iscsi on
#service iscsi restart
注:当出现错误iscsiadm:could not log into all portals.Err 19时
#rm -rf /var/lib/iscsi/nodes/文件
#service iscsi restart
#vi /etc/iscsi/iscsi.conf
开启chap认证
node.session.auth.authmethod = CHAP
node.session.auth.username = spunix
node.session.auth.password = redhat
设置等待时间为20秒(默认120)
node.session.timeo.replacement_timeout = 20
#iscsiadm -m discovery -t sendtargets -p 192.168.21.100:3260 向存储发送发现包
#iscsiadm -m node -T iqn.2011-08:disk1 -p 192.168.21.100:3260 -l 得到target名称进行连接
注:-l 表示下次重启仍然连接 -u临时注销
#fdisk -l 查看是否连接成功
成功后会出现/dev/sdb
#mkfs.ext3 /dev/sdb
#mount /dev/sdb /opt
7. 客户端删除连接
#iscsiadm -m node --targetname iqn.2011-08:disk1 --logout 注销
#iscsiadm -m -node -o delete -T iqn.2011-08:disk1 -p 192.168.21.100:3260 永久删除
8. 为了防止每次使用iscsi设备时出现名称不一样导致使用出现错误,使用UDEV功能为target进行命名
#cd /etc/udev/rules.d/
#touch 99-iscsi.rules
#udevinfo -a -p /block/sdb
#vi 99-iscsi.rules
BUS==”scsi”,SYSFS{size}==”9783522”,NAME=”myscsi”
重新连接iscsi ,在/dev下面的sdb变成了myscsi