iscsi的网络存储学习

一、 iSCSI简介

提到iSCSI,这里需要首先介绍一下目前应用最为广泛的两种数据存储设备:NAS与SAN。

1. NAS

NAS的全称是Network-attached storage,即网络连接存储设备。NAS设备通常是一个完整的服务器架构,包含了CPU、内存、网卡、磁盘,其上安装通用操作系统或者精简的专用操作系统,并通过扩展接口连接了大量存储阵列。NAS的访问形式是通过TCP/IP网络进行远程访问,NAS自身的操作系统上运行着相应的网络服务程序,比如Windows文件共享服务、Linux Samba文件共享服务、Linux/Unix的NFS文件系统等。需要访问NAS的设备,通过TCP/IP网络,在远程使用客户端软件来访问。Windows文件共享是操作系统自身已经包含,Linux则需要安装Samba客户端或者NFS客户端来访问NAS设备。

NAS主要用途是大容量存储,并带有一定的冗余功能,侧重点在于容量和相对较低的实施成本,对于吞吐量、并发数、冗余性能等通常要求不高。此外,由于NAS的访问形式是文件共享式的访问,操作系统只能将NAS设备挂载成一个网络共享设备,而一些操作系统原生特性是无法在网络共享文件系统上实现的,例如磁盘配额、格式化磁盘、组件磁盘阵列等都不能在远程上实现,这也给NAS的应用造成了一定的局限性。

如图,在远程的Windows系统中挂载NAS提供的网络驱动器。

如图,在远程Windows服务器上,NAS被作为网络驱动器被映射后,通过磁盘管理器功能是无法获知NAS的任何信息的。对NAS系统的底层操作如磁盘配额、组建阵列、格式化等都需要在NAS服务器本地来实施,不能在远程访问的客户端上进行。

2. SAN

SAN的全称是Storage Area Network 。对比于NAS,SAN存储更像是一个外置磁盘阵列,SAN设备本身通常只包含阵列、控制器、接口卡,不包含CPU、内存、通用操作系统。SAN通过标准外置SCSI接口或者光纤SCSI接口连接到服务器上。因此,使用SAN的时候,相应的服务器必须带有外置SCSI、光纤接口等扩展卡。连接到SAN以后,在操作系统上,可以将SAN提供的磁盘阵列直接读取为本地磁盘驱动器,,操作系统不关心这些硬盘是安装在服务器内部的,还是装载SAN设备内的。

SAN的侧重点在于高性能、高可靠性,SAN通常容量不是很大,但是提供了光纤、SCSI接口用于同时连接到多个服务器上,SAN所提供的阵列带有RAID5以上的高级冗余功能,确保当部分磁盘故障时,系统性能下降的幅度尽可能的小。SAN的缺点是实施成本比较高,如果采用外置SCSI接口,则需要速度匹配的高性能SCSI接口卡。如果采用光纤接口,还需要光纤交换机等设备。

在客户端上使用SAN设备,无论其接口形式是何种,就像使用本地磁盘一样,从磁盘管理器中可以完全看到服务器挂载的SAN设备。如下图,磁盘1和磁盘2分别映射为分区“P”及分区“O” ,即是远程的SAN存储设备。

3. iSCSI架构

从上文的介绍可以看出,NAS和SAN分别有着不同的侧重点。SAN虽然有着很好的性能,但是受限于外置SCSI、光纤通道等连接设备,部署成本较高,且外置SCSI铜缆受到线缆长度的限制,不能远距离部署使用。为了改善SAN的这一缺点,iSCSI协议和规范在2003年被正式确定下来。

ISCSI的全称是IP-based SCSI,通过TCP/IP和Internet来传输SCSI的数据包,即基于以太网接口的外置SCSI存储设备。ISCSI分成服务器端和客户端,服务器端叫做iSCSI-target,在实际应用中就是支持iSCSI协议的SAN设备;客户端叫做iSCSI-initiator,在实际应用中就是要访问SAN的服务器。在服务器端和客户端中间,数据的传输通道借助于TCP/IP协议完成,服务器端和客户端都有自己的IP地址,数据传输可通过交换机、路由器进行中继,进而达到在很远的距离上,各种客户端设备依然可以连接到SAN并进行工作。

在基于外置SCSI铜缆和光纤SCSI通道的SAN上,SAN连接到的服务器是不需要进行任何特殊配置的,操作系统会将连接上来的SCSI设备视为一个物理磁盘设备。而iSCSI是通过以太网接口连接的,标准的操作系统仅仅将SAN视为一个网络节点,可以通过TCP/IP访问,但不能将其作为物理磁盘设备来使用。这就是为什么需要iSCSI-initiator客户端软件的原因。

为了进一步降低部署成本,可以在Windows服务器上和Linux服务器上安装iSCSI-target服务器端软件,让现有的服务器变成支持iSCSI协议的SAN存储设备。

存储资源所在的iSCSI服务器被称为“target”。iSCSI target通常是一个硬盘存储设备。当前大部分的主流操作系统都提供了配合iSCSI target使用的客户端软件initiator,iSCSI initiator(client) initiator就是iSCSI传输的服务端。典型的initiator都有共同的目的,就是作为一个SCSI总线的适配器,代替物理上的SCSI设备(类似硬盘或者磁带)。iSCSI initiator通过IP网络传输SCSI命令。

附上linux上安装Scsi-target-utils   http://lhx2003.bokee.com/viewdiary.57206744.html

你可能感兴趣的:(学习)