版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

最近在做一个和scsi target相关的项目,我借着这个机会调研了一下linux中现有的scsi target方案,并整理出一个系列文章和大家分享一下。其中有三篇介绍现在常用的scsi target包括tgt(stgt)、LIO和SCST,还有一篇对它们做一个比较,给出优劣点。先从tgt开始吧。

Linux target framework(tgt)是为创建、维护SCSI target 驱动(包括iSCSI、FC、SRP等)提供支持。它的关键目标是简洁地集成到scsi-mid层,并且实现大部分应用层空间的tgt。以 Linux 2.6.38 为分界线,此前Linux 中默认的SCSI target是STGT,之后的标准是 Linux-IO Target。

1 架构

tgt体系结构中有两个kernel模块:target driver和tgt core,在linux 2.6.38之后,这两个模块已经被移除linux内核。
target driver的功能是管理和initiator设备之间的连接,从传输层中取出SCSI命令并交给tgt core。
tgt core是连接target driver和tgt daemon的纽带。
tgt daemon实现了处理SCSI协议命令部分的功能。
Target driver libraries是在用户态实现的访问后端存储的驱动。
Transport libraries是用户态中传输模块的实现。

2 支持的协议和后端存储

目前stgt仅支持iSCSI和iSER,FC和SRP的支持还处于in progress的状态。
后端存储支持FILEIO和BLOCKIO,并且还支持提供库函数访问存储的ceph和GLFS

3 配置和使用

关于tgt的配置,主要包括建立target,为target添加lun,设置访问target的控制策略等。建立target包括两种方法,基于命令方式和基于配置文件方式,其中配置文件为/etc/tgt/targets.conf。首先说明基于命令的方式,这里采用的命令为tgtadm。tgtadm用来监控和修改Linux
SCSI 目标器软件的。

3.1 使用tgtadm

1a) 建立一个target
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2012-01.cn.nayun:test-01
建立target需要提供target ID和名称,在一个网络内,target名称必须是唯一的,主要采用iqn-type格式和eui-type
格式表示,在Linux中主要用iqn-type格式,iqn是Internet限定名(Internet Qualified
Name)的简称。iSCSI
target命名采用“iqn.yyyy-mm.<反向的域名>:标识名”的形式,在上例中,所建立的target名称为iqn.2012-01.cn.nayun:test-01,其中cn.nayun为nayun.cn的反向,采用域名反向的方法主要是为了防止重名。

1b)查看所建立的target信息
$ tgtadm --lld iscsi --op show --mode target

1c)向target中添加LUN
$ tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb
关于使用tgt搭建一个基于rbd的SCSI target,请参见我的另一篇博文使用tgt搭建一个基于rbd的SCSI
target

1d)设置target的访问控制策略
$ tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL  --网内所有Initiator均可访问
$ tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.1.210      --允许某个IP地址访问
$ tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.1.0/24     --允许某个网络访问

1e)访问账号操作

建立新帐号
$tgtadm --lld iscsi --op new --mode account --user scott --password tiger

显示帐号信息
$tgtadm --lld iscsi --op show --mode account

将一个帐号与一个Target绑定(bind)
$tgtadm --lld iscsi --op bind --mode account --tid 1 --user scott

3.2 使用配置文件

通过tgtadm命令建立的target相关配置,在关闭机器后将不保存(也可以使用tgt-admin来持久化配置),通过配置文件的方式则可以保存Target相关信息,在系统重启时,tgtd守护进程从配置文件中提取配置信息,根据配置信息建立相应的Target。

Linux SCSI target framework (tgt)使用的配置文件为/etc/tgt/targets.conf,此配置文件采用XML格式保存Target配置信息,将上述通过tgtadm命令建立的Target在配置文件中的表示形式如下:

<target iqn.2012-01.cn.nayun:test-01>
                backing-store /dev/sdb
                incominguser scott tiger
                initiator-address 192.168.1.0/24
                initiator-address 192.168.1.210
</target>

