南非蚂蚁,著名Linux专家,知名IT作家。毕业于西安电子科技大学通信工程专业,爱好计算机,毕业后从事计算机行业。曾就职于新浪网、阿里云(万网),任职系统架构师。曾出版畅销书《循序渐进Linux》、《高性能Linux服务器构建实战》作者。
分类: LINUX
2011-12-27 10:32:19
在此图中,iSCSI服务器用来安装iSCSI driver,也就是安装iSCSI initiator,Storage Router可以是以太网交换机或者路由器,iSCSI存储设备可以是iSCSI磁盘阵列,也可以是具有存储功能的PC服务器。下面详细介绍一下iSCSI initiator与iSCSI target的含义:
四、iSCSI initiator
iSCSI initiator是一个安装在计算机上的一个软件或是一个硬件设备,它负责处理同iSCSI存储设备进行通信。
iSCSI服务器与iSCSI存储设备之间的连接方式有两种:第一种是基于软件的方式,也就是iSCSI initiator,在iSCSI服务器上安装initiator后,Initiator软件可以将以太网卡虚拟为iSCSI卡,进而接受和发送iSCSI数据报文,从而实现主机和iSCSI存储设备之间的iSCSI协议和TCP/IP协议传输功能。这种方式只需以太网卡和以太网交换机,无需其它设备,因此成本是最低的,但是iSCSI包文和TCP/IP包文转换需要消耗iSCSI服务器的一部分cpu资源,只有在低I/O和低带宽性能要求的应用环境中才能使用这种方式。
第二种是硬件iSCSI HBA(Host Bus Adapter)卡方式,即为硬件iSCSI initiator,这种方式需要购买iSCSI HBA卡,然后安装在iSCSI服务器上,从而实现iSCSI服务器与交换机之间、iSCSI服务器与存储设备之间的高效数据传输。与第一种方式相比,硬件iSCSI HBA卡方式不需要消耗iSCSI服务器的CPU资源,同时硬件设备是专用的,所以基于硬件的iSCSI initiator可以提供更好的数据传输和存储性能。但是,iSCSI HBA卡价格比较昂贵,因而,要在性能和成本之间进行权衡。
iSCSI initiator软件一般都是免费的,Centos和RHEL对iSCSI Initiator支持非常不错,现在的Linux发行版本都默认已经自带了iSCSI Initiator。
五、iSCSI target
一个可以被用于存储数据的iSCSI磁盘阵列或者具有iSCSI功能的设备都可以被称为“iSCSI target”,因为对于大多数操作系统来说,都可以用一些软件将系统转变为一个“iSCSI target”,本章我们重点讲述的就是如何构建一个PC构架的iSCSI存储系统,所谓PC构架就是选择一个普通的、性能优良的、可支持多块磁盘的PC(一般为PC服务器),选择一款相对成熟稳定的iSCSI target软件,将iSCSI Target软件安装在PC服务器上,这样普通的PC服务器就转变成一台iSCSI存储设备,并通过PC服务器的以太网卡对外提供iSCSI数据传输服务。
目前大多数iSCSI target软件都是收费的,例如DataCore Software的SANmelody,FalconStor Software的iSCSI Server for Windows等,这些都是windows平台的,不过,也有一些linux平台开源的iSCSI target软件,例如iSCSI Enterprise Target,在下面章节会重点介绍这个软件。
利用iSCSI target软件,可以将服务器的存储空间分配给客户机使用,客户机就可以像使用本地硬盘一样使用iSCSI磁盘,包括对其进行分区,格式化,读写等。并且每个客户端都可以往iSCSI磁盘写数据,互不干扰,且不会破坏存储服务器的数据。同时,iSCSI target软件对用户权限控制非常灵活,支持配置文件。
六、搭建iSCSI存储系统的建议
我们知道,iSCSI是使用TCP/IP协议进行通信的,因此,将iSCSI两端连接起来,仅仅需要一个以太网络就可以了,由此可知,iSCSI的存储性能和这个以太网络有直接关系,所以最好在iSCSI网络中使用千兆以太网交换机,劣质的网络设备会严重的影响存储系统的性能,也就是说,要为每个服务器配备高质量的千兆以太网交换机,并提供两个连接,对于iSCSI targets,应该为每个独立阵列中的两个独立端口配备交换机,最后,将交换机连接起来,使用这种配置方式,即使两个交换机有一个出现了故障,整个iSCSI存储系统仍然能够正常工作,保证了存储系统的不间断运行。
七、iSCSI的工作原理
要理解iSCSI的工作原理,就必须知道iSCSI的层次结构,根据OSI模型,iSCSI的协议自顶向下一共可以分为三层,如图2所示:
下面对每个分层进行简单介绍:
SCSI层:根据客户端发出的请求建立SCSI CDB(命令描述块),并传给iSCSI层;同时接受来自iSCSI层的CDB,并向应用返回数据。
iSCSI层:对SCSI CDB进行封装,以便能够在基于TCP/IP协议的网络上进行传输,完成SCSI到TCP/IP的协议映射。这一层是iSCSI协议的核心层。本章的内容也是主要针对这一层的配置和管理。
TCP/IP层:对IP报文进行路由和转发,并且提供端到端的透明可靠传输。
iSCSI协议定义了在 TCP/IP网络发送、接收数据块存储数据的规则和方式。首先,发送端将SCSI命令和数据封装到TCP/IP包中,然后再通过IP网络转发,接收端收到 TCP/IP 包之后,将其还原为SCSI命令和数据并执行,执行完成后,将返回的SCSI命令和数据再封装到 TCP/IP 包中,然后再传回发送端。这样就完成了整个传输过程。
iSCSI整个过程在用户看来是完全透明的,用户使用远端的存储设备就象使用本地的硬盘设备一样。不过这只是理论上的,实际上数据传输速度并不能完全达到本地硬盘的数据传输速度,但差别并不明显,而且这种网络存储模式还有一个优点就是其安全性高,这对于数据集中存储的iSCSI来说显得非常重要。