网站服务器服务商,网站上的高清图怎么做,蚁百杭州网站seo优化,移动互联网时代欧莱雅全渠道营销模式研究本文综合了几篇参考文献的内容#xff0c;做了删减与重组#xff0c;但严格来说#xff0c;不算原创。
笔者笔记如下#xff1a;
iSCSI initiator和target的核心功能都在内核中#xff0c;无须人工干预#xff1b;而要人工干预的大约是这么几件事#xff1a;
1. 建立…本文综合了几篇参考文献的内容做了删减与重组但严格来说不算原创。
笔者笔记如下
iSCSI initiator和target的核心功能都在内核中无须人工干预而要人工干预的大约是这么几件事
1. 建立iSCSI Initiator到iSCSI target的session虽也可自动发现但还是要有些配置
2. 建立LUN以便位于Initiator端的系统进行块设备的挂载
3. 将来不需要的时候可删除1和2中建立的LUN和iSCSI连接
至于应用程序将读写块设备大致路径是应用程序 - 系统调用 - 文件系统 - 内核 - iSCSI相应模块initiator or target - 网络协议栈 - 对端 1. SCSI协议
SCSI: Small Computer System InterfaceSCSI最初是一种专门为小型计算机系统设计的I/O技术但由于其架构和协议自身的优点后被广泛应用于实现DAS以及作为SAN的底层技术。
所有的SCSI设备是通过一根总线将其连接起来这个线就叫做SCSI总线。SCSI总线是SCSI设备之间传输数据的通路。SCSI总线又被称作SCSI通道。SCSI总线最终会连接到SCSI控制器上SCSI控制器也称为主机适配器HBA它控制着SCSI总线上所有的设备与计算器之间的通信。控制器既可以是插入可用插槽的卡也可以内置在主板上。
注SCSI连线长度一般不超过25米挂载的总设备数不超过16个除去SCSI控制器就是15个
因此SCSI控制器和SCSI设备的连接方式如下图所示 在SCSI总线末端上有一个终结器用来减小相互影响的信号维持SCSI链上的电压恒定。 1.1 SCSI基本概念介绍
SCSI ID
一个独立的SCSI总线按照规格不同可以支持8或16个SCSI目标设备可以称为Target每个SCSI目标设备都必须具有唯一的标识符(ID)才能正常工作。SCSI ID实际上就是这些目标设备的地址。
窄SCSI总线最多允许8个、宽SCSI总线最多允许16个不同的SCSI目标设备和它进行连接。但是一般SCSI控制器需要使用一个ID因此能使用的ID理论比实际要少一个。
LUN
在每一个SCSI目标设备Target下还可以连接多个逻辑设备如磁盘卷组等等为了让系统区分每一个逻辑设备因此每一个逻辑设备都有一个LUNLogical Unit Number来标识自己。每个SCSI ID最多有32个LUN默认从0开始不过0被占用了每一个LUN对应着一个逻辑设备。
SCSI通信模型
SCSI是一个C/S架构其中client端叫做initiator启动器服务器端叫做target目标设备。SCSI协议采用了分层的思想SCSI协议簇从上向下可以分为四层设备特定命令集共享命令集传输协议互联网层。并且SCSI的数据传输是以块的方式进行的。
CDB 命令描述块
SCSI的命令以及参数是填充在一定长度的数据块内传输的。这个数据块就是命令描述块即CDB. 典型的SCSI系统 2. iSCSI协议
虽然SCSI控制器可以连接多个存储设备形成自己的网络但是它只能与直接相连的存储设备进行通信只能在在局域网内部使用不能再以太网上共享。因此对于SCSI协议来说传输数据的距离是非常有限的。因此人们为了利用SCSI协议长距离的传输数据于是就研发了一种新的技术就是iSCSI协议。另有一个重要的原因是基于Fiber Channel的FC-SAN比较昂贵而基于iSCSI的IP-SAN就便宜很多。 iSCSI协议是一种新的存储技术它是将SCSI接口与以太网Ethernet技术结合起来工作的简单的说iSCSI协议是将用户的请求转换成SCSI规则编码然后再将这些数据封装在IP包中以便在以太网中进行传输的协议。 2.1 iSCSI协议的功能
iSCSI:internet Small Computer System Interface的缩写即Internet小型计算机接口。iSCSI技术是一种由IBM公司研究开发的是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集这种指令集合可以实现在IP网络上运行 SCSI协议使其能够在诸如高速千兆以太网上进行路由选择。它是基于TCP/IP协议的用来建立和管理IP存储设备、主机和客户机之间的相互连接并创建SAN。这样使得SAN利用SCSI协议应用在高速数据传输网络成为可能。这种传输是以块级别的方式在各个存储设备上进行的。
2.2 iSCSI的结构
由于SCSI协议是一个C/S架构因此iSCSI协议也是一个C/S结构其中client是initiator,server端为target。iSCSI协议的主要功能是利用TCP/IP网络在主机系统可称为initiator和目标存储设备称为target之间进行大量的数据封装和可靠传输过程。此外iSCSI协议还将SCSI协议封装在IP网络上并且运行在TCP上。 因此ISCSI协议的协议栈为下图所示 2.3 iSCSI协议的工作原理
当iSCSI主机发起数据读写操作后操作系统会生成一个SCSI指令集然后该SCSI指令集在iSCSI initiator端被封装成iSCSI消息包并通过TCP/IP网络传输到存储区域当存储区域的iSCSI target收到iSCSI消息包时会将其解开读取其中的SCSI指令然后再将其SCSI指令传送给SCSI设备执行其指令。当SCSI指令被执行后返回的数据经过SCSI设备传送给iSCSI target时被封装为iSCSI的响应PDU然后再通过TCP/IP网络传输给iSCSI initiator端iSCSI initiator解开其iSCSI PDU包读取其中的SCSI响应内容并将其提交给操作系统进行处理然后操作系统在将其处理后的内容返回给应用程序。 2.4 iSCSI的优点
iSCSI最大的优点就是节约成本利用iSCSI协议构建一个存储网络除了需要存储设备交换机、线缆还有以太网接口以外基本就不需要其他的设备了只需要在现有的网络上安装iSCSI就可以实现构建一个比较大的存储网络了。 2.5 iSCSI基本概念
iSCSI客户端 (iSCSI Initiator)
iSCSI客户端为iSCSI initiator这是I/O操作的发起者。在RedHat Linux系统中可以通过软件来模拟需要安装iSCSI设备驱动。如iscsi-initiator-utils.rpm iSCSI initiator具有的特性 a) 既然是I/O操作的发起者需要通过发现过程请求远端快设备。 b) 它可以与target进行持久连接 c) Linux中可以通过软件方式来实现
iSCSI服务器端 (iSCSI Target)
iSCSI服务器端为iSCSI target这是I/O操作的执行者。在RedHat Enterprise Linux中可以使用scsi-target-utils软件包来模拟实现。 iSCSI target端具有的特性 a) 需要导出一个或多个块设备供启动者initiator使用 b) 可以通过硬件和软件的方式来实现
iSCSI target设备名称
iSCSI target名称必须是全球唯一的其格式为
iqn.yyyy-mm.tld.domain.some.host[:identifier]# iqniSCSI target名称必须是以iqn开头的
# yyyy-mm表示的是时间
# tld.domain.some.host这个表示的是一个反过来写的域名
# identifier这个可以是任意字符串
# 如iqn.2015-03.com.xsl.www:storge.disk1
逻辑单元号LUN
LUN ID由iSCSI目标设备Target分配。iSCSI 启动端Initiator设备当前支持在每个目标设备Target中导出最多256个LUN。即最大支持16个target。 对于LUN比较通俗的理解就是磁盘分区、LVM卷组、RAID等等。
Target 即“储存设备”Storage Device也就是存放数据的硬盘以硬盘阵列居多。在使用iSCSI时会在 iSCSI 储存设备上去建立 LUNLogical Unit Number来提供给具备 iSCSI Initiator 功能的主机来存取 数据的。LUN 好比是个“逻辑单位磁碟”物理上通常是由数个实体磁碟 RAID 或 LVM 技术的技术实现所组成。 2.6 iSCSI的发现机制
iSCSI发起端为了和iSCSI目标端建立iSCSI会话initiator需要知道target的 IP地址TCP端口号和名字 三个信息。iSCSI发现的目的是为了让iSCSI发起端获取一条到iSCSI目标端的通路。iSCSI有三种发现机制
a. 静态配置
在iSCSI发起端已经知道iSCSI目标端的IP地址TCP端口号和名字信息时iSCSI发起端不需要执行发现。iSCSI发起端直接通过IP地址和TCP端口来建立TCP连接使用iSCSI目标端的名字来建立iSCSI会话。这种发现机制比较适合比较小的iSCSI体系结构
b. SendTarget发现
在iSCSI发起端知道iSCSI目标端的IP地址和TCP端口的情况下iSCSI使用IP地址和TCP端口号建立TCP连接后建立发现对话。iSCSI发起端发送SendTarget命令查询网络中的存在的iSCSI信息。这种方法主要用于网关设备iSCSI发起端被静态配置连接到指定的iSCSI设备。iSCSI发起端和iSCSI网关设备建立对话并发送SendTarget请求给iSCSI网关设备。iSCSI网关设备返回一系列和它相连的ISCSI目标端的信息。iSCSI发起端选择一个目标端来建立对话。
c. 零配置发现
这种机制用于iSCSI发送设备完全不知道iSCSI目标端的信息的情况下。iSCSI发起端利用现有的IP网络协议SLPService Location Protocol for Discovery,服务定位协议。iSCSI目标端使用SLP来注册iSCSI发起端可以通过查询SLP代理来获得注册的iSCSI目标端的信息。当iSCSI目标端加入到网络中的时候拓扑结构也随之改变。虽然这种方法增加了实现的复杂性但它不需要重新配置发起端即可找到新的目标端。 2.7 iSCSI设备具有的特性
支持报头和数据摘要支持两种挑战握手协议CHAPChallengeHandshake Authentication Protocol的认证方式目标端支持R2TReadytoTransfer)流控制从RHEL4U2开始支持多通道multipath支持sendtargets发现机制支持动态目标端发现具备异步事件通知入口支持即时数据更新支持动态设备重配支持自动挂接iSCSI技术支持IPV6技术
2.8 iSCSI设备名称
iSCSI设备在iSCSI启动端Initiator导入的时候其内核将按当前的设备情况给iSCSI设备分配一个本地SCSI设备名例如/dev/sda或/dev/sdb等如果导入的iSCSI设备已被分区在导入iSCSI设备建立本地SCSI设备的同时也会建立相应的分区设备名例如/dev/sda1、/dev/sda5等等但是此SCSI设备名并不是每次导入是都是固定的比如你的主机之前没有/dev/sda设备你导入了iSCSI设备其被内核命名为/dev/sda;之后你将其取消了导入并重新挂接了一个热插拔设备如U盘或移动硬盘这个热插拔设备占据的/dev/sda设备你又重新导入了iSCSI设备此时其被内核分配的设备名就成了 /dev/sdb。 3. tgtadm的使用
tgtadm是一个服务器端管理配置工具它也是一个模式化的命令其常见的模式有target、logicalunit、account 3.1 target模式
tgtadm --lld driver --mode target --op {new|delete|show|update|bind|unbind} [option]
其中driver一般为iscsi --op后面的参数表示要进行的操作
new: 增加一个target语法格式为--tid id --targetname namedelete删除一个target语法格式为delete --tid idshow显示所有的target后面可以接某个target的id只显示某个target的信息。格式为show [--tid id]update修改某个特定的target的参数。格式为update --tid id --name param --value valuebind将某个特定的initiator和target绑定在一起表示只接受特定的initiator的请求。语法格式为 bind --tid id --initiator-address addressunbind解绑。语法格式为unbind --tid id --initiator-address address 3.2 logicalunit模式
tgtadm --lld driver --mode logicalunit --op {new|delete} [option]
其中driver一般为iscsi--op后面的参数表示要进行的操作
new: 新建一个LUN语法格式为new --tid id --lun lun --backing-store device-path --bstype type --bsoflags delete: 删除一个LUN语法格式为delete --tid id --lun lun 3.3 account模式
tgtadm --lld driver --mode account --op {new|delete|bind|unbind} [option]
其中,driver一般为iscsi--op后面的参数表示要进行的操作
new: 新建一个账号和密码格式为new --user name --password passdelete: 删除某个已有的账号格式为delete --user namebind在某个特定的target上添加账号格式为bind --tid id --user name [--outgoing]如果使用了--outgoing选项将被添加作为出去的账号来使用。unbind在某个特定的target上删除某个账号。其格式为account --op unbind --tid id --user name 在tgtadm命令中某些长选项可以使用短选项来代理如 --lld-L--tid-t--lun-l--backing-store-b--initiator-address-I--targetname targetname-T 4. iscsiadm的使用
iscsiadm是一个客户端的管理工具它也是一个模式化的工具其模式可通过-m或--mode选项指定常见的模式有discovery、node、fw、session、host、iface几个。这些模式的主要功能如下
discovery: 用于发现某服务器是否有target输出以及输出了哪些targetnode: 管理跟某target的关联关系session用于显示所有的活动会话和连接fw显示所有的启动固件值host显示所有的iSCSI主机iface显示/var/lib/iscsi/ifaces目录中的所有ifaces设定
4.1 discovery模式
iscsiadm -m discovery [ -d debug_level ] [ -I iface -t type -p ip:port [-l ] ]
discovery模式下可用选项
-d, --debug 显示debug信息级别为0-8-l, --login 表示登录target的意思-t, --type 这里可以使用的类型为sendtargets(可简写为st)、slp、fw和 isns此选项仅用于discovery模式且目前仅支持st、fw和isns其中st表示允许每个iSCSI target发送一个可用target列表给initiator-p, --portal 指定target服务的IP和端口-m, --mode 可用的mode有discovery, node, fw, host iface 和 session
4.2 node模式
iscsiadm -m node [ -d debug_level ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ]
node模式下可用选项
-L --loginall 表示登录到所有发现的target设备上。all表示登录到所有的target设备上manual表示手动登录automatic表示自动登录。-T, --targetname 用于指定target的名字-u, --logout 从target设备上登出-s, --stats 显示session统计信息-o, --op指定针对discoverydb数据库的操作其仅能为new、delete、update、show和nonpersistent其中之一-I, --interface指定执行操作的iSCSI接口这些接口定义在/var/lib/iscsi/ifaces中
4.3 session模式
iscsiadm -m session -s # 显示会话的相关信息
4.4 客户端配置文件/etc/iscsi/iscsid.conf
这个文件中的主要参数有如下
node.startup 设置启动方式可选的参数有auotmatic 和manualnode.session.auth.authmethod 设置使用CHAP认证方式默认为NONEnode.session.auth.username target端认证所需initiator提供的用户node.session.auth.password target端认证所需initiator提供的密码node.session.auth.username_in initiator端认证所需target提供的用户node.session.auth.password_in initiator端认证所需target提供的密码discovery.sendtargets.auth.authmethod 设置使用CHAP认证方式用以发现target端导出的设备默认为NONEdiscovery.sendtargets.auth.username 发现操作时target端认证所需initiator提供的用户discovery.sendtargets.auth.passwd 发现操作时target端认证所需initiator提供的密码discovery.sendtargets.auth.username_in 发现操作时initiator端认证所需target提供的用户discovery.sendtargets.auth.password_in 发现操作时initiator端认证所需target提供的密码
4.5 客户端的认证方式
客户端的认证方式有2种一种是基于ip认证的另一种是基于用户认证的使用的认证协议为CHAP。同时iscsi-initiator-utils不支持discovery的认证。对于用户认证而言必须先配置基于ip认证然后才可以配置基于用户认证。 参考文献
http://blog.51cto.com/xslwahaha/1617781
https://blog.csdn.net/qq776306395/article/details/27490977
https://wenku.baidu.com/view/5aa43ef6f705cc175527097b.html