Linux中三种SCSI target的介绍之SCST
1. 简介
Linux通用的SCSI 目标子系统(SCST)是一个为Linux
SCSI目标子系统的另一种实现。它是由英国著名存储开发团队ID7研发,目前由SanDisk管理(收购了Fusion
IO)。它的出现要早于LIO,功能也比LIO完善,目前的用户是许多提供存储解决方案的大公司如EMC,IBM,HP采用。它提供Linux内核之间和处理和SCSI目标驱动程序的统一的,一致的接口,同时提供Linux内核与存储后端句柄连接,连接真实或模拟的存储后端与目标驱动程序。SCST支持主流的SCSI数据传输方式,包括光纤通道,iSCSI,SAS,InfiniBand和并行(宽)的SCSI。
2. 架构
虚线上方主要是用户态管理工具,scst
core实现在内核中,中间蓝色为核心子系统(位于SCSI top
layer),其代码框架设计合理,将target具体驱动封装成可注册的插件驱动,如我们经常会用到的就是iscsi-scst插件,通过这个驱动程序我们可以在以太网上做iscsi协议的访问,即iscsi
over tcp/ip,后续会继续分析initiator端开源驱动open-iscsi,再详细介绍iscsi协议。
同时,除了必备的target插件驱动,scst内核核心系统也支持了几个存储设备驱动,从外部使用上就是我们经常在配置scsi设备导出时可选择的导出方式,比如blockio
或者 fileio导出,或者 pass through,这几种导出方式在scst
内核其实是由几个专用的存储驱动完成的,它们也实现为可注册插件的形式。
SCST core:实现了协议无关的SCSI处理功能。
Target drivers:实现了SCSI协议的传输层功能。
Storage drivers:实现了SCST的后端存储驱动
3. 安装、使用和配置
3.1 安装
1)下载源码,因为scst的代码使用svn托管在sourceforge上,所以需要安装svn软件
svn co https://scst.svn.sourceforge.net/svnroot/scst/trunk scst
2)准备kernel,因为scst没有加入到linux的内核中,所以为了达到很好的性能,需要在向内核中打入scst自己的patch并重新编译内核。
- # cd /var/Jevon/linux-3.18.16
- # patch -p1 < /root/scst/iscsi-scst/kernel/patches/put_page_callback-3.18.patch
- # make clean
- # make menuconfig
- Select Networking support -> Networking options -> TCP/IP networking
- Select Networking support -> Networking options -> TCP/IP zero-copy transfer completion notification
- Select Device Drivers -> SCSI device support -> SCSI disk support
- Select Enable the block layer -> IO Schedulers -> CFQ I/O Scheduler
- Set Enable the Block layer -> IO Schedulers -> Default I/O Scheduler to 'CFQ'
- Set Processor type and features -> Preemption Model to 'No Forced Preemption (Server)'
- # make bzImage
- # make modules
- # make modules_install
- # make install
- # vim /etc/grub/grub.conf //设置启动新内核
- # reboot
3)编译安装
- # make 2perf
- # make scst scst_install -j24
- # make iscsi iscsi_install -j24
- # make scstadm scstadm_install -j24
4)启动相应的服务,假设这里使用iSCSI协议
- <pre name="code" class="plain"># modprobe scst
- # modprobe scst_disk
- # modprobe scst_vdisk
- # modprobe iscsi-scst
- # lsmod |grep scst
- isert_scst 51996 4
- iscsi_scst 92286 5 isert_scst
- scst_vdisk 93522 0
- scst 869809 2 iscsi_scst,scst_vdisk
- rdma_cm 44234 2 isert_scst,ib_iser
- ib_core 88413 7 isert_scst,ib_iser,rdma_cm,ib_cm,iw_cm,ib_sa,ib_mad
- libcrc32c 12644 4 iscsi_scst,scst_vdisk,dm_persistent_data,xfs
3.2 配置1)通过scstadm配置iscsi target
- 1a) 创建block设备
- scstadmin -open_dev disk03 -handler vdisk_blockio -attributes filename=/dev/sdc1
- 1b) 创建target
- scstadmin -add_target iqn.2011-08.nl.feka:storage.vdisk1 -driver iscsi
- 1c) 创建lun
- scstadmin -add_lun 0 -driver iscsi -target iqn.2011-08.nl.feka:storage.vdisk1 -device disk03
- 1d) 启动target
- scstadmin -enable_target iqn.2011-08.nl.feka:storage.vdisk1 -driver iscsi
- 1e) 使用iscsi driver
- scstadmin -set_drv_attr iscsi -attributes enabled=1
- 1f) 写入配置文件
- scstadmin -write_config /etc/scst.conf
2)通过配置文件配置
# cat /etc/scst.conf
- HANDLER vdisk_blockio {
- DEVICE disk01 {
- filename /dev/iscsilun/iscsilun0
- }
- DEVICE disk02 {
- filename /dev/iscsilun/iscsilun1
- }
- }
- TARGET_DRIVER iscsi {
- enabled 1
- TARGET iqn.2007-05.com.example:storage.disk1.scst.jevon {
- LUN 0 disk01
- LUN 1 disk02
- enabled 1
- }
- }
- # /etc/init.d/scst start
- # iscsi-scstd
注意如果改变了scst的配置一定要重启scst。
3.3 使用
按照以上的配置,你可以得到一个iscsi target。通过iscsiadm就可以访问这个target,具体访问方式在之前的文章已经介绍过,这里就不再赘述了。
Linux中三种SCSI target的介绍之SCST的更多相关文章
- Linux中三种SCSI target的介绍之STGT
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...
- Linux中三种SCSI target的介绍之各个target的优劣
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...
- Linux中三种SCSI target的介绍之LIO
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...
- 在Linux中三种让crontab每秒执行任务的方法
第一种方法: 1.创建脚本文件 cat phplog.sh 2.编辑脚本内容 #!/bin/bash while : ;do /home/scripts.sh 2>/dev/null & ...
- Linux 的三种软件安装包介绍
通过RPM软件包来安装 说起RPM(RedHat Package Management)标准的软件包,大家可能都会想起大名鼎鼎的REDHAT公司,正是RPM软件包发行方式的出现,使Linux中的应用软 ...
- HTML中使用js的三种方式及优缺点介绍
1.内部js: 在直接在页面的<script></script>标签内写js代码 优点:相对于使用行内js,内部js代码较为集中,与页面结构的实现代码耦合度较低,比较便于维护 ...
- Ubuntu Linux系统三种方法添加本地软件库
闲着没事教教大家以Ubuntu Linux系统三种方法添加本地软件库,ubuntu Linux使用本地软件包作为安装源——转2007-04-26 19:47新手重新系统的概率很高,每次重装系统后都要经 ...
- Spring中三种配置Bean的方式
Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...
- 深入浅出spring IOC中三种依赖注入方式
深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ...
随机推荐
- [LOJ6432] [PKUSC2018] 真实排名
题目链接 LOJ:https://loj.ac/problem/6432 Solution 假设我们当前要算\(x\)的答案,分两种情况讨论: \(x\)没被翻倍,那么\([a_x/2,a_x]\)这 ...
- Spring Cloud Alibaba学习笔记(22) - Nacos配置管理
目前业界流行的统一配置管理中心组件有Spring Cloud Config.Spring Cloud Alibaba的Nacos及携程开源的Apollo,本文将介绍Nacos作为统一配置管理中心的使用 ...
- 如何为非常不确定的行为(如并发)设计安全的 API,使用这些 API 时如何确保安全
原文:如何为非常不确定的行为(如并发)设计安全的 API,使用这些 API 时如何确保安全 .NET 中提供了一些线程安全的类型,如 ConcurrentDictionary<TKey, TVa ...
- IIS初始化设置预加载,解决程序池被回收第一次访问慢问题
问题现象: 部署到IIS上的项目,第一次访问比较慢,有时后空闲一段时间去访问也会很慢,经常隔天访问也会慢.这就是IIS回收导致的问题,IIS回收把程序池的内存释放,网站就相当与重启的状态,被回收后,我 ...
- Java Web 深入分析(11) JVM 体系结构与工作方式
jvm体系 jvm简介 java virtual machine jvm体系详解 jvm工作机制 虚拟机怎么执行代码 jvm为何基于栈 执行引擎 执行引擎过程 java调用栈 总结
- Eclipse开发环境(一):下载和安装
一.Eclipse下载及安装 1. 下载 进入官网https://www.eclipse.org/,点击 IDE & Tools 选择Java EE 选择Luna Packages 选择Win ...
- 前端以及django零碎补充
前端 1. js的循环each 前端需要循环,可以借助each这个方法 var dic = {'key1':'value1','key2':'value2'}; ']; //each(变量, 方法) ...
- ios开发之NSData
NSData用于保存字节数组. 初始化 - (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length free ...
- SpringBoot+SpringCloud+vue+Element开发项目——集成Swagger文档
在pom.xml文件中添加Maven依赖 <!--swagger--> <dependency> <groupId>io.springfox</groupId ...
- django后台标题替换
在制作django后台的时候,默认的django admin界面标题为“django管理”,找了许多的资料都很麻烦,偶与好友一起探讨,找到了新的解决方法 在django的py文件中插入 from dj ...