zoukankan      html  css  js  c++  java
  • Linux下搭建iSCSI共享存储详细步骤

    一、简介

         iSCSIinternet 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 可以从许多供应商处购买,包括 AdaptecAlacritechIntel QLogic

          iSCSI 目标是 iSCSI 网络的"服务器"组件。它通常是一个存储设备,包含您所需的信息并响应来自(一个或多个)启动器的请求。对于本文,节点rac1 将是 iSCSI 目标。

    二、实验环境:

    1、操作系统关闭防火墙和禁用SELinux

    2、iSCSI共享存储拓扑图:

    3iSCSI可分享的设备类型有很多,包括镜像文件(*.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 NumberLUN),这个实验中有1LUN

    其他高级设置如initiator-addressincominguser,大家自己进行配置。

     

    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   //指定targetIPport,不写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

    目标端分区:

    客户端查看分区结果:

     

    出处http://www.linuxidc.com/Linux/2017-05/143877.htm

    =======================================================================================

    ##服务端搭建配置

    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

    <target  iqn.2014-03-17.com.tingwin.iscsi:iscsishared>

            <backing-store /dev/sda4>

            lun 10

            </backing-store>

            initiator-address ALL

            incominguser sharedisk iscsi123321

    </target>

    ##客户端搭建配置(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 = CHAP

    node.session.auth.username = sharedisk

    node.session.auth.password = iscsi123321

    discovery.sendtargets.auth.authmethod = CHAP

    discovery.sendtargets.auth.username = sharedisk

    discovery.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,在计算机管理程序中配置磁盘

      开始菜单->控制面板->管理工具->计算机管理->存储->磁盘管理;选择新增磁盘进行格式化并添加盘符使用,如果磁盘状态为脱机,在显示脱机字符处右击,选择联机。

    出处:https://blog.51cto.com/winterx/1414574?ivk_sa=1024320u

  • 相关阅读:
    ModuleNotFoundError: No module named '_ctypes' make: *** [install] 错误 1
    Python安装常见问题:ModuleNotFoundError: No module named '_ctypes' 解决办法
    No module named 'requests'
    python 安装bs4
    python 判断字符串中是否包含数字
    python lambda与zip 组合使用
    Python 从两个List构造Dict
    针对led显示图案的设计工具,画出图案后,可以导出点阵的16进制数组
    支付宝接口:系统有点忙,一会再试试
    urllib.error.URLError: urlopen error SSL: CERTIFICATE_VERIFY_FAILED certificate verify failed
  • 原文地址:https://www.cnblogs.com/mq0036/p/15514356.html
Copyright © 2011-2022 走看看