目录

简略

一、iSCSI 介绍

1. iSCSI 定义

2.什么是iSCSI target

3.几种常见的 iSCSI Target

3. 优缺点比较

软iscsi target

二、SCSI 协议(操作系统与外部设备之间的通信协议)


简略

原来只用于本机的SCSI协义透过TCP/IP网络发送就是iSCSI协议。

iSCSI target是位于互联网上服务器上的存储资源。

被访问的设备称为Target,而访问Target 称为Initiator。

说白了,就是把存储资源接入网络,在网络上用SCSI协议传输数据,通过一定的机制,使得Target接入网络后能被Initiator发现,Initiator通过网络直接连Target读写数据。

ISER和iSCSI Target的关系

iSCSI target是位于互联网上服务器上的存储资源。

原来 客户端和target 传输数据的时候走的是IP/TCP协议栈,就是iSCSI。

现在换成走RDMA协议栈,可以在用RDMA 网络传输的SCSI,就是ISER。

一、iSCSI 介绍

1. iSCSI 定义

iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),互联网小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:

  1. 把原来只用于本机的SCSI协义透过TCP/IP网络发送,使连接距离可作无限的地域延伸;
  2. 连接的服务器数量无限(原来的SCSI-3的上限是15);
  3. 由于是服务器架构,因此也可以实现在线扩容以至动态部署。

2.什么是iSCSI target

iSCSI target是位于iSCSI服务器上的存储资源,可以用来执行各种存储相关的工作,比如为微软Hyper-V提供共享存储等。

应用

1、iSCSI target是位于iSCSI服务器上的存储资源。iSCSI是一个通过IP网络基础设施来连接数据存储设备的协议。

2、微软iSCSI target是Windows Server 2012中的一个功能,它可以将一台运行Windows Server的计算机转换到能够通过TCP/IP网络并以虚拟硬盘(VHD)的形式为客户提供共享存储的存储设备上。被访问的设备称为Target,而访问Target的服务器(或客户端)称为Initiator。 [1]

微软iSCSI target可以用来执行各种存储相关的工作,比如为微软Hyper-V提供共享存储、为多个应用服务器整合存储、为被托管在Windows故障集群的应用程序提供共享存储,还能保证无盘计算机从一个单一操作系统(OS)图像上进行远程开机。

3.几种常见的 iSCSI Target

  • STGT

Linux SCSI target framework (tgt) aims to simplify various SCSI target driver (iSCSI, Fibre Channel, SRP, etc) creation and maintenance. Our key goals are the clean integration into the scsi-mid layer and implementing a great portion of tgt in user space.

MainPage: Linux SCSI target framework (tgt) project
GitHub: https://github.com/fujita/tgt
Quickstart: Scsi-target-utils Quickstart Guide - Fedora Project Wiki

  • SCST

The generic SCSI target subsystem for Linux (SCST) allows creation of sophisticated storage devices from any Linux box. Those devices can provide advanced functionality, like replication, thin provisioning, deduplication, high availability, automatic backup, etc.

MainPage: SCST: A Generic SCSI Target Subsystem for Linux

  • LIO

LinuxIO (LIO™) is the standard open-source SCSI target in Linux. It supports all prevalent storage fabrics, including Fibre Channel (QLogic, Emulex), FCoE, iEEE 1394, iSCSI (incl. Chelsio offload support), NVMe-OF, iSER (Mellanox InfiniBand), SRP (Mellanox InfiniBand), USB, vHost, etc.

MainPage: Linux SCSI Target - Main Page

3. 优缺点比较

(1)STGT

tgt 是一个用户态的 SCSI target 框架,在 GNU/Linux 内核直接集成 SCSI target 框架之前,这是一个绝对主流的框架。

优点
1)简单,方便使用和维护。
2)另外已经有 ceph 的 target driver,只是需要做性能优化。
3)因为工作在用户态,所以即使挂掉了,也不会对其他运行的程序产生影响。

缺点
1)支持的传输协议较少。
2)对 SCSI 协议支持比较简单,一些 cluster 中的特性比如 PR 等都不支持,所以基于 stgt 的方案不能在 cluster 中使。
3)由于是用户态框架,性能问题较差,根据网上的相关数据, tgt 在使用本地存储的情况下,性能相比后面会提到的 SCST、 LIO 等是有一定差距的。

(2)SCST