Linux中三种SCSI target的介绍之STGT的更多相关文章

  1. Linux中三种SCSI target的介绍之各个target的优劣

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...

  2. Linux中三种SCSI target的介绍之LIO

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...

  3. Linux中三种SCSI target的介绍之SCST

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...

  4. 在Linux中三种让crontab每秒执行任务的方法

    第一种方法: 1.创建脚本文件 cat phplog.sh 2.编辑脚本内容 #!/bin/bash while : ;do /home/scripts.sh 2>/dev/null & ...

  5. Linux 的三种软件安装包介绍

    通过RPM软件包来安装 说起RPM(RedHat Package Management)标准的软件包,大家可能都会想起大名鼎鼎的REDHAT公司,正是RPM软件包发行方式的出现,使Linux中的应用软 ...

  6. HTML中使用js的三种方式及优缺点介绍

    1.内部js: 在直接在页面的<script></script>标签内写js代码 优点:相对于使用行内js,内部js代码较为集中,与页面结构的实现代码耦合度较低,比较便于维护 ...

  7. Ubuntu Linux系统三种方法添加本地软件库

    闲着没事教教大家以Ubuntu Linux系统三种方法添加本地软件库,ubuntu Linux使用本地软件包作为安装源——转2007-04-26 19:47新手重新系统的概率很高,每次重装系统后都要经 ...

  8. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

  9. 深入浅出spring IOC中三种依赖注入方式

    深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ...

随机推荐

  1. java8之lambda表达式(默认方法)

    [推荐]2019 Java 开发者跳槽指南.pdf(吐血整理)>>> 许多开发语言都将函数表达式集成到了其集合库中.这样比循环方式所需的代码更少,并且更加容易理解.以下面的循环为例: ...

  2. 支持移动端裁剪图片插件Jcrop(结合WebUploader上传)

    (此教程包括前端实现图片裁剪,后端进行获取裁剪区并保存) 最近有一个需求,微信公众号上传图片,支持自定义裁剪. 以前用过一款裁剪插件cropper,很久没用了,不知道对移动端操作兼容如何,重新从网上搜 ...

  3. 为新装的Centos 7X更换源,升级VIM失败,待解决

    CentOS 7X使用阿里云CentOS的yum源 1.备份原有repo文件 #cd /etc/yum.repos.d #mv /etc/yum.repos.d/CentOS-Base.repo /e ...

  4. iOS配置TARGETS

    说一下背景 自从这个项目不死不活的迭代了2年,从项目搭建到现在,一直都是自己在开发和维护,所以项目结构非常清晰,但是之前的水平写的代码现在看来也是惨不忍睹,不过本人比较懒,也就没有考虑过重构的事情 - ...

  5. Linux下系统调用的组成与实现

    主要包括三个部分:(1)唯一的系统调用号(System Call Number):(2)系统调用表中相应的表项,即具体的函数地址:(3)对应的具体函数,即系统调用函数体. 以getpid()POSIX ...

  6. SSH框架笔记01_SSH整合的两种方式

    目录 1. 框架回顾 2. 创建项目,引入jar包 2.1 Struts2的jar包 2.2 Hibernate的jar包 2.3 Spring的jar包 3. 引入配置文件 3.1 Struts2配 ...

  7. Android笔记(六十七) 自定义控件

    实际编程中,系统提供的控件往往无法满足我们的需求,一来是样子丑陋,二来是一些复杂的组合需要多次使用的话,每次都写一堆控件的组合会很耗费时间,所以我们将这些组件的组合自定义为一个新的控件,以后使用的时候 ...

  8. Springboot手动获取bean

    使用如下工具类即可 package com.rio.ums.spa.commons.utils; import org.springframework.beans.BeansException; im ...

  9. 解决 Jumpserver coco 使用登录用户(ldap)进行SSH连接目标主机,忽略系统用户

    前言 Jumpserver 作为国内流行的开源堡垒机,很多公司都在尝试使用,同时 Jumpserver 为了契合众多公司的用户认证,也提供了 LDAP 的用户认证方式,作为 Jumpserver 的用 ...

  10. Javascript诞生记 [转载]

    1. "1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时.但是,这个版本的浏览器只能用来浏览,不具备与访问者互动 ...