前文介绍了iSCSI的基本架构及启动器的基本操作,也就是在客户端的操作。今天我们介绍一下目标器的相关概念、开源实现和基本操作。Linux操作系统下面有很多目标器的开源实现,比如LIO、SCST和TGT等,本文以CentOS下的LIO为例进行介绍。

LIO架构简介

Linux-IO Target在Linux内核中(linux 2.6.38后),用软件实现各种SCSI Target,其支持的SAN技术中所有流行的存储协议包括Fibre Channel(Qlogic,linux3.5)、FCoE(linux3.0)、iSCSI(linux 3.1)、iSER (Mellanox InfiniBand,linux3.10), SRP (Mellanox InfiniBand,linux3.3), USB等,同时还能为本机生成模拟的SCSI设备,以及为虚拟机提供基于virtio的SCSI设备。Linux-IO Target使用户能够使用相对廉价的Linux系统实现SCSI、SAN的各种功能,而不用购买昂贵的专业设备。

上图显示了Linux-IO Target的各个组件。LIO模拟了通用的SCSI设备,并且实现了SPC-3和SPC-4。接着,通过各种各样的backstore对象,来导入真正的后端存储,最后连接上各种前端Fabric模块,来导出模拟的SCSI设备。无论是Fibre Channel、FCoE、iSCSI还是vhost(即virtio),都只是一种Fabric技术,我们可以将其理解成传输协议,而在这些传输协议中传输的SCSI命令则总是由核心的SCSI设备处理的。要支持新的Fabric技术,并不需要修改核心的SCSI设备和后端存储模块,只需要按照该Fabric技术的规范实现对SCSI命令的传输就可以了。iSCSI技术就是把SCSI命令放在TCP/IP中传输,vhost技术就是把SCSI命令放在virtio队列中传输。

Generic Target Engine:实现了SAM中规定的一个SCSI target的功能,主要是SCSI协议的解析。它通过Fabric模块和initiator通信,通过backstore和具体的存储设备通信。
Fabric modules:实现了LIO的前端,即SCSI协议传输层的模块。可以通过Fabric Hardware Abstraction Layer(F-HAL)来为LIO增加新的fabric模块。
Backstores:实现了LIO的后端,即访问磁盘数据的方式。可以通过Storage Hardware Abstraction Layer(S-HAL)在LIO中增加新的存储硬件的支持。通常使用BLOCKIO和FILEIO。

配置管理方法

Linux-IO Target则在内核态实现了对Target的模拟,配置管理则采用了更为“现代化”的基于sysfs的方式,提供了友好的用户态管理工具。从内核的2.6.38版起,Linux内核都包含Linux-IO Target的相关模块。在用户态,各大发行版都打包了targetcli和rtslib,其中targetcli程序用于配置、管理,rtslib则提供Python编程接口。

targetcli简介
targetcli是Linux-IO Target的用户态的管理配置工具。用户可以使用yum或apt-get直接从各大发行版的官方仓库安装,对于较老的linux版本需要自己编译源码安装。targetcli提供一个类似shell的界面,各种Target、TPG、LUN、backstore对象则被组织成目录树的形式,用户可以用ls、cd命令来浏览目录树,用create、delete命令来创建和删除各种对象。浏览配置,就是浏览目录树,创建删除各种对象,就是在目录树的各级节点中创建新的节点。同时targetcli还提供了常见的shell命令辅助编辑功能,例如TAB智能补全、上下键切换命令历史、Ctrl + R搜索命令历史。凡是有不熟悉的命令,都可以用help命令查询使用说明。

安装targetcli

在CentOS 7下执行如下命令可以安装targetcli:

# yum -y install targetcli

启动target服务

# systemctl start target

设置开机启动服务

# systemctl enable target

如防火墙未关闭则设置防火墙运行3206端口,关闭则不用执行此步骤

# firewall-cmd--permanent --add-port=3260/tcp
# firewall-cmd-reload

配置目标器资源

我们这里配置一个目标器资源,并添加导出的磁盘资源,这样在启动器端就可以连接该目标器,并访问该磁盘资源了。目标器端的管理非常简单,就是通过targetcli实现对资源的管理。首先假设我们已经有一块独立的磁盘sdc了

1. root权限运行targetcli

# targetcli

2. 建立一个块存储
注意:server1.disk(名称server1可自定义),/dev/sdc为上面新建的分区名称。切换到如下目录,并执行创建命令

/> cd /backstores/block
/> create server1.disk /dev/sdc

3. 配置ISCSI Target命名
注意:命名在同一子网内确保是唯一的,命名格式为:iqn.yyyy-mm.<主机名反写>:自定义名称(自定义名称内不能有下划线)

/> cd /iscsi
/> create iqn.1997-05.com.test:itworld123

4. 创建ACL允许ISCSI客户机连接
注意:iqn.1997-05.com.test:client1为客户机ISCSI名称。

/>cd /iscsi/iqn.2017-03.com.example:disk1/tpg1/acls
/>create iqn.2017-03.com.example:client1

5. 创建lun(target块设备的逻辑单元)

/>cd /iscsi/iqn.1997-05.com.test:itworld123/tpg1/luns
/> create /backstores/block/server1.disk