SCST 的核心模块工作在内核里,可以支持通过系统模块(VFS、块层)访问的后端存储如块设备、文件设备以及 passthrough 的 scsi 设备。

优点
1)支持更多传输协议。
2)针对性能做了特殊的优化。
3)除了基本的 SCSI 协议支持外,还有一些高级支持:

  • SCST支持永久性预留(Persistent Reservation, PR);这是一个用于高可用集群中的存储设备的 I/O 隔离与存储设备故障切换、接管的特性。通过使用 PR 命令,initiator 可以在一个 target 上建立、抢占、查询、重置预留策略。在故障接管过程中,新的虚拟资源可以重置老的虚拟资源的预留策略,从而让故障切换更快、更容易地进行。
  • SCST 可以使用异步事件通知(AEN)来通告会话状态的变更。AEN 是一个 SCSI target 用来向 initiator 进行 target 端的事件告知的协议特性,即使在没有服务请求的时候也可以进行。于是 initiator 就可以在 target 端发生事件时,如设备插入、移除、调整尺寸或更换介质时,可以得到通知。这让 initiator 可以以即插即用的方式看到 target 的变化。

4)SCST 的开发者声称,它们的设计在健壮性和安全性方面更加符合 SCSI 标准。SCSI 协议要求,如果一个 initiator 要清除另一个 initiator 的预留资源时,预留者必须要得到清除通知,否则,多个 initiator 都可能来改变预留数据,就可能会破坏数据。SCST 可以实现安全的预留、释放操作,避免类似事情发生。
5)SCST 也支持非对称逻辑卷分配(ALUA)。ALUA 允许 target 管理员来管理 target 的访问状态和路径属性。这让多路径路由机制可以选择最好的路径,从而根据 target 的访问状态,优化带宽的使用。换句话说,在多路径环境下,target 管理员可以通过改变访问状态来调整 initiator 的路径。
6)各大存储服务提供商都是基于 SCST。
7)提供更细粒度的访问控制策略以及 QoS 保证机制(限制 initiator 连接的个数)。

缺点
1)结构复杂,二次开发成本较高。
2)工作在 kernel,如果挂了,会导致整个机器 down 掉,影响其他程序。
3)kernel 部分没有并入 linux,需要手工编译。

(3)LIO

LIO 也即 Linux-IO,是目前 GNU/Linux 内核自带的 SCSI target 框架(自 2.6.38版本开始引入,真正支持 iSCSI 需要到 3.1 版本) ,对 iSCSI RFC 规范的支持非常好,包括完整的错误恢复都有支持。整个 LIO 是纯内核态实现的,包括前端接入和后端存储模块,为了支持用户态后端,从内核 3.17 开始引入用户态后端支持,即 TCMU(Target Core Module in Userspace)。

优点
1)支持较多传输协议。
2)代码并入 linux 内核,减少了手动编译内核的麻烦。
3)提供了python版本的编程接口 rtslib。
4)LIO 在不断 backport SCST 的功能到 linux 内核,社区的力量是强大的。
5)LIO 也支持一些 SCST 没有的功能。如 LIO 还支持“会话多连接”(MC/S)。
6)LIO 支持最高级别的 ERL。

缺点
1)不支持 AEN,所以 target 状态发生变化时,只能通过 IO或者用户手动触发以检测处理变化。
2)结构相对复杂,二次开发成本较高。
3)工作在内核态,出现问题会影响其他程序的运行。

软iscsi target

  1. 检查系统是否安装 scsi-target
  2. //用来将Linux 系统模拟成为iSCSI target 的功能,也就是常说的软iscsi target.

二、SCSI 协议(操作系统与外部设备之间的通信协议)

https://blog.csdn.net/weixin_43997530/article/details/108202722

SCSI是一套完整的数据传输协议,其主要功能是在主机和存储设备之间传送命令、状态和块数据。在各类存储技术中,SCSI技术可谓是最重要的脊梁。

SCSI协议位于操作系统和外部资源之间,操作系统对外部设备(如磁盘、磁带、光盘、打印机等)的I/O操作均可以通过SCSI协议来实现,一般情况下,SCSI协议都嵌入到设备驱动器或者主机适配器的板载逻辑中。

例如,应用程序一般将数据作为文件来访问。尽管数据在磁盘上以数据块的方式存放,但是文件的检索 需要将未加工的块数据装配成应用程序能够操作的连续文件。这个过程的第一步由应用程序通过操作系统--连接的--文件系统 完成。

