免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1678 | 回复: 0
打印 上一主题 下一主题

[存储网络] 一步一步教你构建iscsi服务器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-30 00:17 |只看该作者 |倒序浏览

摘 要
架设iscsi服务器是为了能让QA人员在测试SAN的准备阶段能够更好的认识和了解iscsi
服务器的工作环境和工作原理以及target端和initiator端的相关命令操作,同时在测 试SAN的过程中进行相关验证。本文讲解了在linux端构建iscsi服务器,在windows  2000/linux端构建iscsi客户端的相关知识和技术心得。读者阅读此文不但能充分理解 iscsi的技术知识,了解iscsi_san,还能通过文章的讲解自己动手构建iscsi服务器和 客户端,并成功的实现连接。
关 键 词
SAN:存储区域网络
NAS:网络附加存储
HBA:ISCSI主机适配器
IETF:互联网工程任务组
SCSI:小型计算机系统接口
BLOCK:数据块
FC:光纤通道
INITIATOR:客户端,在SAN架构中即为请求存储一方。
TARGET:服务端,在SAN架构中即为提供存储一方。
ISCSI:INTERNET SCSI或TCP/IP OVER SCSI,即把SCSI技术与INTERNET上应用
TCP/IP技术相结合,在IP网络上传输SCSI数据。
LUN:逻辑单元号
IPSEC:IP协议提供,实现的内容包括完整性、认证、机密性、保险单安全关联和秘鈅 管理
1 相关工程背景简介和应用介绍
1.1 工程背景介绍
  2003年2月11日,IETF(Internet Engineering Task Force,互联网工程任务组) 通过了ISCSI(Internet SCSI)标准,这项由IBM、Cisco共同发起的技术标准,经过 三年20个版本的不断完善,终于得到IETF认可。这将吸引更多的厂商参与到相关产品 的开发中,也会推动更多的用户采用ISCSI解决方案。作为早已被广泛传播的网络存储 技术,很多读者都对这项技术耳熟能详。个人认为ISCSI技术最重要的贡献在于其对传 统技术的继承和发展上:其一,SCSI(Small Computer Systems Interface,小型计 算机系统接口)技术是被磁盘、磁带等设备广泛采用的存储标准,从1986年诞生起到 现在仍然保持着良好的发展势头;其二,沿用TCP/IP协议,TCP/IP在网络方面是最通 用、最成熟的协议,且IP网络的基础建设非常完善。这两点为ISCSI的无限扩展提供了 夯实的基础。