至此,我们对Linux下的目标器(target)有了一个基本的了解,并且清楚了如何进行配置和资源导出。后续我们将对内核中LIO代码进行解析

iSCSI target介绍及LIO实操入门相关推荐

  1. SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化

    文章目录 前言 1 Velodyne激光雷达 2 配置网络 3 创建ROS工程 4 启动并可视化 5 录包与播放 总结 前言 好久没更新这部分了,最近在搞中期答辩的东西,简单补充一部分多线激光雷达建图 ...

  2. SLAM实操入门(七):使用Velodyne16线激光雷达与A-Loam进行三维SLAM

    文章目录 前言 1 A-LOAM 2 预备条件 2.1 Ubuntu和ROS 2.2 Ceres Solver(Ceres求解器) 2.3 PCL(Point Cloud Library) 3 创建A ...

  3. SLAM实操入门(五):无里程计仅使用激光雷达建图(GMapping算法)

    文章目录 前言 1 Gmapping算法 2 laser_scan_matcher库 2.1 安装laser_scan_matcher库 2.2 修改demo_gmapping.launch文件 3 ...

  4. SLAM实操入门(三):Ubuntu20.04安装Turtlebot3并运行SLAM例程仿真

    文章目录 前言 在Turtlebot3进行SLAM仿真 1 安装Turtlebot3依赖包 2 创建项目并安装Turtlebot3 3 使用Turtlebot3进行建图 4 使用扫描地图进行自动导航仿 ...

  5. 【网络工程】6、防火墙介绍及配置实操

    接上篇<5.路由器介绍及配置实操> 之前我们讲解了网络设备路由器的介绍,以及完成了路由器的相关配置实操.本篇我们来讲解防火墙的基础知识以及相应的实操案例. 一.什么是防火墙? 防火墙是一个 ...

  6. 【电机应用控制】——直流有刷电机驱动板/编码器介绍PID算法实操代码思路

    目录 前言 一.电机简介 二.直流有刷电机 1.基本知识 2.直流有刷驱动板 3.编码器介绍 三.PID算法 四.实操思路 1.单环控制 2.双环控制 3.三环控制 拓:闭环死区 总结 前言 声明:学 ...

  7. unity-概念与实操入门

    文章目录 编译器推荐(Rider) 坐标 世界坐标系 相对坐标系 资源商店快捷入口 地面制作 脚本 新建脚本 生命周期 vs测试打印 对象 标签(自带集合属性) 图层 预设体 创建预设体(cocos相 ...

  8. Linux入门笔记-尚硅谷韩顺平-基础篇实操篇

    文章目录 课程导论 基础篇 Linux入门 Linux介绍 Linux和Unix的关系 Linux和Windows比较 基础篇 Linux的目录结构 基本介绍 具体的目录结构 实操篇 vi和vim的使 ...

  9. 极简数据分析实操指南(下)

    科学方法必须包括:问题陈述.产生假设.收集数据.分析数据,然后获取结果并采取行动.......当你使用科学方法做事情时,你会更快取得成功. -- Bob Hayes 博士,百老汇商业总裁 前面我们已经 ...

最新文章

  1. 几张图帮你理解 docker 基本原理及快速入门
  2. 蔚来否认关闭硅谷办公室 近期也没有回科创板的计划
  3. seata 集群_阿里巴巴和蚂蚁金服联手搞事情: Seata 我们走~
  4. 数据结构c语言作业答案,数据结构C语言版第2版习题答案解析严蔚敏
  5. linux内核mtd驱动程序与sd卡驱动程序,Linux内核MTD驱动程序及SD卡驱动程序.doc
  6. 绑架、做空、造假…是谁搞垮了曾经的“网红公司”网秦?
  7. Android 代码设置默认输入法
  8. HOOK技术四-插件中Activity启动实战
  9. 为什么80%的企业会选择云产品?
  10. 论文录用后不想发了,撤稿会有什么影响吗?
  11. (附源码)php单招志愿采集系统 毕业设计 091409
  12. 「雕爷学编程」Arduino动手做(17)---人体感应模块
  13. 测试面试挫败_清晰度,初级工程师,要求和挫败感
  14. 无中继的DHCP配置-ZTE中兴路由器
  15. java 8函数式编程pdf 百度云盘链接
  16. 电脑开机密码忘了怎么办。
  17. 结合DDE指标来分析成本分布的重要作用
  18. java zip压缩文件
  19. A D 20:基于S T M 32的DDS信号源设计
  20. 自动驾驶核心技术之三:环境感知

热门文章

  1. 入门设计原则C++实现五:依赖倒置原则
  2. shell 特殊符号大全
  3. DFS基础-----刷题合集--1(全排列,八皇后,迷宫),让你明白DFS的基础用法
  4. 猿创征文 |【gin-vue-admin】后端结构设计和基本工作原理
  5. win api 路径操作函数
  6. 百度坐标转WGS84(即GPS)坐标
  7. 我灰是啥意思是什么_色彩老师说我的静物脏乱花灰是啥意思?
  8. 如何查看手机登录IP地址
  9. hypot函数、fmod函数
  10. MySQL主从之GTID主从