文件系统以目录、文件夹和文件的方式来创建人们可读的数据抽象。当一个用户的应用程序打开一个文件时,会引发一系列的动作,它们使用底层SCSI命令,控制数据块安全的从存储系统传输到内存。因此在文件系统层次中,数据传输在 文件描述 和 块I/O 之间进行(将块数据IO读出来描述成一个个文件)。

正像文件系统对用户应用程序数据的的虚拟化描述了一样,物理存储设备也被文件系统虚拟化。例如,在Windows中的E盘或者Linux中的/dev/sda可以是一个单独的磁盘、一个大磁盘的一部分或者多磁盘的条带阵列。

文件系统依赖于卷管理功能,它将各种存储设备看作可以并发的、很容易访问的资源。设备的虚拟化将物理存储转换成逻辑存储,并且承担了在磁盘上放置数据块所需的复杂任务。文件/数据块转换和映射功能可以像一个单独的卷管理应用程序那样复杂,也可以像适配卡设备驱动程序接口那么简单明了。

例如,Windows NT提供了Windows磁盘管理程序,为物理磁盘分配逻辑驱动器名。适配卡的设备驱动程序负责将它的资源作为一个物理SCSI实体,出现在Windows磁盘管理程序中。Windows磁盘管理程序可以为这些资源分配逻辑名,文件系统按顺序使用这些逻辑名为目录和文件确定位置。

如图1所示,逻辑抽象的层次 从实际的物理SCSI设备一直到 同主机系统。

不考虑潜在的通道,操作系统对物理设备的描述是通过总线/目标/LUN三元组定义的,这种三元组来自于并行SCSI技术。总线描述了主机上潜在的几个SCSI接口之一,每一个都支持一个单独的磁盘串。目标代表了串上一个单独的磁盘控制器,窄SCSI一共可以有7个,宽SCSI可以有15个。LUN标志允许控制器管理额外的磁盘,例如一个RAID设备。

总线/目标/LUN三元组和逻辑设备标识符之间的映射为物理设备提供了到高层文件系统的端口。因为Fibre Channel和IP存储是串行通信,没有总线设备,为了和操作系统的SCSI名称相兼容,总线标识符可以伪造。例如,一个单独的服务器中的两个IP存储网卡可以具有不同的总线标识符以模仿SCSI适配器配置。厂商不同,具体实现也不同,但是设备驱动器程序遵守操作系统的标准SCSI访问方法。

总线/目标/LUN标识符可以进一步映射到某个传输的寻址条件上。例如,FCP(Fibre Channel Protocol,光纤通道协议)将总线/目标/LUN映射到DI(deviceidentification,设备标识符)/LUN对上。因此,物理存储的表示有两个组成部分。一个是对于操作系统,使用大家都熟悉的基于SCSI三元组的可访问实体;另外一个是针对某个传输,以适应更改拓扑结构的寻址条件。

在这一层下面,数据块传送的启动器(initiator)和目标器(target)相互交换SCSI-3命令和状态。启动器部署在发起I/O请求的设备中,而目标器部署在执行I/O操作的设备中,一般来讲,主机侧的HBA卡作为启动器,而磁盘、阵列等作为目标设备。下图是一个典型的SCSI系统:

SCSI协议虽然是目前最为流行的数据传输协议,但是也存在着很多的缺点,如:SCSi总线上设备数限制为15,不适用于多服务器多存储设备的网络结构;SCSI总线的长度限制在25米,不适用于构造各种网络拓扑结构等。下图是SCSI协议流程:

http://blog.csdn.net/hexi_2000/article/details/7172997