ISCSI协议定义了在TCP/IP网络发送、接收block(数据块)级的存储数据的规则和方 法。发送端将SCSI命令和数据封装到TCP/IP包中再通过网络转发,接收端收到TCP/IP 包之后,将其还原为SCSI命令和数据并执行,完成之后将返回的SCSI命令和数据再封 装到TCP/IP包中再传送回发送端。而整个过程在用户看来,使用远端的存储设备就象 访问本地的SCSI设备一样简单。支持ISCSI技术的服务器和存储设备能够直接连接到现 有的IP交换机和路由器上,因此ISCSI技术具有易于安装、成本低廉、不受地理限制、 良好的互操作性、管理方便等优势。
在这里,介绍一个概念,即IP Storage(IP存储)。在ISCSI技术不断完善的过程中, 这个概念也早已被推向市场。简单的说,IP存储就是基于IP网络来实现数据块级存储 的方式。由于ISCSI技术的固有优势,IP存储更是让很多用户翘首以待,希望能够出现 一种大而统一的方式,真正将存储规范化。
以电子商务为代表的各种网络服务业的飞速发展,对网络存储提出了更高的要求,并 由此诞生了许多先进的网络存储技术。其中最有代表的是SAN,而尤为突出的是iSCSI  SAN,即融入了基于网络的小型计算机标准接口的SAN。当前,电子商务的迅猛发展, 对电子商务基础架构(网络设备,软件系统,存储系统)提出了越来越高的要求。电 子商务既需要又生成海量数据,而这些不断扩展的海量数据又必须进行存储和管理, 因此,电子商务企业必须要处理呈爆炸式增长的数据,并使这些数据可供分布在全球 的雇员、客户和合作伙伴所使用。基于这种必然的需求,网络存储已被IT界所重视。
网络存储设备提供网络信息系统的信息存取和共享服务,具有超大存储容量、超高数 据传输率及良好的系统性能等特征。网络数据和信息的急剧增加也必将带来网络存储 服务市场的迅速增长,Forrester Research的调查表明,《财富》1000家企业2002年 存储需求的增长率达到100%,有些公司甚至高达300%。作为电子商务企业,建立一个 扩展性好、兼容性强、跨平台、管理方便、安全可靠的企业存储系统是其电子商务整 体战略的重要组成部分。
1.SAN技术和NAS技术
在传统企业数据存储框架上,存储设备大都是依附在服务器后面的固定通道上,彼此 无法作有效的联接。如果要存取服务器上的信息,则必须通过LAN连接,这样既占据了 带宽,又浪费了服务器的CPU资源。管理分布的数据系统,也是一件耗费人力的过程。 特别是由于不同产品和平台的不兼容性,使得企业需要聘请许多熟悉不同产品和平台 的员工。而且在各地的存储重复,浪费了企业大量的资金。显而易见,传统的存储技 术已经满足不了电子商务对信息存储的要求了,这时存储系统从硬件到软件都必须从 单机上脱离出来,形成独立的网络存储体系。而存储区域网SAN(Storage Area  Networks)和网络接入存储NAS(Network Attached Storage)就是这类技术产品。
1.1 NAS技术
NAS是部件级的存储方法。它将存储设备通过标准的网络拓扑连接到一组计算机上,不 需要服务器和通用的操作系统,而用一个面向用户设计的、专门用于数据存储的简化 操作系统就可以直接上网,由于这个系统内置了与网络连接所需的协议,因此,系统 的整体管理与维护显得简单快捷。NAS是真正的Plug-In(即插即用),物理位置的安 放很灵活,可放在工作组以外的其他地点。NAS适用于网络文件服务模式,如CAD、软 件开发、电子邮件等。
1.2 SAN技术
SAN将存储设备作为网络上的一个区域独立出来,通过使用光纤通道的数据专用网络区 域,来实现大容量外存设备和服务器间的数据交换。SAN一方面实现了大容量的集中存 储,另一方面不受到网络环境的制约,因为存储设备的网络是独立于局域网而独立存 在的。SAN主要用于诸如客户机/服务器(client /server)运算架构应用模式、数据库 等需要专门或高效储存设备的大容量存储环境。
NAS虽然价格低廉,但是却受到带宽消耗的限制,无法完成大容量的存储应用,而且系 统难以满足开放性的要求,所以在电子商务领域中,SAN用的较多,下面主要介绍SAN 。
2.SAN技术原理
2.1 SAN的结构
SAN允许存储设备和处理器(服务器)之间建立直接的高速网络连接,通过这种连接实 现只受光纤线路长度限制的集中式存储。SAN可以被看作是存储总线概念的一个扩展, 它使用LAN和WAN中类似路由器、集线器、交换机和网关的单元,实现存储设备和服务 器之间的互连。SAN可在服务器间共享,也可以为某一服务器所专有,既可以是本地的 存储设备也可以扩展到其他地理区域。SAN的接口可以是企业系统连接(ESCON)、小 型计算机系统接口(SCSI)、串行存储结构(SSA)、高性能并行接口(HIPPI)、光 纤通道(FC)或要重点阐述的、即将成为标准的iSCSI技术。
SAN是一个集中式管理的高速存储网络,由多供应商存储系统、存储管理软件、应用程 序服务器和网络硬件组成,能够帮助企业充分利用所拥有的商业信息的价值。由于SAN 的基础是存储接口,是与传统网络不同的服务器后台网络,突破了传统网络的带宽瓶 颈。
SAN通过以下三种方式支持服务器与存储设备之间的直接高速数据传输:
服务器到存储设备:这是服务器与存储设备之间的传统的相互作用模式,其优点在于 多个服务器可以串行或并行地访问同一个存储设备。
服务器到服务器:SAN可用于服务器之间的高速大容量数据通信。
存储设备到存储设备:通过这种外部数据传输能力,可以在不需要服务器参与的情况 下传输数据,从而使服务器能更多地处理其他应用程序等。
2.2 SAN的特性
和传统的网络相比,SAN有以下特性:
(1)传输速度高、距离远,可提高资料的使用率,对电子商务全球化是一个有力的推 动。
  (2)资源与设备共享,是B to B电子商务模式中企业合作的契合点。
  (3)可作远程镜像,增强系统的灾难防御能力及重建速度,对安全、容错和快速 恢复的电子商务领域应用非常有效。
  (4)通过SAN备份,降低经过LAN备份的流量负载,减轻企业内部的带宽压力,提 高网络服务质量。
  (5)集中管理与整合储存设备资源,为企业节约大量管理时间与人力资源。
