Linux中三种SCSI target的介绍之STGT
最近在做一个和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>
最新文章
- 网站缓存技术总结( ehcache、memcache、redis对比)
- 今天大雪 看雪花飘落HTML5特效
- 用css画出对话框
- 5.django笔记之form保存表单信息,动态select
- jdbc、事务(Transaction)、批处理 回顾
- Hadoop开发环境搭建
- CodedDFS日志配置
- MySQL数据库恢复(使用mysqlbinlog命令)
- vijos 1115 火星人
- 【百度地图API】如何制作可拖拽的沿道路测距
- JavaFX 2.0+ WebView /WebEngine render web page to an image
- Hibernate 继承表结构
- dojo中的dojox/grid/EnhancedGrid表格报错
- 中间件——canal小记
- swiper 轮播图,拖动之后继续轮播
- 虚拟机3种网络模式(桥接、nat、Host-only)
- MySQL字符集 utf8 和 utf8mb4 区别及排序规则 general_ci 和 unicode_ci 和 bin 的区别
- flask-appbuilder 快速入门
- Hamming Problem(hdu3199)
- Express+Less+Gulp配置高效率开发环境
热门文章
- springboot 配置elasticsearch Java High Rest Client
- linux 系统扩容 VMware Centos---VMware ESXi
- LOJ2026 JLOI/SHOI2016 成绩比较 组合、容斥
- CentOS7- ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1548988705
- 加密类型、数据加密解密过程以及CA创建
- 2. premiere 项目管理
- JVM中对象是否已死
- tornado项目工程
- Django之路——5 Django的模板层
- 题解 洛谷P4872 【OIer们的东方梦】