linux网络存储服务器iscsi详细介绍分析
一,概述
SCSI最初是一种专门为小型计算机系统设计的I/O技术,但由于其架构和协议自身的优点,后被广泛应用于实现DAS以及SAN的底层技术。
SCSI的定义:
SCSI: Small Computer System Interface
SCSI是一种I/O技术
SCSI规范了一种并行的I/O总线和相关的协议
SCSI的数据传输是以块的方式进行的
SCSI的特点:
设备无关性
多设备并行
高带宽
低系统开销
SCSI总线:
SCSI总线是SCSI设备之间传输数据的通路
SCSI总线又被称作SCSI通道
SCSI终结器:
SCSI终结器位于SCSI总线的末端,用来减小相互影响的信号,维持SCSI链上的电压恒定
SCSI链的最后一个SCSI设备需要使用终结器
SCSI链上的中间设备是不需要使用终结器的
SCSI控制器:
SCSI总线通过SCSI控制器来和硬盘之类的设备进行通信
SCSI控制器逻辑上可分为一个任务管理单元和多个逻辑单元(LU)
SCSI ID:
一个独立的SCSI总线按照规格不同可以支持8或16个SCSI设备,设备的编号需要通过SCSI ID来进行控制,系统中每个SCSI设备都必须有自己唯一的SCSI ID,SCSI ID实际上就是这些设备的地址,窄SCSI总线最多允许8个、宽SCSI总线最多允许16个不同的SCSI设备和它进行连接。
LUN:
LUN(Logical Unit Number,逻辑单元号)是为了使用和描述更多设备及对象而引进的一个方法,每个SCSI ID上最多有32个LUN,一个LUN对应一个逻辑设备。
SCSI连接示意图:
二,linux下ISCSI的实现:
ISCSI 是基于TCP/IP传输封装的SCSI数据包的块级别的共享,其也为C/S架构模型,服务器端提供客户端所需要的存储设备,客户端只需要进行挂载就可以将其当作自己主机上的存储设备进行分区、格式话使用。
实现ISCSI需要的2个角色:
iSCSI target(server)
存储资源所在的iSCSI服务器被称为“target”。iSCSI target通常是一个硬盘存储设备。当前大部分的主流操作系统都提供了配合iSCSI target使用的客户端软件initiator。
iSCSI initiator(client)
initiator就是iSCSI传输的服务端。典型的initiator都有共同的目的,就是作为一个SCSI总线的适配器,代替物理上的SCSI设备(类似硬盘或者磁带)。iSCSI initiator通过IP网络传输SCSI命令。
实验环境
15 CentOS?6.4 x86_64 target server
16 CentOS 6.4 x86_64 initiator client
17 CentOS 6.4 x86_64 initiator client
首先在target server上安装scsi-target-utils
[root@tgtd ~]# yum -y install scsi-target-utils
[root@tgtd ~]# cp /etc/tgt/targets.conf /etc/tgt/targets.conf.bak
编辑target配置文件,定义target
[root@tgtd ~]# vi /etc/tgt/targets.conf
# 添加如下内容
backing-store /dev/sdb
initiator-address /24
incominguser luojianlong mypass
[root@tgtd ~]# service tgtd restart
backing-store:指定后端要共享的磁盘编号
initiator-address:授权客户端访问的网络地址
incominguser:设置登录用户的账号密码
启动target并查看
[root@tgtd ~]# tgtadm -L iscsi -m target -o show
Target 1: .luojianlong:target1
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes