存储系统-块iSCSI

      最后更新:2022-01-29 16:49:16 手机定位技术交流文章

      简介

      iSCSI 称为IP- SAN ,是一种基于 因特网 及 SCSI-3 协议下的存储技术,由 IETF 提出,并于2003年2月11日成为正式的标准。与传统的 SCSI 技术比较起来,iSCSI技术有以下三个革命性的变化:

      1. 把原来只用于本机的SCSI协议透过 TCP/IP 网络发送,使连接距离可作无限的地域延伸;

      2. 连接的 服务器 数量无限(原来的SCSI-3的上限是15);

      3. 由于是服务器架构,因此也可以实现在线扩容以至动态部署

      功能

      ISCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用iSCSI的协议来交换 SCSI 命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。

      iSCSI使用 TCP/IP 协议(一般使用 TCP端口 860和3260)。 本质上,iSCSI 让两个主机通过 IP 网络相互协商然后交换 SCSI 命令。这样一来,iSCSI 就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)。不像某些 SAN 协议如FC-SAN,iSCSI 不需要专用的电缆;它可以在已有的交换和 IP 基础架构上运行这就是IP-SAN。然而,如果不使用专用的网络或者子网( LAN 或者 VLAN ),iSCSI SAN 的部署性能可能会严重下降。于是,iSCSI 【IP-SAN】常常被认为是光纤通道(Fiber Channel)【FC-SAN】的一个低成本替代方法,而光纤通道是需要专用的基础架构的。但是,基于以太网的光纤通道( FCoE )则不需要专用的基础架构。

      虽然 iSCSI 可以与任意类型的 SCSI 设备进行通信,系统管理员几乎总是使用它来连接服务器计算机 (例如,数据库服务器) 和磁盘卷上存储阵列。 使用iSCSI SAN 的目的通常有以下两个:

      存储集成公司希望将不同的存储资源从分散在网络上的服务器移动到统一的位置(常常是数据中心); 这可以让存储的分配变得更为有效。 SAN 环境中的服务器无需任何更改硬件或电缆连接就可以得到新分配的磁盘卷。

      灾难恢复公司希望把存储资源从一个数据中心镜像到另一个远程的数据中心上,后者在出现长时间停电的情况下可以用作热备份。 特别是,iSCSI SAN 使我们只需要用最小的配置更改就可以在 WAN 上面迁移整个磁盘阵列,实质上就是,把存储变成了“可路由的”,就像普通的网络通信一样

      1、认识iSCSI

      iSCSI(Internet Small Computer System Interface,Internet 小型计算机系统接口)是一种由IBM公司研究开发的IP SAN技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,基于 TCP/IP的协议连接iSCSI服务端(Target)和客户端(Initiator),使得封装后的SCSI数据包可以在通用互联网传输,最终实现iSCSI服务端映射为一个存储空间(磁盘)提供给已连接认证后的客户端。

      1.1 ISCSI

      SCSI(Small Computer System Interface)是一种I/O技术,规范了一种并行的I/O总线和相关的协议,SCSI的数据传输是以块的方式进行的

      如上图,SCSI总线通过SCSI控制器来和硬盘之类的设备进行通信, SCSI控制器称为Target,访问的客户端应用称为Initiator。窄SCSI总线最多允许8个、宽SCSI总线最多允许16个不同的SCSI设备和它进行连接,每个SCSI设备都必须有自己唯一的SCSI ID(设备的地址)。
      LUN(Logical Unit Number,逻辑单元号)是为了使用和描述更多设备及对象而引进的一个方法,每个SCSI ID上最多有32个LUN,一个LUN对应一个逻辑设备。

      广泛应用于小型机上,正在成为PC 服务器的标准接口,实现高速数据传输(可达320MB/s),常见的SCSI设备:硬盘、磁盘阵列、打印机、光盘刻录机等。

      1.2、iSCSI实现               C客户端                          S服务端

      1)iSCSI Initiator

      iSCSI 启动器,从本质上说,iSCSI 启动器是一个客户端设备,用于将请求连接并启动到服务器(iSCSI 目标)。

      如上图,iSCSI 启动器有三种实现方式:

      (1)可以完全基于硬件实现,比如 iSCSI HBA 卡;

      (2)硬件TOE卡与软件结合的方式;

      (3)完全基于软件实现,而软件 iSCSI 启动器适用于大部分主流操作系统平台,下面就是用软件方式来配置。

      2) iSCSI Target

      即 iSCSI 目标,它是 iSCSI 网络的服务器组件,通常是一个存储设备,用于包含所需的数据并回应来自 iSCSI 启动器的请求。

      3)工作过程

      Initiator【客户端】发出请求后,会在本地的操作系统会生成了相应的SCSI命令和数据I/O请求,然后这些命令和请求被封装加密成IP信息包,通过以太网(TCP/IP)传输到Targer【服务端】。

      当Targer接收到信息包时,将进行解密和解析,将SCSI命令和I/O请求分开。SCSI命令被发送到SCSI控制器,再传送到SCSI存储设备。

      设备执行SCSI命令后的响应,经过Target封装成iSCSI响应PDU,再通过已连接的TCP/IP网络传送给Initiator。

      Initiator会从iSCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序

      1.3 、iSCSI与FC SAN

      FC(FiberChannel,光纤通道)是利用光纤信道结合光纤通道交换机实现高速的数据存储网络。FC性能很好,但价格却贵得惊人,管理起来也非常困难。

      所以iSCSI利用现有的以太网络,用户只需要少量的投入,就可以方便、快捷地对信息和数据进行交互式传输和管理。当然iSCSI与FC相比也存在明显的不足,如速度性能、安全可靠性。

      1.4、SAN与NAS / iSCSI与NFS

      通过前面文章知道,SAN与NAS是完全不同架构的存储方案,前者支持Block协议,后者则支持File协议;SAN结构中,文件管理系统(FS)还是分别在每一个应用服务器上,会产生I/O操作,而NAS则是每个应用服务器通过网络共享协议(如:NFS、CIFS)使用同一个文件管理系统,所以CPU密集型应用可以选用NAS。SAN是将目光集中在磁盘、磁带以及联接它们的可靠的基础结构,而NAS是将目光集中在应用、用户和文件以及它们共享的数据上,显得更"高级"。将来从桌面系统到数据集中管理到存储设备的全面解决方案将是NAS加SAN。

      以上区别具体到iSCSI和NFS:iSCSI可优化空间更大,性能稍好,但技术难度更高;而NFS在系统层面的支持更多,像一些备份、恢复等操作较简单。

      2、相关准备配置

      2.1)从协议层次的角度看,通常所说的SCSI通常是指一组包含块命令、控制器管理、系统命令和enclosure服务等内容的协议规范,对应于回话层;而其下的物理通道和链接方式就对应在 数据链路层 ,SCSI命令可以通过串口、Fibre Channel[FC]、SAS、infiniband、Internet、USB、PCIE等进行传输。iSCSI就是一种把异地存储资源通过TCP/IP网络映射到本地逻辑存储设备的SCSI实现。不同于NFS向用户提供按文件为单位访问远程存储的方式,它向用户提供了以块方式访问远程存储资源的接口,也就是说用户可以在本地/dev/下看到iSCSI映射后的磁盘。通常所说的target端是指远端存储资源所在的主机,比如存储服务器;而initiator端是指链接到target端并会访问远端存储资源的节点。

      2.2.) iSCSI target管理工具的特点,基于iSCSI的网络属性,很直观地我们能想到它基本上是基于server-client模型。提供存储资源的target相当于server,而使用远程存储资源的initiator端相当于client。基于现有的iSCSI协议规范,能够开发出target端和initiator端工具。在Linux系统上,initiator端工具可以用iscsiadm,目前大部分os都自带有这款工具;而target端的工具由于直接和性能和存储管理相关,数量更多,目前常见的有targetcli、targetadm、ietadm,它们各有所长,分别能适用不同的场合。

      2.3 )工具介绍

      IET(iSCSI Enterprise Target 【iscsitarget-1.4.20.2.tar.gz】)是内核态实现的iscsi target,相比于用户态实现的target(比如tgt【scsi-target-utils或targetcli】),IET比较稳定,并且也算是历史悠久,io都直接经过内核态,性能比较好。tgt为用户态实现,方便调试,新加入一些功能等,不过性能相比iet来说要稍差一点

      2.4) tgt程序架构:

      2.4.1 )target之精巧的LIO targetcli.rpm 服务端

      相对而言,targetcli是最新的target管理工具,内核态基于Linux 2.6.38开始引入的Linux IO Target,用户态提供了targetcli命令和python开发库rtslib,为用户提供了友好的操作界面。为此,现在大部分Linux OS发现版本默认都自带了LIO targetcli

      2.4.2 )target之功能完备tgtadm----->scsi-target-utils.rpm 服务端

      在LIO targetcli出现之前,tgtadm是首选的target管理工具,被用到企业存储解决方案当中。除了LUN管理、ACL控制等功能之外,它还提供了对已连接上的initiator的检测和iSNS服务的支持。虽然界面没法和LIO的targetcli相比,但是不乏功能强大的命令来完成各种操作。

      2.5) IET架构  iscsitarget-1.4.20.2

      iSCSI Enterprise Target download

      iSCSI Enterprise Target

      3. 操作试验

      3.1 环境

      iscsi-server:工具scsi-target-utils.rpm或targetcli.rpm

      centos 7.5 主机,IP地址:172.16.10.21 , 主机名:iscsi-server.com

      iscsi-client: 工具iscsi-initiator-utils.rpm

      centos 7.5 主机, IP地址:172.16.10.15 , 主机名:iscsi-client.com

      实验一:使用targetcli配置单个启动器作为iscsi客户端的存储设

      1)iscsi-Server配置过程 。实验环境全部准备完毕后,首先在服务器端安装targetcli工具,并设置target服务开机自启

      我们将新添加的一块大小为28G的虚拟磁盘/dev/sdb作为iscis卷组来使用

      将/dev/sdb创建成一个分区,设置磁盘格式为逻辑卷格式。

      备注:我们这里也可以不用分区直接使用整块磁盘来,这里分区是为了将磁盘创建成逻辑卷让它支持动态扩展

      将新的分区创建成LVM格式

      使用targetcli配置命令进行配置

      实验二:使用targetcli为多个启动器配置ISCSI访问控制

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/17642.html

          热门文章

          文章分类