现在的SAN大多是基于光纤通道(Fiber Channel)技术。齐标准制定于20世纪90年代 初期,它允许多系统访问数据,对双绞线等其他物理介质的支持也非常出色,它的传 输距离达到了10公里。
目前,许多网络存储提供商致力于将SAN中使用的光纤通道设定为一种实用标准,但是 其架构的建设成本高,远非一般企业所能够承受。iSCSI的出现解决了这个问题。 “iSCSI”(互联网小型计算机接口)标准把存储设备和服务器与应用普通互联网协议 建立起来的网络结合在了一起,而不是使用速度更快但是价格更昂贵、更复杂的光纤 通道技术,为众多中小企业对经济合理和便于管理的存储设备提供了直接访问的能力 。
3.iSCSI技术
3.1 iSCSI体系结构
iSCSI是Internet SCSI,也叫SCSI over TCP/IP。顾名思义,它是建立在TCP/IP协议上 的互联网协议。iSCSI是一种端到端的协议,运行在服务器(被称为initiators,即发 起端)、存储设备(被称为target,即目标端)和协议传输网关设备之间。iSCSI使用 标准的以太网交换机的路由器来在服务器和存储设备之间传输数据。图3是iSCSI协议 层次模型。
iSCSI建立在两个使用最广泛的协议之上。在存储方面,iSCSI采用的是SCSI的命令设 置。SCSI是贯穿于所有存储配制间的核心协议,它是一个用于同I/O设备进行通信的流 行协议,SCSI体系结构是基于客户端/服务器(C/S)模型的,和SAN的架构恰好吻合。 在网络协议方面,iSCSI基于TCP/IP这个最基础、最普遍的协议。iSCSI的协议模型在 TCP/IP的传输层以上插入iSCSI子层,起到封装和解封装的作用,它使用的是iSCSI  PDU(iSCSI Protocol Data Units,iSCSI协议数据单元)。图4是iSCSI PDU封装后的 模型。
iSCSI PDU类型有:SCSI Command ,SCSI Response ,Task Management Function  Request ,Task Management Function Response ,SCSI Data-out ,SCSI Data-in  ,Ready to Transfer ,Asynchronous Message ,Text Request ,Text Response  ,Login Request ,Login Response ,Loginout Request ,Loginout Response ,SNACK  Request ,Reject ,NOP-Out ,NOP-In.
3.2 iSCSI工作机制
iSCSI的工作流程是iSCSI协议在网络上封包和解包的过程。在网络的一端,数据包被 封装成包括TCP/IP头、iSCSI识别包和SCSI数据三部分内容,传输到网络另一端时,这 三部分内容分别被顺序地解开。iSCSI系统由一块SCSI卡发出一个SCSI命令,命令被封 装到第四层的信息包中并发送。接收方从信息包中抽取SCSI命令并执行,然后把返回 的SCSI命令和数据封装到IP信息包中,并将它们发回到发送方。系统抽取数据或命令 ,并把它们传回SCSI子系统。所有这一切的完成都无需用户干预,而且对终端用户是 完全透明的。为了保证安全,iSCSI有自己的上网登录操作顺序。在它们首次运行的时 候,启动器(initiator)设备将登录到目标设备中。任何一个接收到没有执行登录过 程的启动器的iSCSI PDU目标设备都将生成一个协议错误,而且目标设备也会关闭连接 。在关闭会话之前,目标设备可能发送回一个被反馈的iSCSI PDU。这种安全性是有限 的,因为它只保护了通信的启动,却没有在每个信息包的基础上提供安全性。
要保证连接成功后IP层的安全,则要利用IPSec进行包保护,在终端之间提供安全通道 。IPSec实现的内容包括完整性和认证、机密性、保险单安全关联和密钥管理。
iSCSI错误处理和恢复包括恢复方法,超时管理、错误处理、失败处理以及恢复的类别 和层次的划分。
iSCSI名称是一种具有全球唯一性、永久性、与地址无关性的特殊名称,它有两种形式 ,即IQN形式(iSCSI Qualified Name),EUI形式(IEEE EUI-64形式)。iSCSI名称有以 下优点:
(1)与地址分离,确保了存储设备有唯一的识别标志而不管它在网络中的哪个位置。 当一个设备移动到不用的网段时,虽然IP和TCP端口改变了,但是名字的唯一性确保了 它可以被重新发现。
(2)可以使iSCSI设备利用多个NIC提供冗余路径。
(3)长达255字节的iSCSI名,并不用来路由,相反,当一个节点的IP地址和TCP端口 建立后,所有的存储处理仅需IP地址和TCP端口。
3.3 iSCSI的特点
iSCSI有以下几个显着的优点:
(1)基于TCP/IP协议,基础是传统的以太网和因特网,近20年来,网络技术的迅猛发 展使传统网络无处不在,iSCSI有很好的基础。
(2)随着技术的进步,IP网络的带宽发展相当迅速,千兆以太网已经取得广泛的应用 。而且,该协议由包括IBM、Cisco、Intel、Adaptec等业界巨头的支持。
(3)比起价格高昂的光纤通道,iSCSI相对廉价。目前,大多数中小企业都以TCP/IP 协议为基础建立了网络环境。对于他们来说,投入巨资利用FC建设SAN系统既不现实, 也无必要。但在信息时代,信息的采集与处理将成为决定企业生存与发展的关键,面 对海量数据,许多企业已感到力不从心。iSCSI的实现可以在IP网络上应用SCSI的功能 ,充分利用了现有IP网络的成熟性和普及性等优势
(4)在技术实施方面,iSCSI以稳健、有效的IP及以太网架构为骨干,使忍受性大大 增加。
(5)完全解决数据远程复制(Data Replication)及灾难恢复(Disaster Recover) 的难题。
1.2 iscsi的相关应用介绍
1.2.1 应用引言
由于iSCSI技术现在还不够成熟,性能上还不能与光纤通道相比,iSCSI的应用主要是 作为SAN在中低端服务器上的扩展。通过使用例如Cisco SN 5428这样的存储路由器, IT管理员能够在他们的存储网络中挂接更多的服务器,并获得IP网络所带来的好处。
在企业内部的电子商务活动中,存在异地存储的需要,同时,B to B的运营中,异地 存储也是联接企业间的重要纽带。而当企业有异地存储要求时,如果采取光纤的方式 连接,不仅要在复杂又昂贵的光纤铺设中开销巨大,而且向ISP(网络服务提供商)租 用光纤会给企业带来一笔很大的开支,所以,大多企业不乐于采取光纤通道连接异地 存储。但是,现在SAN之间的连接可以用iSCSI来解决。iSCSI的IP特性预示着他可以通 过传统的IP协议网络传输,这样便能廉价的实现异地数据交换。
通过iSCSI,用户还可以基于标准的以太网线缆在任何地方创建实际的SAN网络,而不 再必须要求专门的光纤通道网络在服务器和存储设备之间传送数据。iSCSI让远程镜像 和备份成为可能,因为没有了光纤通道的距离限制,使用标准的TCP/IP协议,数据可 以在以太网上进行传输。从数据传输的角度看,目前多数iSCSI的网络传输带宽为千兆 即1Gbit,如果实现全双工能够达到2Gbit,第二代产品能够达到2Gbit带宽,在未来第 三代通用iSCSI标准中,带宽将达到10Gb,也就是说,采用iSCSI构建远程异地容灾系 统已不存在任何问题。
1.2.2 基于ISCSI技术的IP SAN应用
图一 基于ISCSI技术的IP SAN
图一为比较简单的IP SAN结构图。例子中使用千兆以太网交换机搭建网络环境,由 ISCSI initiator如文件服务器、ISCSI target如磁盘阵列及磁带库组成。在这里引入 两个概念:initiator和target。Initiator即典型的主机系统,发出读、写数据请求 ;target即磁盘阵列之类的存储资源,响应客户端的请求。这两个概念也就是上文提 到的发送端及接受端。图中使用ISCSI HBA(Host Bus Adapter,主机总线适配卡)连 接服务器和交换机,ISCSI HBA包括网卡的功能,还需要支持OSI网络协议堆栈以实现 协议转换的功能。由图一可以看出,基于ISCSI技术,利用现有的IP网络搭建IP SAN是 极其简单的而且在实际应用中,80-90MB/s的数据传输速率能够满足要求。 ISCSI技术 的应用环境提供了更好的性价比。
1.2.3 基于ISCSI技术的综合应用
图二 主要数据中心、部门级SAN应用及远程数据中心
如图五所示,主要数据中心通过IP存储交换机将独立的ISCSI存储网络、光纤存储网络 、NAS设备和IP网络系统都整合到通用的IP网络平台中的大型应用,成为高度集成的IP 数据SAN。IP存储交换机可以使用冗余或堆叠方式,通过IP网络提供ISCSI SAN和FC  SAN的高可用性及高扩展性的互联。IP存储交换机同时提供主要数据中心对IP广域网络 中其它的远程存储的实时访问,如将数据远程镜像到如图所示的远程数据中心中以达 到备份数据的目的。
主要数据中心的典型特征如下:
? 数据中心可以使用FC SAN、ISCSI SAN、NAS、服务器和DAS等各种存储方式作为存储 资源;
? IP存储交换机成为ISCSI、光纤通道、IP服务器、NAS设备互相连接的枢纽,实现了 高端的存储整合,扩展了通用IP网络技术的应用;
? NAS设备直接连接到IP存储交换机,为存储设备的扩展提供多种选择。
如图五所示,有两个部门级SAN应用,实际上可以基于IP网络扩展更多的部门级应用。 而此类SAN首要就是具备灵活的架构,能够满足部门级的应用即可。将日常工作产生的 数据通过IP广域网备份到远程数据中心,最终实现与主要数据中心、远程数据中心和 IP系统的整合。
部门级SAN的典型特征如下:
? IP SAN通过IP广域网实现与主要数据中心的连接,并通过IP存储交换机、路由器访 问数据中心的IP、光纤通道和ISCSI存储资源;
? ISCSI服务器(initiators)和存储(targets)通过ISCSI HBA连接到IP网络;
? IP交换机互联iSCSI系统。图五的例子即存储的企业级应用,多数用户的应用环境都 包含或类似于其中的环境,从概念上达到了存储相对统一的目的。
您可能会关心到QoS(Quality of Service,服务质量)甚至安全方面的问题,通过公 用网络传输极其重要的数据资源可能会出现问题。这个问题也是客观存在的,ISCSI协 议中通过多种安全方式将这方面的隐患减到最低。第一,TCP/IP网络连接本身提供的 高级服务及安全特性可以直接应用到ISCSI事物处理过程中,就QoS来说,IP网络提供 了广泛的解决方案如事物处理优先级、DiffServ(服务区分)、MPLS(Multi- Protocol Label Switching,多协议分类转换)、RSVP(Resource Reservation  Protocol,资源预约协议)等,就安全性而言,IP协议提供ACLs(Access Control  Lists)、VLANs(Virtual LANs)、IPSec及高级数据编码规则等方案。第二,ISCSI 协议本身也提供了QoS及安全特性,首先就是登录操作顺序,可以限制initiator仅向 target列表中的目标发登录请求,再由target确认并返回响应,之后才允许通信;其 次就是通过IPSec(ip security)将数据包加密之后传输,包括数据完整性、确定性及 机密性检测等。第三,也是极为特殊的方式,即用户可以使用专有的网络以保证与其 他事物处理分开,通过物理方式将数据传输完全隔离于公用网络之外,且可以保证不 会引起网络阻塞导致性能瓶颈。
2 服务器及客户端的配置
2.1 基于linux的iscsi服务器的配置
2.1.1 安装服务包
首先,linux iscsi服务器的配置需要服务器端的安装包,登陆到
http://www.sourceforge.net
上可以下载到该软体。下载unh_iscsi_RH9.0-1.4.01后 安装linux9.0,并进行rpm包的安装。Text模式下rpm –i unh_iscsi_RH9.0-1.4.01, 图形模式下,进入添加删除程序即可。这个安装包包括两个部分(initiator/ target )。安装完成后在linux下可以找到增加的文件或文件夹有的是用来配置initiator的 ,有的是用来配置target的。
2.1.2 重要文件及命令操作
安装成功后,用lsmod命令列出当前加载的模块,会发现已经加载的模块中多了 unh_iscsi_initiator的服务,该项服务是在安装成功后自动添加的,并且加载到了启 动中,以后每次启动默认都会启动,该项服务是为initiator端设计的,由于该安装包 更注重客户端的服务(更注重是指多数机器还是作为initiator端的),所以默认把 initiator端的服务程序启动并添加到启动程序组中,方便以后使用。在/etc/init.d/ 下看到的iscsi相关启动程序unh_iscsi就是被启动的initiator端起动服务的脚本。它 在启动的时候会把信息写入log。另外/usr/share/doc/unh_iscsi是相关说明文件。那 配置服务器的程序在哪里呢?在配置服务器的过程中需要相关的配置文件、管理工具 、log和说明档,这些都包含在如下目录中:
/opt/unh/iscsi/
bin - Commands and utilities
logs - Log files
modules - Kernel modules (indexed by kernel version)
dev - Device files
conf - Configuration files
src - UNH iSCSI Source
在/opt/unh/iscsi/bin下是常用的命令,包括iscsi_config,iscsi_connect,
Iscsi_disconnect,iscsi_manage,iscsi_mount,iscsi_rebuild, iscsi_umount等 。iscsi_manage用来在建立对话的过程中对会话方式、验证方式等进行配置,指定会 话的一系列规则。iscsi_config用来在initiator端发起与某服务器的某个会话,儅然 要指明服务器端,同时它也能起到终结会话的作用。它的参数涉及target的ip地址、 端口号target的名字以及逻辑单元号lun。iscsi_rebuild用来在修改完.c和.h文件后 将这些文件重新编译,以达到修改服务模块的作用,这样在把修改后重新生成的模块 插入后,才能使服务器端服务模块的相应修改得到实现。Modules下放置的是有关内核 的程序模块,即要用到的unh_iscsi_target.o、unh_iscsi_initiator.o、 unh_scsi_target.o这三个模块。/opt/unh/iscsi/conf下有两个文件,为 fstab.iscsi.sample、target.sample。target.sample可用来连接target,可设置被 访问服务器的服务器名、服务器ip、服务器端口、lun(默认访问所有的lun,即all) ,以及initiator的名字。fstab.iscsi.sample与target.sample相配合,用在连接vd 时,可以设置target名,lun,part(即要访问的分区),磁盘mount的路径,文件系统 格式,及相关选项(默认为defaults)。这两个sample是基于linux系统的initiator 连接服务器时需要配置的两个文件,相当于conf的作用。iscsi_connect也可从 initiator发起请求与target建立连接,他的工作原理就是调用上述两个sample。 iscsi_disconnect用来断开连接。iscsi_mount 用来把所见到的iscsi硬盘mount 到本 地使用,iscsi_umount 起到相反的作用。最后是/opt/unh/iscsi/src目录,该目录是 源代码目录,作配置需要修改里面的一些文件,然后重新编译。在src目录下,有很多 的源文件和说明文件用来配置服务器。由于有些文件与配置服务器无关或未涉及到而 暂不列出,只写出一些用到的,以供大家参考。Src下常用目录有:cmd,docs, initiator,target,scripts,test。cmd目录下存放命令,其中有的已 在/opt/unh/iscsi/bin下出现过。Docs目录下存放说明文件,其中对iscsi_config, iscsi_manage等作了一些说明,这些文件能够很好地帮助我们对iscsi_manage和 iscsi_config进行配置。Target目录存放的是target端的源代码,修改后编译再将服 务模块插入可用来实现服务器端的配置。Scripts目录下存放的有四个文件,这四个文 件为sample即样板,可以把它们copy,然后对备份文件进行修改,修改后给其指定为 可执行的属性,执行即可。这四个文件各有不同的用法,前面的两个文件 与/opt/unh/Iscsi/conf/下的文件用法相同,后两个文件也是用来连接target端的, 但添加了验证的功能。target.sample为none验证,即不验证,而target.sample.chap 采用chap验证方法,需要进行用户名和密码的输入,其中有两套,一套是 peer  password &&username,另一套是local password&&username, target.sample.srp采 用了srp验证方法。当然这三个文件也可从iscsi_config或iscsi_manage来进行配置, 但不推荐这么做,最好还是修改配置文件,配置文件修改比较简单,而且还不经常出 错,另外修改文件后可直接运行,也可通过iscsi_connect调用文件连接target。命令 行的方法属于高级设置,可以指定多重验证。下面是有关命令行的使用方法。 iscsi_manage的常用动作参数主要有set/force/restore,每种动作参数又对应不同的 状态参数,即要用这三种动作设置相应的状态,包括验证方式,会话形式,peer用户 名和密码,local用户名和密码等。Iscsi_config的格式为iscsi_config [host=number][ip=address_or_name][port=number][target=number] [lun=number]。What to do 一栏输入up or down ,用来建立并设定initiator到 target的连接,up用来建立连接,down用来断开连接。Host=number是用来指出 initiator端由kernel分配的scsi 适配器号,设置时可在客户端的相应文件路 径/proc/scsi/iscsi_initiator下找到相应的说明,实际上儅机器上没有scsi设备时 ,host/target number会被指定为0,否则为1。Ip地址填入ip address。Port端口为 target对initiator开放的用来建立会话的端口号。Target number是用来提供target 允许的最大会话数。Lun number用来指定initiator端要连接的target的vd号,如果不 填的话,可认为连接所有的vd。现在来举2个比较实用而简单的例子分别说明 iscsi_manage和iscsi_config的用法:例子1:
Iscsi_manage target restore(target端恢复为初始设置,可以清除所有的修改)
Iscsi_manage target set Authmethod=CHAP,NONE(用户验证方式为双选,可以验证 ,也可不验证,验证的时候,需输入两套用户名和密码,一套是peer x/n,一套是 local x/n)
Iscsi_manage target set Sessiontype=Discovery(指定会话的方式为discovery) Iscsi_manage target force s(强制认证,格式必须)
Iscsi_manage target force px=“123”(target端用户密码)
Iscsi_manage target force pn=“haha”(target端用户名)
Iscsi_manage target force t(格式必须,指定2套认证方式,要输入lx/ln必须输入 force t)
Iscsi_manage target force lx=“123”(本地用户密码)
Iscsi_manage target force ln=“haha1”(本地用户名)
例子2:
Iscsi_config up ip=123.45.67.89 port=5142 host=1 target=2 lun=3 cid=4
在这里,用来建立一个由initiator到目标地址为132.45.67.89且端口为5142的target 的会话,且连接target的第三个vd,由于该initiator同时已有3个同这个vd进行的连 接,这次是建立对该vd的第四次连接,所以cid=4。
Iscsi_config down host=1 target=2 lun=3 cid=4则是把同lun=3的vd建立的第四个 连接结束。如果向已和自己建立连接的target建立第二个连接,可以写作 iscsi_config up ip=123.45.67.89 host=1 lun=2
Iscsi_manage init restore host=1
Iscsi_manage init set InitiatorName=‘uname -n’host=1(设置initiator端名字 )Iscsi_manage init set TargetName=MyTarget host=1(设置服务器端名字) Iscsi_manage init set SessionType=Normal host=1(设置会话方式)
Iscsi_manage init set MaxConnections=2 host=1(指定最大连接数)
Iscsi_config up ip=123.45.67.89 host=1 lun=1(建立第一个连接)
Iscsi_manage init restore host=1(清除上述设置,为重输入作准备,这是第一个 连接已成功创建)
Iscsi_manage init set InitiatorName=‘uname –n’host=1(设置initiator端名 字)Iscsi_manage init set TargetName=MyTarget host=1(设置服务器端名字)
Iscsi_config up ip=123.45.67.89 host=1 lun=1 cid=2(对同vd建立第二个连接) 以上就是iscsi_manage和iscsi_config的用法。除了iscsi_manage有关target端的配 置,实际上完全可以通过配置/opt/unh/iscsi/conf/或/opt/unh/iscsi/src/scripts/ 下的配置文件,然后执行这些文件来打到上述目的,相当于以批处理的方式执行代码 。另外,在/opt/unh/iscsi/src/cmd/下的ini-1命令也可以用来配置initiator来连接 target。下面将列出ini-1文件的配置部分,它能帮助我们详细地了解整个的连接过程 。该文件主要分三个部分:服务器端的配置、initiator与第一块vd的连接、 initiator与第二块vd的连接。内容主要包括服务模块的插入,iscsi_manage和 iscsi_config的配置,其中最核心最重要的部分列出如下:
#!/bin/sh
HBA=0
#/sbin/insmod scsi_mod
#/sbin/insmod sd_mod
#/sbin/rmmod unh_iscsi_target
#/sbin/rmmod unh_scsi_target
#/sbin/insmod /opt/unh/iscsi/src/target/unh_scsi_target.o(编译后重新生成的 模块)
#/sbin/insmod /opt/unh/iscsi/src/target/unh_iscsi_target.o(编译后重新生成的 模块)
#rmmod unh_iscsi_initiator
#insmod /opt/unh/iscsi/modules/’uname –r ’/unh_iscsi_initiator.o
############config target##############
Iscsi_manage target restore host=$HBA
Iscsi_manage target set TargetPortalGroupTag=1 host=$HBA
###########config initiator###############
Iscsi_manage init restore host=$HBA
Iscsi_manage init set TargetName=’’host=$HBA
Iscsi_manage init set InitiatorName=’’host=$HBA
Iscsi_manage init set MaxConnections=1 host=$HBA
Iscsi_config down ip=10.190.77.77 host=$HBA
Iscsi_config up ip=10.190.77.77 port=5001 target=0 host=$HBA
同过上述的简单配置,即可建立连接,连入vd。由于服务模块以手动的方式重新加载 过了,所以这里就被注释掉了。
Iscsi_manage不仅能用在target端,也能用在initiator端。而iscsi_config只能用在 initiator端。总之,initiator连接target的用法非常多,但各种方法从实质上是一 样的,都是在服务器端加载修改后的服务模块后,用iscsi_manage对 initiator/target端进行配置,然后再从initiator端用iscsi_config建立连接。通过 文件而非直接用命令来实现连接的方法是把配置服务器端或客户端的命令以及建立连 接的命令写入文件,通过运行文件达到运行命令、建立连接的过程。当然,文件中也 涉及到了有关用户验证的配置。
2.1.3 服务模块的操作
现在就来研究一下最重要的有关target的Ip地址和端口号等target端最终要的配置过 程。重要的源文件大都在/opt/unh/iscsi/src/目录下,文件名分别为 iscsi_protal_group.c &&scsi_target.h。先来看一看前面的文件,在这个文件中需 要配置target端的ip地址,以及被访问的端口号,当然还有同一端口允许的最大入口 数,即同时有几个用户访问。这里ip的位置也可以替换成nic的mac地址。保存后,开 始设置scsi_target.h文件,这个文件比较复杂,但需要设置的内容并不很多,其中找 到如下配置行:
#define MEMORYIO
#define DISKIO
#define FILEIO
#define GENERICIO,这四行确定了在target端将采取何种方式提供iscsi硬盘的访问 ,假如采取第三种方式:
//#define MEMORYIO
//#define DISKIO
#define FILEIO
//#define GENERICIO
那么在target端将会出现8个文件,都位于/opt/unh/iscsi/src/target/路径下。这8 个文件就是target端向initiator端提供的8块硬盘。默认每个是1.76G,可以在该文件 中进行修改。该文件中还须修改的命令有:
#define BLOCKSIZE 512 可以调节默认的传输块的大小
#define FILESIZE 1900*1000*1000 改变提供的每块iscsi硬盘的大小。
儅修改完这文件后,文件并没有真正的得到修改,修改后的结果也不会显示出来,这 是需要将修改过的文件重新编译,这就用到 了/opt/unh/iscsi/src/cmd/iscsi_rebuild,它将编译所有修改过的.c&&.h文件,用 来生成新的服务模块文件unh_iscsi_target.o && unh_scsi_target.o。但linux必须 安装gcc等编译工具以及编译kernel的相关软体。在shell模式下输入lsmod,检查是否 在模块列表中已经存在这两个服务。如果存在,输入
rmmod unh_iscsi_target
rmmod unh_scsi_target
分先后卸载这两个模块,然后在/opt/unh/iscsi/src/target/下用
Insmod unh_scsi_target.o
Insmod unh_iscsi_target.o
分先后添加两个模块。在用lsmod看看是否添加成功,如果成功,那么祝贺你,你的服 务器已初步建好,用上面讲过的配置方法,去实现其它的功能吧。
2.2 基于linux的iscsi initiator的配置
2.2.1 安装服务包
基于Linux的iscsi initiator没有采用上面的rpm,而是安装了独立的rpm包。该包可 在
http://rpm.pbone.net/index.php3/stat/4/idpl/572167/com/iscsi-3.1.0.3
- 3.i386.rpm.html上载到。与上述安装包内的initiator配置不同的是这个独立的安装 包提供了简单的配置方法,安装后会在/etc下建立iscsi.conf配置文件和 initiatorname文件,并且在/etc/init.d/下安装了相应的启动脚本。脚本编辑内容包 括ip,port,身份验证等多种信息。
2.2.2 编辑服务脚本
用vi编辑启动脚本,制定目标服务器的ip地址/hostname和被访问的端口,在该文件中 可以指定多个待访问的target,并且可以不指定端口,也可以通过在不同的target ip 下输入不同的验证信息,即用户名/密码来进行chap验证访问。此文件中最方便之处莫 过于不用设定targetname,以及host和target号。
2.2.3 启动服务连接target
在编辑完conf后,启动iscsi initiator程序/etc/init.d/iscsi,待服务启动后,服 务会按照iscsi.conf的设置访问target,而target会相应请求,这样客户端和服务器 端就会有有关连接的信息显示,且在initiator端会有新的硬盘连入,即iscsi硬盘。 用fdisk –l 命令检查会多出/dev/sda硬盘,用mkfs.ext2命令将其格式化后,linux 可以识别后,即可用mount命令直接联入,非常方便。另外也可用fdisk命令进行分区 。之后,便可以在此新硬盘上进行读写操作了。
2.3 Windows2000客户端的安装与配置
2.3.1 安装服务包
http://www.microsoft.com/downloads/details.aspx?FamilyID=12cb3c1a-15d6
- 4585-b385-befd1319f825&DisplayLang=en下载for windows2000的客户端程序,执行 安装程序,按照向导提示即可安装完毕。
2.3.2 配置客户端
该客户端程序共包括6个主界面,在每个界面中都有不同的功能设定,
这六个主界面分别为target portals,available targets,active sessions,isns  servers,persistent targets,initiator settings。target portals用来输入ip, port,chap验证的用户名和密码,还能配置ipsec、数据校验方式等功能,以用来和 target端建立联系。
Available targets具有log on的功能,用来在与target端建立连接的基础上,连接 target的vd,连接成功后会显示connected,log on的时候有2个选项可以选择,包括 是否在系统启动的时候自动建立与vd的连接。
Active sessions在initiator与target的vd连接时显示为active,未连接时显示为 inactive,具有log off的功能。
Isns servers是名字服务器的相关设置,persistent targets能显示所有在系统启动 时自动恢复的vd连接。Initiator settings具有为guest用户设置验证密码的功能,同 时还具有修改initiator node nam(initiatorname)等功能。
在连接vd后,即可通过windows的磁盘管理界面对iscsi硬盘进行初始化。
3 总结
3.1 应用经验
在组建iscsi网络存储的过程中,我增长了很多经验。安装rpm后,我发现linux下多了 一些文件和目录。这些文件繁多而且有很多的源文件,跟自己原来组建samba服务器, nfs服务器的时候有很多不同的地方,比如服务器端没有现成的配置文件可用。经过研 究发现,源文件中有一些关键性的配置,用vi编辑器编辑后,生成对应的模块,并把 这些模块加载到服务列表中,这样才能启动服务。/etc/init.d/unh_iscsi是 initiator的启动脚本,并非服务器用的。重新编译的命令 为/opt/unh/iscsi/src/cmd/iscsi_rebuild,此时可把所有改动的源文件进行编译修 改。之后,会发现在/opt/unh/iscsi/src/target/的下面多了unh_iscsi_target.o和 unh_scsi_target.o两个文件。这两个文件是编译好的服务启动脚本,加载模块、卸载 模块,列出当前运行模块的名令分别为insmod,rmmod和lsmod。启动服务后,看到 unh_iscsi_target和unh_scsi_target两个服务在列表中已启动。卸载的时候也要注意 ,先卸unh_iscsi_target后卸unh_scsi_target。安装的时候正好相反,先 unh_scsi_target后unh_iscsi_target,原因是unh_iscsi_target的用法是建立在 unh_scsi_target的基础上,要占用unh_scsi_target。另外,initiator和target的相 关文件都很多,一定要分清处理。相关的帮助文件是很重要的,往往在像docs这样的 目录下或是与重要的文件放在同一目录下。还有就是一定要使linux具有编译源文件的 功能,需要安装development tools中的编译工具和kernel development。另外,我学 习到了有关设置iscsi的诸多命令:iscsi_manage,iscsi_config都具有非常丰富的参数 和功能,虽然没有用到集成在包内的initiator程序,而采用了独立的initiator包,但 是像iscsi_connect,iscsi_disconnect,iscsi_mount,iscsi_umount,iscsi_test等命 令帮助我更好的了解iscsi的原理和运行机制。
3.2 小结
以上是对iscsi构建网络存储的介绍和分析。按照上面的方法即可构建简单的iscsi网 络存储环境。iscsi技术的应用,将本身协议完全不同的IP SAN和FC SAN加以整合,促 进了存储资源利用率的增长,并具有创新意义。随着iscsi技术的完善,数据块级的存 储应用将变得更为普遍,存储资源的通用性、数据共享能力都将大大增强,并且更加 易于管理。随着千兆以太网的成熟以及万兆以太网络的开发,IP存储必然会以其性价 比、通用性、无地理限制等优势飞速发展,iscsi技术将联合SCSI、TCP/IP,共同开创 网络存储的新局面!
4 参考资料
《SourceForge_net File Release Notes and Changelog》
http://www.sourceforge.net
安装包附带帮助文档见附录
iscsi安装包相关帮助文档:
1./opt/unh/iscsi/src/docs/下的文档;
2./opt/unh/iscsi/src/的文档
5 附录
1./opt/unh/iscsi/src/target/iscsi_portal_group.c
struct portal_group iscsi_portal_groups[MAX_PORTAL] =
{
/* Default portal */
{INADDR_ANY_STRING, ISCSI_WKP_STRING, DEFAULT_TARGET_PORTAL_GROUP_TAG},
/* example portals */
/* {"132.177.117.67", "5000", 3}, */ /* tweety */
/* {"192.1.1.17", "5001", 2}, */ /* tweety-gig */
/* {"192.1.1.17", "5002", DEFAULT_TARGET_PORTAL_GROUP_TAG}, *//* tweety-gig  */
/* {"[fe80::207:e9ff:fe19:9c35]", "5001", 2}, */ /* tweety-gig */
/* {"[fe80::2e0:29ff:fe6c:70dc]", "5000", 3}, */ /* tweety */
/* {"132.177.118.45", ISCSI_WKP_STRING, 3}, oakenfold */
/* {"[2001:468:603:c001:0:7ff:fee3:c72c]", ISCSI_WKP_STRING, 3}, */
/* end of table with NULL string pointers and tag of 0 */
{NULL, NULL, 0}
};
2./opt/unh/iscsi/src/target/scsi_target.h/
/# define MEMORYIO /* for performance studies */
//# define DISKIO /* to a real disk */
# define FILEIO /* to a file on the system */
//# define GENERICIO /* when the scsi_do_req is not working */
# define BLOCKSIZE 512
//# define BLOCKSIZE 4096
# define TWOBYTE 16
# define BYTE 8
# define FILESIZE 1900 * 1000 * 1000 /* file size in MB */
# define IOFILE 1
# define IOGENERIC 2
# define IO_SIGS (sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGTERM) |sigmask(SIGIO))
# define MAX_SENSE_DATA 16
# define SHUTDOWN_SIGS (sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGTERM))
# define TE_TRY 1
# define TE_TIMEOUT 10*HZ
#define R_BIT 0x40
#define W_BIT 0x20
3. 安装包附带帮助文档


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/68279/showart_717264.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP