首页 > 代码库 > IP网络存储ISCSI
IP网络存储ISCSI
指导老师:双星科技曾勇老师
一、ISCSI的工作原理
1.1、iSCSI的组成
一个简单的iSCSI系统大概是由以下部分组成:
iSCSI Initiator 或者iSCSI HBA
iSCSI Target
以太网交换机
一台或者多台服务器
1.2、iSCSI Initiator
iSCSI Initiator是一个安装在计算上的软件或者硬件设备,它负责与iSCSI存储设备进行通信iSCSI 服务器与iSCSI存储设备之间的连接方式有两种:
第一种基于软件的方式:是iSCSI Initiator(免费), 在iSCSI服务器上安装Initiator 后,Initiator软件可以将以太网卡虚拟为iSCSI卡,进而接受报和发送iSCSI数据报文,从而实现主机和iSCSI存储设备之间的iSCSI协议和TCP/IP协议传输功能。
第二种方式: 是硬件iSCSI HBA(Host Bus Adapter) HBA硬件卡,即iSCSI Initiator硬件。这种方式需要先购买iSCSI HBA卡,然后将其安装在iSCSI服务器上,从而实现iSCSI服务器与交换机之间、iSCSI服务器与存储设备之间的高效数据传输.
iSCSI适配卡大致分成两类,一为TOE HBA卡,一为iSCSI HBA卡,前者价格较便宜,后者效能极佳,但价格非常昂贵。代表性的厂商有Adaptec、Alacritech、Intel、LSI、Qlogic等,其中Intel专注于TOE HBA卡的开发
1.3、iSCSI Target
iSCSI Target是一个可以用于存储数据的iSCSI磁盘阵列或者具有iSCSI功能的设备都可以被称为”iSCSI Target”,以为大多数操作系统都可以利用一些软件将系统转变为一个”iSCSI Target”。
利用iSCSI target软件,可以将服务器的存储空间分配给客户机使用,客户机可以像使用本地硬盘一样使用iSCSI磁盘,包括对其进行分区、格式化及读写等。而且每个客户端可以向iSCSI磁盘写数据,户不干扰,而且不会破坏存储到服务器中的数据。同时,iSCSI对可以通过配置文件对权限进行限制。非常的灵活。
我们知道,iSCSI使用了TCIP/IP协议进行通信的,因此,将iSCSI两端连接起来,仅仅需要一个以太网络就可以了,由此可知,iSCSI的存储性能和这个以太网有直接的关系,所以最好在iSCSI网络中使用千兆以太网交换机,劣质的网络设备会严重影响存储系统的性能,也就说,要为每个服务器配置高质量的千M以太网和千M交换机,并且提供两个链接,对于 ISCSI Target,应该为每个独立阵列中的两个独立端口配置一个设备交换机,最后将交换机连接起来,采用这种配置防止。其中一个交换机出现问题。另外一个任然可以保证数据的正常运行。
二、基于命令行的操作:
Target 10.0.0.201操作:
对于每个Target来说,主机的ID是唯一,
存储设备的LUN ID 是由ISCSI target来分配的。
ISCSI驱动器为了scsi请求和回应提供了一个通过IP网络传输的驱动.
# yum -y install scsi-target-utils
# /etc/init.d/tgtd start
# chkconfig tgtd on
# chkconfig --list tgtd
(1)模拟一个控制器
# tgtadm --lld iscsi --mode target --op new --targetname iqn.2014-07-03.com.sxkj.mydisk1 --tid 1
--lld:表示驱动或者接口类型
--mode:target目标
--op:new 新建
--targetname:表示创建targename名称.iqn.xxxxxxx.mydisk1 前和尾部固定,中间自由定义.
--tid:标识号
#查看
# tgtadm --lld iscsi --mode target --op show
(2)在模拟控制器关联一个设备
# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/sdb
--lld:表示驱动或者接口类型
--mode:target目标
--op:new 新建
--tid:标识号
--lun:lun标识号
-b:指定设备号
#查看
# tgtadm --lld iscsi --mode target --op show
(3)基于IP的授权
# tgtadm --lld iscsi --mode target --op bind --tid 1 -I 10.0.0.0/16
取消授权
#tgtadm --lld iscsi --mode target --op unbind --tid 1 -I 10.0.0.0/16
删除一个逻辑卷
#tgtadm --lld iscsi --mode target --op delete --tid 1 --lun 1
删除一个target
#tgtadm --lld iscsi --mode target --op delete --tid 1
Initiator 10.0.0.202操作:
# iscsi-iname
iqn.1994-05.com.redhat:d18ee3c506b
# iscsi-iname -p iqn.2014-07-03.com.skkjgongda
iqn.2014-07-03.com.skkjgongda:fb66a38ae152
# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2014-07-03.com.skkjgongda:fb66a38ae152 给自己的客户端取个固定的名字。
发现服务端Target
# iscsiadm -m discovery -t sendtargets -p 10.0.0.201
登录服务端:
# iscsiadm -m node -T iqn.2014-07-03.com.sxkj.mydisk1 -p 10.0.0.201 -l
# iscsiadm -m node -o delete -T iqn.2014-07-03.com.sxkj.mydisk1 -p 10.0.0.201
先退出登录。
# iscsiadm -m node -T iqn.2014-07-03.com.sxkj.mydisk1 -p 10.0.0.201 -U all
在删除一个发现:
iscsiadm -m node -o delete -T iqn.2014-07-03.com.sxkj.mydisk1 -p 10.0.0.201
五、总结所有的步骤简单化精华
iscsi单机文件共享系统,也就说比如有服务端共享一个/sdb存储出来
每个客户端可以在/sdb里面使用一个分区.
比如客户端1可以使用fdisk /sdb 分一个/sdb1
比如客户端2可以使用fdisk /sdb 分一个/sdb2
比如客户端3可以使用fdisk /sdb 分一个/sdb3
如果客户端1和客户端2同时使用/sdb1就会出现内存奔溃的情况。这个一大BUG,
5.1、环境描述:
服务器端target 10.0.0.203 增加一块30G sisci硬盘
客户端:10.0.0.204
客户端:10.0.0.202
5.2、服务安装
(1)、安装服务
# yum -y install scsi-target-utils
(2)、修改配置文件
#vim /etc/tgt/targets.conf
<target iqn.2014-06-10.com.sxkj.mydisk1>
backing-store /dev/sdb #如果多个存储设备。直接加多一个backing-store
incominguser alvin alvin123 #基于用户认证
initiator-address 10.0.0.0/16 #基于IP授权访问
</target>
(3)、重启服务
# /etc/init.d/tgtd restart
(4)、查看是否成功
# tgtadm --lld iscsi --mode target --op show
5.3、客户端安装
(1)安装软件
# yum -y install iscsi-initiator-utils
(2)修改Initiator唯一标识号
跟target一样也需要一个唯一标识号。可以使用-p来更改,然后编辑配置文件永久修改
# iscsi-iname
# iscsi-iname -p iqn.2014-06.com.sxkjgongda
# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:1c39abfdfa0 #给自己的客户端Initiator起个名字
(3)、修改配置文件
# vim /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP #开启chap认证
node.session.auth.username = Alvin #服务端target创建和绑定的用户
node.session.auth.password = alvin123 #服务端target创建的密码写进来
(4)、发现targe命令
# iscsiadm -m discovery -d 2 -t st -p 10.0.0.203
(5)、重启服务
# /etc/init.d/iscsi restart 是否可以看到共享磁盘?
(6)、可以使用fdisl对共享磁盘进行分区。然后挂在到本地
本文出自 “菜鸟起步” 博客,请务必保留此出处http://niceread.blog.51cto.com/8817080/1434016