文章防盗链地址:http://jackcui.blog.51cto.com/

一、常见的存储类型和iSCSI 概念及介绍

1.1 常见的三种存储类型

DAS(Direct-AttachedStorage)直接附加存储,存储设备一般通过scsi/ide总线直接连接到主机上,常见的如SATA硬盘,SAS硬盘等,直接通过准线连接到计算机主板上面。该方式显著的优点就是传输速度快,但传输距离受总线长度限制,且只能供本地使用。

NAS(Network AttachedStorage)网络附加存储,将存储设备与服务器分离,集中管理数据,从而提升并发存储能力、降低维护成本。典型的应用示例有NFS服务器,SAMBA服务器,NFS服务器等文件服务器,通过向外提供文件系统的方式向外提供存储

SAN(Storage Area Network)存储区域网络,采用FC(Fibre Channel)光纤通道或者Ethernet进行远距离传输,区别于Fiber Channel光纤通道技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。

        wKioL1h0qtuhhxhTAAFqa28XDx8597.png

        SAN架构图

        

1.2 三种存储类型的区别

DAS与SAN都是块级别(Block-level)的存储,而NAS是文件系统(File System level)级的存储。因为文件系统是操作系统对磁盘数据的一次封装。每次对数据访问时提供文件服务的服务器都要对数据进行数据封装,和解封装,然后再对块设备磁盘进行读写。而DAS是直接对块设备进行读写,因此NAS的存储速度不如前面两者。

SAN(Storage Area Network)相当于模拟了远距离传输的DAS,特点是速度快。支持的并发服务主机数量多。大家都知道远距离传输是需要跨越Internet,而广域网的带宽是远不能和局域网相比的,因此缺点便是网络速度瓶颈问题。

        

1.3 iSCSI简介

iSCSI(Internet SmallComputer System Interface)基于Internet的小型计算机系统接口,由IBM公司研究开发的,是一个可以让硬件设备在IP协议的上层运行的SCSI指令集存储技术,可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可通过IP网络进行远距离SCSI类型的数据存储设备由 SCSI 总线连接。iSCSI 的主要功能是在 TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。此外,iSCSI 提供了在 IP 网络封装 SCSI 命令,且以TCP/IP协议传输。iSCSI服务端程序监听端口为明文的TCP/3260。

    wKiom1h0qw3DBwBJAAHHWdBsSFY491.png

    iSCSI数据帧封装格式


二、iSCSI相关术语与常用命令该介绍


2.1 iSCSI相关术语

启动器:一个iscsi客户端,通常以软件提供,但是也可以作为iSCSI HBA来实施。必须为启动器授予唯一名称。

目标:一个iSCSI存储资源,针对来自iSCSI服务器的连接而配置。必须为目标授予唯一目标。目标提供一个或多个低啊有编号的快射别,称为逻辑单元。一个iSCSI服务器可以同时提供多个目标。

发现:查询目标服务器以列出配置的目标。

ACL访问权限控制列表,一种使用节点IQN(通常是启动器名称)来验证启动器的访问权限的访问限制。

 IQNiSCSI限定名称,全球唯一名称,用于以强制命名格式来识别启动器和目标。

              IQN格式如下:

        iqn.YYYY-MM.com.reversed.domain[:optional_string]

        iqn:表示此名称使用域为标识符。

        YYYY-MM:表示拥有域名的年月时间。

        com.reversed.domain:拥有此iSCSI组织的逆向域名

        :optional_string:以冒号为前缀的可选字符串,全球唯一,由域所有者分配,其中可包含冒号为分割符的组织边界

             

LUN逻辑单元号,带有编号的块设备,连接到目标且通过目标来使用。可以有一个或多个LUN连接到单个目标,但通常一个目标提供一个LUN

节点:任何一个iSCSI启动器或iSCSI目标,由其IQN来标识。

TPG目标门户组,某个特定iSCSI目标要侦听的接口IP地址和TCP端口的集合。可以将目标配置添加到TPG以协调多个LUN的设置。

门户:目标或启动器上用于建立的IP地址和端口。

    

2.2 iSCSI客户端和服务器端命令介绍

    

2.2.1 服务器端命令

在服务器端可以使用targetcli交互式shell工具,在其中可以创建删除和配置iSCSI目标组件,并且在此命令行工具中支持shell常用的Linux命令:cd、ls、pwd等。可以通过yum安装targetcli包提供此命令(此命令是红帽7.2版本才支持的命令,之前使用tgtadm命令管理iSCSI设备)。

         

2.2.2 客户端命令:

客户端需要安装iscsi-initiator-utils包,以供发现目标门户提供的块设备。配置文件路径为/etc/iscsi/iscsid.conf。在客户端也有两个服务脚本需要启动(建议开机自启),分别为/etc/rc.d/init.d/iscsi和/etc/rc.d/init.d/iscsid。只要启动iscsi,iscsid就会自动启动。客户端命令工具为/sbin/iscsiadm。

        iscsiadm也是一个模式化的命令,是客户端的命令

        -m {discovery|node|session|iface}

        discovery:发现某个server是否有target输出及有哪些输出

        node:自己作为节点与server端建立连接

        session:查看会话

        iface:进行接口管理的

        -d:debug_lebel 等级为0—8越高输出的debug信息越详细,可省略

        -I:指定使用哪个网络接口,如果只有一块网卡则不用指定

        -t:sendtarget,slp,iSNS三种形式,一般用的是sendtarget简写为st

        -p:IP:port IP为server的IP,port可以省略,默认为3260

        发现输出target后与登录target有关的

        -U 登出

        -R 重新登入

        -l 登入

        -T 指定targetname

        -p 指定server的IP/port

        -s 显示session的统计数据


三、简单示例配置

    ##iSCSI服务器配置##

     

    注:实验前首先使用fdisk /dev/vdb划分一块分区分区为/dev/vdb1。如果在真实环境当中使用相应的设备名即可,如raid设备在Linux中一般也被识别为/dev/sd*。可以自行判断即可。

     

    #yum install targetcli -y  安装服务器软件包:

    #systenctl start target 启动服务

    #targetcli  进入命令行

    wKioL1h0rKmx1PykAAClR5Q-9ZA676.png

    

    上图中创建后备存储,共有blockfileiopscsiramdisk四种,但是一般常用的为block,次之为fileioblock类型的一般为服务器定义的块设备,fileio为服务器文件系统指定大小的文件,其他一般使用较少,就不详细介绍。

    注:westos:storage1为后端存储的名字,/dev/vdb1为磁盘设备分区

     wKioL1h0rf6yM3PIAADgjUXb2HI776.png

    

    上图操作:为目标创建IQN,名字为iqn.2016-12.com.example:storage1.此步骤将默认创建一个TPG.

     wKiom1h0riaBEm68AAD03h1yOsw410.png

    上图操作:在tpg中创建一个ACL以供客户端使用。

    

wKioL1h0rkjjRU4gAAEwauxmsKM032.png

    wKioL1h0rknTHqQTAACwxsszTUc865.png

     上图操作:创建LUN,系统默认将创建的LUN和之前创建的ACL关联并激活每个后备存储,上图没有创建门户,将使用默认监听所有IP地址,并使用标准的iSCSI 3260端口。当然也可以在tgp中使用portals来创建相应的IP地址和端口。

     

    #systemctl stop firewalld   关闭火墙或者在防火墙中添加相应的规则

     

    ##客户端配置##

    #yum install iscsi-initiator-utils 安装客户端软件包

    #vim/etc/iscsi/initiatorname.iscsi

    InitiatorName=iqn.2016-12.com.example:key1  设置发起端的IQN

    #systemctl start iscsi

    #iscsiadm -m discovery -t st -p 172.25.254.108:3260iqn.2016-12.com.example:storage1 查找iSCSI服务器所提供的iSCSI目标

     

    登录服务器上的一个或多个iscsi目标

    iscsiadm -m node -T iqn.2016-12.com.example:storage1 -p172.25.254.108 -l

    此时,可以使用iSCSI磁盘,就好像它是本地连接硬盘驱动器。例如,通过文件系统格式化分区或作为LVM物理卷。

     

    注:在/etc/fstab中永久挂载文件系统

    使用blkid确定文件系统UUID并使用UUID挂载,而不是/dev/sd*设备名称。(每次引导时显示的设备名称都不同,具体取决于iSCSI设备通过网络进行响应的顺序。如果按设备名称挂载,这会导致使用错误的设备。)

    在/etc/fstab中使用_netdev作为挂载选项。(这将确保客户端不会尝试挂载文件系统,直至启用联网。否则,在引导时系统将出错。)

    /dev/sdb1      /mnt/  xfs defaults,_netdev  0 0

     

     确保iscsi服务在引导时启动。

     

    ##停止使用iSCSI目标##

    确保没有使用目标所提供的任何设备。

    确保从/etc/fstab等位置中删除使用目标的所有永久挂载。

    退出iSCSI目标,以断开连接。

    iscsiadm -m node -T iqn.2016-12.com.example:storge1 -u

    # iscsiadm -m node -T iqn.2016-12.com.example:storge1 -o delete  删除iSCSI目标的本地记录,以永久断开连接。

文章防盗链地址:http://jackcui.blog.51cto.com/