Linux下搭建iSCSI共享存储详细步骤
⼀、简介
iSCSI(internet SCSI)技术由IBM公司研究开发,是⼀个供硬件设备使⽤的、可以在IP协议的上层运⾏的SCSI指令集,这种指令集合可以实现在IP⽹络上运⾏SCSI协议,使其能够在诸如⾼速千兆以太⽹上进⾏路由选择。iSCSI技术是⼀种新储存技术,该技术是将现有SCSI接⼝与以太⽹络(Ethernet)技术结合,使服务器可与使⽤IP⽹络的储存装置互相交换资料。
iSCSI是⼀种基于TCP/IP 的协议,⽤来建⽴和管理IP存储设备、主机和客户机等之间的相互连接,并创建存储区域⽹络(SAN)。SAN 使得SCSI 协议应⽤于⾼速数据传输⽹络成为可能,这种传输以数据块级别(block-level)在多个数据存储⽹络间进⾏。SCSI 结构基于C/S模式,其通常应⽤环境是:设备互相靠近,并且这些设备由SCSI 总线连接。
iSCSI 的主要功能是在TCP/IP ⽹络上的主机系统(启动器 initiator)和存储设备(⽬标器 target)之间进⾏⼤量数据的封装和可靠传输过程。完整的iSCSI系统的拓扑结构如下:
从本质上说,iSCSI 启动器是⼀个客户端设备,它连接到服务器(在本例中是 iSCSI ⽬标)提供的某⼀服务,并发起对该服务的请求。iSCSI 启动器软件需要安装在每个RAC 节点(rac1 和 rac2)上。 iSCSI 启动器可以⽤软件实现,也可以⽤硬件实现。软件 iSCSI 启动器可⽤于⼤部分主要操作系统平台。对于本⽂,我们将使⽤ iscsi-initiator-utils RPM 中提供的免费 Linux Open-iSCSI 软件驱动程序。iSCSI 软件启动器通常与标准⽹络接⼝卡 (NIC)(⼤多数情况下是千兆位以太⽹卡)配合使⽤。硬件启动器是⼀个 iSCSI HBA(或 TCP 卸载引擎 (TOE) 卡),它本质上只是⼀个专⽤以太⽹卡,其上的 SCSI ASIC 可以从系统 CPU 内卸载所有⼯作(TCP 和 SCSI 命令)。iSCSI HBA 可以从许多供应商处购买,包括 Adaptec、Alacritech、Intel 和 QLogic。
iSCSI ⽬标是 iSCSI ⽹络的\"服务器\"组件。它通常是⼀个存储设备,包含您所需的信息并响应来⾃(⼀个或多个)启动器的请求。对于本⽂,节点rac1 将是 iSCSI ⽬标。
⼆、实验环境:
1、操作系统关闭防⽕墙和禁⽤SELinux2、iSCSI共享存储拓扑图:
3、iSCSI可分享的设备类型有很多,包括镜像⽂件(*.img)、分区(partition)、物理硬盘、raid设备、逻辑卷等,下⾯我只⽤物理磁盘分区来进⾏相关测试,其他类型⼤家可以⾃⼰测试。
三、实验步骤
(⼀)配置iscsi target:
⽅案1:命令⾏配置,⽴即有效,重启⽆效
1、在target上添加⼀块磁盘设备:sdb2、安装程序包、启动服务
[root@rac1 ~]# yum install -y scsi-target-utils[root@rac1 ~]# service tgtd start3、创建target
[root@rac1 ~]# tgtadm --lld /dev/sdb --mode target --op new --tid 1 --targetname iqn.2017-04.comcomsys:iscsi.fcdisk4、创建lun
[root@rac1 ~]# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sdb[root@rac1 ~]# tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 1 #删除lun的⽅法5、授权
[root@rac1 ~]# tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 10.1.1.0/24 #只有10.1.1.0的⽹段可访问6、查看已经定义的信息
[root@rac1 ~]# tgtadm --lld iscsi --mode target --op show
⽅案2:在配置⽂件中定义,重启有效
1、安装tgt
6⾃带了scsi-target-utils 软件,我们使⽤该软件进⾏target设置。[root@rac1 ~]# yum install scsi-target-utils -y2、配置tgt
tgt的主配置⽂件为/etc/tgt/targets.conf,下⾯我们来设置该⽂件。在该⽂件最后新增以下设置:
在该⽂件最后新增以下设置:说明:
iqn = iSCSI Qualified NameiSCSI target的名称规则如下:
iqn.2014-07.dev.iscsi-target:iscsidisk –--->iqn.年份-⽉份.域名反写.设备识别
每个在同⼀个target上的backing-store 称为逻辑单元号(Logical Unit Number,LUN),这个实验中有1个LUN。其他⾼级设置如initiator-address、incominguser,⼤家⾃⼰进⾏配置。
3、启动iSCSI target
[root@rac1 ~]# /etc/init.d/tgtd start[root@rac1 ~]# chkconfig tgtd on[root@rac1 ~]# netstat -tulnp|grep tgt
4、查看iSCSI target
[root@rac1 ~]# tgt-admin –show
LUN0 是控制器,可以看到各个LUN的⼤⼩和磁盘路径。⾄此,iSCSI Target 设定完毕。
(⼆)配置iSCSI Initiator
1、安装initiator
[root@rac1 ~]# yum -y install iscsi-initiator-utils2、设置开机启动
[root@rac1 ~]# chkconfig iscsid on[root@rac1 ~]# chkconfig iscsi on3、修改配置⽂件
initiator的配置⽂档位于/etc/iscsi/,该⽬录下有两个⽂件,initiatorname.iscsi 和iscsid.conf,其中iscsid.conf 是其配置⽂件,initiatorname.iscsi 是标记了initiator的名称,它的默认名称是InitiatorName= InitiatorName=iqn.1994-05.com.redhat:2f7b321a2,我们可以根据实际情况进⾏更改,⽐较好区分,这⾥我们修改为InitiatorName= iqn.2017-04.com.comsys:fcdisk.sdb。
因为在target⾥⾯,我们并没有设置访问,所以iscsid.conf ⽂件并不需要修改。
⼩知识:[root@rac2 iscsi]#echo \"InitiatorName=`iscsi-iname -p iqn.2017-04.com.comsys:fcdisk.sdb`\" > /etc/iscsi/initiatorname.iscsi (使⽤iscsi-iname命令⽣成随机数 )
4、侦测target
如果我们事先不知道⽬标主机的target名称,我们就需要进⾏侦测。基本格式:iscsiadm -m discovery -d # -t sendtargets -p IP[:PORT][root@rac2 iscsi] iscsiadm -m discovery -t sendtargets -p 10.1.1.51说明:
-m discovery //侦测target
-t sendtargets //通过iscsi协议(sendtargets可简写为st)-p IP:port //指定target的IP和port,不写port的话,默认为3260
5、查看nodes
iscsiadm 侦测到的结果会写⼊/var/lib/iscsi/nodes/ 中,因此只需启动/etc/init.d/iscsi 就能够在下次开机时,⾃动连接到正确的target了。[root@rac2 iscsi] ll -R /var/lib/iscsi/nodes/
侦测信息都写⼊了/var/lib/iscsi/nodes/ iqn.2017-04.com.comsys:iscsi.fcdisk /10.1.1.51,3260,1/default ⽂件中了。
6、连接target
查看⽬前系统上⾯所有的target[root@rac2 iscsi] iscsiadm -m node补充知识:连接与退出
基本格式:iscsiadm -m node [ -d debug_level ] [ [ -T targetname -p ip:port -I ifaceN ] [ -l | -u | -R | -s] ] [ [ -o operation ][root@rac2 iscsi] iscsiadm -m node -d 1 -T iqn.2017-04.com.comsys:iscsi.fcdisk -p 10.1.1.51:3260 -u #退出
[root@rac2 iscsi] iscsiadm -m node -d 1 -T iqn.2017-04.com.comsys:iscsi.fcdisk -p 10.1.1.51:3260 -o #删除指定条⽬
连接target
[root@rac2 ~] iscsiadm -m node -d 1 -T iqn.2017-04.com.comsys:iscsi.fcdisk -p 10.1.1.51:3260 -l
7、查看磁盘情况[root@rac2 ~] fdisk –l
可以看到,initiator 上⾯多了⼀块硬盘,⼤⼩和target上的LUN⼀致。这时你就可以像使⽤本地磁盘⼀样使⽤这些iSCSI设备了,下⾯我们来测试。
8、查看target信息
[root@rac1 ~] tgt-admin --show
(三)测试
将/dev/sdb在⽬标端进⾏分区,然后在客户端查看具体的分区情况[root@rac1 ~]# fdisk /dev/sdb⽬标端分区:
客户端查看分区结果:
=======================================================================================##服务端搭建配置yum安装iscsi服务端程序包
[root@localhost ~]# yum install scsi-target-utils启动tgtd服务
[root@localhost ~]# service tgtd start
正在启动 SCSI target daemon: [确定]将tgtd服务设为开机启动
[root@localhost ~]# chkconfig tgtd on
##命令⾏创建iscsi服务创建的target名称
[root@localhost ~]# tgtadm --lld iscsi --mode target --op new --tid 11 --targetname iqn.2014-03-17.com.tingwin.iscsi:iscsishared添加LUN本地存储路径
[root@localhost ~]# tgtadm --lld iscsi --mode logicalunit --op new --tid 11 --lun 11 --backing-store /dev/sda4
添加访问控制列表,开放给172.16.0.0/16⽹络中的主机访问
[root@localhost ~]# tgtadm --lld iscsi --mode target --op bind --tid 11 --initiator-address ALL查看iscsi服务配置信息
[root@localhost ~]# tgtadm --lld iscsi --mode target --op show
##配置⽂件创建iscsi服务
[root@cclove ~]# cat /etc/tgt/targets.conf
lun 10 initiator-address ALLincominguser sharedisk iscsi123321
##客户端搭建配置(Linux)
[root@localhost ~]# yum install iscsi-initiator-utils[root@localhost ~]# chkconfig iscsid on[root@localhost ~]# chkconfig iscsi on添加⽤户验证
[root@localhost /]# cat /etc/iscsi/iscsid.conf | grep -v ^# | grep -v ^$node.session.auth.authmethod = CHAPnode.session.auth.username = sharedisknode.session.auth.password = iscsi123321discovery.sendtargets.auth.authmethod = CHAPdiscovery.sendtargets.auth.username = sharediskdiscovery.sendtargets.auth.password = iscsi123321发现服务端共享target然后连接到本地上来
[root@localhost ~]# iscsiadm -m discovery -t sendtargets(st) -p 192.168.170.132:3260登录到服务端的target上
[root@localhost ~]# iscsiadm -m node -T iqn.2014-03-17.com.tingwin.iscsi:iscsishared -p 192.168.170.132:3260 -l 查看iscsi发现记录
[root@localhost ~]# iscsiadm -m node登出iscsi存储
[root@localhost ~]# iscsiadm -m node -T iqn.2014-03-17.com.tingwin.iscsi:iscsishared -p 192.168.170.132:3260 -u删除iscsi发现记录
[root@localhost ~]# iscsiadm -m node -T iqn.2014-03-17.com.tingwin.iscsi:iscsishared -p 192.168.170.132:3260 -o delete
##客户端搭建配置(windows)1,启⽤ISCSI后台服务
开始菜单->控制⾯板->管理⼯具->服务->Microsoft iSCSI Initiator Service 服务,双击 选择启动按钮,启动类型选择⾃动 ,确定 退出。 或是 开始菜单->控制⾯板->管理⼯具-> ISCSI发起程序 ⾃动打开该服务。2,配置ISCSI服务
开始菜单->控制⾯板->管理⼯具-> ISCSI发起程序-> 发现->发现门户,添加ISCSI服务端IP,稍等就会在⽬标选项卡 ->已经发现⽬标列表中显⽰target名称;选择target后选择 连接(同时选中 “将此连接添加到收藏⽬标列表”选项) 如果服务端配置CHAP密码,则在配置选项卡中添加3,在计算机管理程序中配置磁盘
开始菜单->控制⾯板->管理⼯具->计算机管理->存储->磁盘管理;选择新增磁盘进⾏格式化并添加盘符使⽤,如果磁盘状态为脱机,在显⽰脱机字符处右击,选择联机。