【存储】 iSCSI Target(tgt) |什么是iSCSI target|SCSI协议相关推荐

  1. scsi 教程 linux,SCSI存储详解以及Linux下ISCSI的实现

    一,概述 SCSI最初是一种专门为小型计算机系统设计的I/O技术,但由于其架构和协议自身的优点,后被广泛应用于实现DAS以及SAN的底层技术. SCSI的定义: SCSI: Small Compute ...

  2. 网易数帆开源iSCSI服务器tgt独门优化,彻底解决性能问题

    iSCSI是现代企业级存储系统中的一项重要技术, 开源iSCSI 服务器tgt存在单线程性能问题,而相关的优化补丁效果参差不齐,尚未真正解决问题,本文介绍网易数帆存储团队如何通过一系列独特的创新实现t ...

  3. linux iscsi软件,Redhat Linux 配置 iSCSI 连接存储

    一.安装iSCSI软件包(系统盘自带) 1.查看是否安装iscsi包 # rpm -qa | grep iscsi -bash:  grep iscsi: command not found -bas ...

  4. iscsi 挂载教程_linux下ISCSI存储挂载方法

    安装 不同的操作系统对应各自的iSCSI initiator,以CentOS 6.5为例. 安装方法有两种: 1) 直接使用"yum install iscsi*"进行安装: 2) ...

  5. linux安装iscsi设备,Linux安装管理ISCSI卷(initiator端)

    Linux安装管理iSCSI卷(initiator端) Internet SCSI(iSCSI)是一种网络协议,使用TCP/IP网络来传输SCSI协议.它是代替FC(Fibre Channel-bas ...

  6. SCSI协议与iSCSI协议

    文章目录 1.SCSI协议 2.iSCSI协议 3.IO--SCSI错误处理机制 1.SCSI协议 SCSI的起源 SCSI出现的原因主要是因为原来的IDE接口的硬盘转速太慢,传输速率太低,因此高速的 ...

  7. Linux- 部署iSCSI -并使用win10挂载iSCSI盘

    啥是iscsi? 互联网小型计算机系统接口(iSCSI,Internet Small Computer System Interface).这是一种将 SCSI 接口与以太网技术相结合的新型存储技术, ...

  8. 计算机的iscsi配置,PC端的iSCSI参数设置方法

    PC端的iSCSI参数设置方法 上面介绍完NAS端的设置,接下来再来给大家介绍一下PC端的iSCSI设置,主要是实现在PC端上连接使用NAS上的iSCSI存储空间,这里我们以Windows 7 SP1 ...

  9. linux配置iscsi无账号密码,linux iscsi Initiator配置CHAP认证

    前面关于配置iscsi-target我们已经做过了,由于target上对lun做了chap认证,所以我们在客户端上也要配置认证. 综合老外和国内使用的方法,我总结了几种方法. ____________ ...

最新文章

  1. vb.net中的部分代码
  2. #JS:this的指向及函数调用对this的影响
  3. Python之一行代码
  4. Linux 命令之 cd 命令-切换目录
  5. python 函数进度条怎么_python输出结果刷新及进度条的实现操作
  6. 安卓4.4.4安装哪个微信版本_??微信又更新!暗黑模式可独立设置,新增群接龙固定入口...
  7. mysql健康检查脚本_MySQL服务健康检查脚本
  8. ---调试-用try-catch语句检查错误
  9. 终于,J 神还是加入了 Google!
  10. 安防巨头们集体造车 跳出安防已成常态
  11. 第七篇,STM32串口通信编程
  12. Eplan P8 2.7 win7/win10 安装(附带资源链接)已更新链接_20210617
  13. Week 7 Homework
  14. 计算机内部组成原理及内部子系统概述
  15. 第4章第6节-水管工游戏
  16. JAVA8之 日期时间时区之 ZoneId[ZoneOffset, ZoneRegion] 笔记
  17. 勇士大战恶魔?这款桌游明明是套高质量原创手办
  18. 阿里云oss搭建图床以及使用PicGO上传图片到图床
  19. OECD富裕经济体系通胀飙升至 25 年高位-全球薪资停滞不前
  20. Spring MVC @GetMapping和@PostMapping注解的使用

热门文章

  1. ►奇说总001期:《“中本聪”,你去哪儿了?》0928
  2. wpf利用Visifire.Chart实现实时曲线绘制
  3. 匿名软件竟成网络侵权避风港
  4. Scrapy CrawlSpider介绍和使用
  5. ADSP-21489的开发详解:VDSP+自己编程写代码开发(1-如何来做21489和21479的开发?简单说两句)
  6. c语言和plc编程,PLC编程-C语言PPT学习课件
  7. 傅老师课堂:Oracle高级查询之OVER (PARTITION BY ..)
  8. 将你的老旧Android平板或手机改造成服务器
  9. 上海贝尔2452交换机_通信网络-OmniSwitch 6250可堆叠的快速以太网交换机系列.pdf
  10. kafka 学习 非常详细的经典教程