Linux下如何搭建iSCSI共享存储

50次阅读
没有评论

共计 4243 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章给大家分享的是有关 Linux 下如何搭建 iSCSI 共享存储的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

一、简介

     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 启动器软件需要安装在每个 Oracle 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、操作系统关闭防火墙和禁用 SELinux

2、iSCSI 共享存储拓扑图:

3、iSCSI 可分享的设备类型有很多,包括镜像文件(*.img)、分区(partition)、物理硬盘、raid 设备、逻辑卷等,下面我只用物理磁盘分区来进行相关测试,其他类型大家可以自己测试。

三、实验步骤

(一)配置 iscsi target:

方案 1:命令行配置,立即有效,重启无效

1、在 target 上添加一块磁盘设备:sdb

2、安装程序包、启动服务

[root@rac1 ~]# yum install -y scsi-target-utils

[root@rac1 ~]# service tgtd start

3、创建 target

[root@rac1 ~]# tgtadm –lld /dev/sdb –mode target –op new –tid 1 –targetname iqn.2017-04.comcomsys:iscsi.fcdisk

4、创建 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

RedHat6 自带了 scsi-target-utils 软件,我们使用该软件进行 target 设置。

[root@rac1 ~]# yum install scsi-target-utils -y

2、配置 tgt

tgt 的主配置文件为 /etc/tgt/targets.conf,下面我们来设置该文件。

在该文件最后新增以下设置:

说明:

iqn = iSCSI Qualified Name

iSCSI 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-utils

2、设置开机启动

[root@rac1 ~]# chkconfig iscsid on

[root@rac1 ~]# chkconfig iscsi on

3、修改配置文件

initiator 的配置文档位于 /etc/iscsi/,该目录下有两个文件,initiatorname.iscsi 和 iscsid.conf,其中 iscsid.conf 是其配置文件,initiatorname.iscsi 是标记了 initiator 的名称,它的默认名称是 InitiatorName= InitiatorName=iqn.1994-05.com.redhat:2f897b321a2,我们可以根据实际情况进行更改,比较好区分,这里我们修改为 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

目标端分区:

客户端查看分区结果:

感谢各位的阅读!关于“Linux 下如何搭建 iSCSI 共享存储”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计4243字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)