iSCSI互联网小型计算机系统接口是一种在TCPIP上进行.docx
《iSCSI互联网小型计算机系统接口是一种在TCPIP上进行.docx》由会员分享,可在线阅读,更多相关《iSCSI互联网小型计算机系统接口是一种在TCPIP上进行.docx(13页珍藏版)》请在冰豆网上搜索。
iSCSI互联网小型计算机系统接口是一种在TCPIP上进行
1.1iSCSI
iSCSI(互联网小型计算机系统接口)是一种在TCP/IP上进行数据块传输的标准。
它是由Cisco和IBM两家发起的,并且得到了各大存储厂商的大力支持。
iSCSI可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行快速的数据存取备份操作。
iSCSI标准在2003年2月11日由IETF(互联网工程任务组)认证通过。
iSCSI继承了两大最传统技术:
SCSI和TCP/IP协议。
这为iSCSI的发展奠定了坚实的基础。
基于iSCSI的存储系统只需要不多的投资便可实现SAN存储功能,甚至直接利用现有的TCP/IP网络。
相对于以往的网络存储技术,它解决了开放性、容量、传输速度、兼容性、安全性等问题,其优越的性能使其备受始关注与青睐。
iSCSI的数据包结构:
工作流程:
iSCSI系统由SCSI适配器发送一个SCSI命令。
命令封装到TCP/IP包中并送入到以太网络。
接收方从TCP/IP包中抽取SCSI命令并执行相关操作。
把返回的SCSI命令和数据封装到TCP/IP包中,将它们发回到发送方。
系统提取出数据或命令,并把它们传回SCSI子系统。
安全性描述:
iSCSI协议本身提供了QoS及安全特性。
可以限制initiator仅向target列表中的目标发登录请求,再由target确认并返回响应,之后
才允许通信;
通过IPSec将数据包加密之后传输,包括数据完整性、确定性及机密性检测等;
iSCSI的优势
(1)广泛分布的以太网为iSCSI的部署提供了基础。
(2)千兆/万兆以太网的普及为iSCSI提供了更大的运行带宽。
(3)以太网知识的普及为基于iSCSI技术的存储技术提供了大量的管理人才。
(4)由于基于TCP/IP网络,完全解决数据远程复制(DataReplication)及灾难恢复(DisasterRecover)等传输距离上的难题。
(5)得益于以太网设备的价格优势和TCP/IP网络的开放性和便利的管理性,设备扩充和应用调整的成本付出小。
1.2iSCSI与光纤通道的比较
从传输层看,光纤通道的传输采用其FC协议,iSCSI采用TCP/IP协议。
FC协议与现有的以太网是完全异构的,两者不能相互接驳。
因此光纤通道是具有封闭性的,而且不仅与现有的企业内部网络(以太网)接入,也与其他不同厂商的光纤通道网络接入(由于厂家对FC标准的理解的异样,FC设备的兼容性是一个巨大的难题)。
因此,对于以后存储网络的扩展由于兼容性的问题而成为了难题。
而且,FC协议由于其协议特性,网络建完后,加入新的存储子网时,必须要重新配置整个网络,这也是FC网络扩展的障碍。
iSCSI基于的TCP/IP协议,它本身就运行于以太网之上,因此可以和现有的企业内部以太网无缝结合。
TCP/IP网络设备之间的兼容性已经无需讨论,迅猛发展的internent网上运行着全球无数家网络设备厂商提供的网络设备,这是一个最好的佐证。
从网络管理的角度看,运行FC协议的光网络,其技术难度相当之大。
其管理采用了专有的软件,因此需要专门的管理人员,且其培训费用高昂。
TCP/IP网络的知识通过这些年的普及,已有大量的网络管理人才,并且,由于支持TCP/IP的设备对协议的支持一致性好,即使是不同厂家的设备,其网络管理方法也是基本一致的。
FC运行于光网络之上,其速度是非常快的,现在已经达到了2G的带宽,这也是它的主要优势所在。
下一代的FC标准正在制定当中,其速度可以达到4G,
今天的千兆以太网已经在普及当中,这也是基于TCP/IP的iSCSI协议进入实用的保证。
得益于优秀的设计,以太网从诞生到现在,遍及了所有有网络的地方,到现在依然表现出非凡的生命力,在全球无数网络厂商的共同努力下,以太网的速度稳步提升,千兆网络已经实际应用,万兆网络呼之欲出,以太网的主要部件交换机路由器均已有万兆级别的产品。
随着产品的不断丰富,以及设备厂商间的剧烈竞争,其建设成本在不断下降,万兆网络的普及已日益临近。
当iSCSI以10Gb的高速传输数据时,基于iSCSI协议的存储技术将无可争议的成为网络存储的王者。
第2章文件系统相关知识
2.1什么是文件系统
文件系统定义了把文件存储于磁盘时所必须的数据结构及磁盘数据的管理方式。
我们知道,磁盘是由很多个扇区(Sector)组成的,如果扇区之间不建立任何的关系,写入其中的文件就无法访问,因为无法知道文件从哪个扇区开始,文件占多少个扇区,文件有什么属性。
为了访问磁盘中的数据,就必需在扇区之间建立联系,也就是需要一种逻辑上的数据存储结构。
建立这种逻辑结构就是文件系统要做的事情,在磁盘上建立文件系统的过程通常称为“格式化”。
以Windows平台下最常见的FAT文件系统为例。
FAT文件系统有两个重要的组成部分:
FAT表(FileAllocationTable)和数据存储区。
FAT表是FAT文件系统的名称来源,它定义了存储数据的簇(Cluster,由2的n次方个Sector组成,n值根据分区大小而定,需综合考虑数据存取效率和存储空间的利用率)之间的链接关系,这种链接关系是一个单向链表,指向0xFF表示结束。
依据一个簇编号所用bit数的不同,可分为FAT12、FAT16和FAT32文件系统。
数据区存储的数据包含文件目录项(DirectoryEntries)和文件数据。
文件目录项存储的是一个文件或目录的属性信息,包括文件名称(把目录也看成是文件)、读写属性、文件大小、创建时间、起始簇编号等,一个目录下的每个子目录和文件都对应一个表项记录。
文件目录项以固定32字节的长度存储,以树型结构管理,其中根目录的位置是确定的。
也就是说,根据分区根目录可以找到下级子目录和文件的起始簇编号,根据下级子目录又可以找到更下级目录或文件的起始簇编号。
可见,FAT表和文件目录项是为了文件的访问和管理而建立的。
应用程序要访问一个文件时,根据文件路径(逻辑分区号+目录,如F:
\software)和文件名称(如setup.exe)可从文件目录项中获得存储文件数据的起始簇号,之后从FAT表查询这个簇号对应的链表,就可以获得该文件对应的全部簇编号。
从这些簇中读出全部数据,就得到一个完整的文件。
一般来说,文件系统是和操作系统紧密结合在一起的,不同的操作系统使用不同的文件系统,但有时为了兼容,不同操作系统也使用相同的文件系统。
2.2主流文件系统和特点
在Windows系列操作系统中,MS-DOS和Windows3.x使用FAT16文件系统,默认情况下Windows98也使用FAT16,Windows98和WindowsMe可以同时支持FAT16、FAT32两种文件系统,WindowsNT则支持FAT16、NTFS两种文件系统,Windows2000可以支持FAT16、FAT32、NTFS三种文件系统.每一种文件系统提供的功能与特点各不相同。
比如FAT32文件系统。
,采用32位的文件分配表,磁盘的管理能力大为增强。
但由于文件分配表的增大,性能相对来说有所下降。
此外,这个版本的文件系统不能向下兼容。
NTFS是随着WindowsNT操作系统而产生的,它的优点和FAT文件系统相比是有更好的安全性和稳定性,在使用中不易产生文件碎片,NTFS分区对用户权限作出了非常严格的限制,同时它还提供了容错结构日志,从而保护了系统的安全。
但NTFS分区格式的兼容性不好,Windows98/ME操作系统均不能直接访问该分区。
对于超过4GB以上的硬盘,使用NTFS分区,可以减少磁盘碎片的数量,大大提高硬盘的利用率;NTFS可以支持的文件大小可以达到64GB,远远大于FAT32下的4GB;支持长文件名,支持的最大分区为2TB。
在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。
Linux的最重要特征之一就是支持多种文件系统,并可以和许多其它种操作系统共存。
随着Linux的不断发展,它所支持的文件格式系统也在迅速扩充。
特别是Linux2.4内核正式推出后,出现了大量新的文件系统.Linux系统可以支持十多种文件系统类型包括:
JFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。
2.3NFS和CIFS网络文件系统工作原理和特点
NFS(NetworkFileSystem,网络文件系统)是当前主流异构平台共享文件系统之一.主要应用在UNIX环境下。
最早是由SUNmicrosystem开发,现在能够支持在不同类型的系统之间通过网络进行文件共享,广泛应用在FreeBSD、SCO、Solaris等等异构操作系统平台,允许一个系统在网络上与它人共享目录和文件。
通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。
换言之,NFS可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。
NFS的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。
服务器程序向其它计算机提供对文件系统的访问,其过程就叫做“输出”。
NFS客户端程序对共享文件系统进行访问时,把它们从NFS服务器中“输送”出来。
文件通常以“块”为单位进行传输.其尺寸是8K(虽然它可能会将操作分成更小尺寸的分片).NFS传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在存储设备上的数据。
CIFS(CommonInternetFileSyste,公共互联网文件系统)是当前主流异构平台共享文件系统之一。
主要应用在NT/Windows环境下,是由Microsoft公司开发。
其工作原理是让CIFS协议运行于TCP/IP通信协议之上,让Unix计算机可以在网络邻居上被Windows计算机看到。
共享文件系统特点:
Ø异构平台下的文件共享:
不同平台下的多个客户端可以很容易的共享NAS中的同一个文件。
Ø充分利用现有的LAN网络结构,保护现有投资。
Ø容易安装,使用和管理都很方便,实现即插即用。
Ø广泛的连接性:
由于基于IP/Ethernet以及标准的NFS和CIFS,可以适应复杂的网络环境。
Ø内部资源的整合:
可以将内部的磁盘整合成一个统一的存储池,以卷的方式提供给不同的用户,每一个卷可以格式化成不同的文件系统
Ø允许应用进程打开一个远地文件,并能够在该文件的某一个特定的位置上开始读写数据。
NFS可使用户只复制一个大文件中的一个很小的片段,而不需复制整个大文件,在网络上传送的只是少量的修改数据。
需要注意的是,CIFS和NFS虽然同样也是文件系统(FileSystem),但它并不能用于在磁盘中存储和管理数据,它定义的是通过TCP/IP网络传输文件时的文件组织格式和数据传输方式。
利用CIFS和NFS共享文件实际涉及到两次的文件系统转换。
客户端从服务器端申请一个文件时,服务器端首先从本地读出文件(本地文件系统格式),并以NFS/CIFS的格式封装成IP报文并发送给客户端。
客户端收到IP报文以后,把文件存储与本地磁盘中(本地文件系统格式)。
2.4存储系统与文件系统的关系
提到NAS,通常会想到传统的NAS设备,它具有自己的文件系统,具有较大的存储容量,具有一定的文件管理和服务功能。
NAS设备和客户端之间通过IP网络连接,基于NFS/CIFS协议在不同平台之间共享文件,数据的传输以文件为组织单位。
虽然NAS设备常被认为是一种存储架构,但NAS设备最核心的东西实际上在存储之外,那就是文件管理服务。
从功能上来看,传统NAS设备就是一个带有DAS存储的文件服务器。
从数据的IO路径来看,它的数据IO发生在NAS设备内部,这种架构与DAS毫无分别。
而事实上,很多NAS设备内部的文件服务模块与磁盘之间是通过SCSI总线连接的。
至于通过NFS/CIFS共享文件,完全属于高层协议通信,根本就不在数据IO路径上,所以数据的传输不可能以块来组织。
正是由于这种功能上的重叠,在SAN出现以后,NAS头设备(或NAS网关)逐渐发展起来,NASoverSAN的方案越来越多,NAS回归了其文件服务的本质。
由此可知,NAS与一般的应用主机在网络层次上的位置是相同的,为了在磁盘中存储数据,就必须要建立文件系统。
有的NAS设备采用专有文件系统,而有的NAS设备则直接借用其操作系统支持的文件系统。
由于不同的OS平台之间文件系统不兼容,所以NAS设备和客户端之间就采用通用的NFS/CIFS来共享文件。
至于SAN,它提供给应用主机的就是一块未建立文件系统的“虚拟磁盘”。
在上面建立什么样的文件系统,完全由主机操作系统确定。
第3章RAID技术
3.1RAID概述
RAID为廉价磁盘冗余阵列(RedundantArrayofInexpensiveDisks),RAID技术将一个个单独的磁盘以不同的组合方式形成一个逻辑硬盘,从而提高了磁盘读取的性能和数据的安全性。
不同的组合方式用RAID级别来标识。
RAID技术是由美国加州大学伯克利分校D.A.Patterson教授在1988年提出的,作为高性能、高可靠的存储技术,在今天已经得到了广泛的应用。
3.2RAID级别
RAID技术经过不断的发展,现在已拥有了从RAID0到5等6种明确标准级别的RAID级别。
另外,其他还有6、7、10(RAID1与RAID0的组合)、01(RAID0与RAID1的组合)、30(RAID3与RAID0的组合)、50(RAID0与RAID5的组合)等。
不同RAID级别代表着不同的存储性能、数据安全性和存储成本,下面将介绍如下RAID级别:
0、1、2、3、4、5、6、01、10。
3.2.1RAID0
RAID0也称为条带化(stripe),将数据分成一定的大小顺序的写道阵列的磁盘里,RAID0可以并行的执行读写操作,可以充分利用总线的带宽,理论上讲,一个由N个磁盘组成的RAID0系统,它的读写性能将是单个磁盘读取性能的N倍。
且磁盘空间的存储效率最大(100%)RAID0有一个明显的缺点:
不提供数据冗余保护,一旦数据损坏,将无法恢复。
如图所示:
系统向RAID0系统(四个磁盘组成)发出的I/O数据请求被转化为4项操作,其中的每一项操作都对应于一块物理硬盘。
通过建立RAID0,原先顺序的数据请求被分散到四块硬盘中同时执行。
从理论上讲,四块硬盘的并行操作使同一时间内磁盘读写速度提升了4倍。
但由于总线带宽等多种因素的影响,实际的提升速率会低于理论值,但是,大量数据并行传输与串行传输比较,性能必然大幅提高。
RAID0应用于对读取性能要求较高但所存储的数据为非重要数据的情况下。
3.2.2RAID1
RAID1成为镜像(mirror),它将数据完全一致的分别写到工作磁盘和镜像磁盘,因此它的磁盘空间利用率为50%,在数据写入时时间会有影响,但是读的时候没有任何影响,RAID0提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
RAID1应用于对数据保护极为重视的应用。
3.2.3RAID2
RAID2称为纠错海明码磁盘阵列,阵列中序号为2N的磁盘(第1、2、4、6……)作为校验盘,其余的磁盘用于存放数据,磁盘数目越多,校验盘所占比率越少。
RAID2在大数据存储额情况下性能很高,RAID2的实际应用很少。
3.2.4RAID3
RAID3采用一个硬盘作为校验盘,其余磁盘作为数据盘,数据按位或字节的方式交叉的存取到各个数据盘中。
不同磁盘上同一带区的数据做异或校验,并把校验值写入到校验盘中。
RAID3系统在完整的情况下读取时没有任何性能上的影响,读性能与RAID0一致,却提供了数据容错能力,但是,在写时性能大为下降,因为每一次写操作,即使是改动某个数据盘上的一个数据块,也必须根据所有同一带区的数据来重新计算校验值写入到校验盘中,一个写操作包含了写入数据块,读取同一带区的数据块,计算校验值,写入校验值等操作,系统开销大为增加。
当RAID3中有数据盘出现损坏,不会影响用户读取数据,如果读取的数据块正好在损坏的磁盘上,则系统需要读取所有同一带区的数据块,然后根据校验值重新构建数据,系统性能受到影响。
RAID3的校验盘在系统接受大量的写操作时容易形成性能瓶颈,因而适用于有大量读操作如web系统以及信息查询等应用或持续大块数据流(例如非线性编辑)的应用。
3.2.5RAID4
RAID4与RAID3基本一致,区别在于条带化的方式不一样,RAID4按照块的方式存放数据,所以在写操作时只涉及两块磁盘,数据盘和校验盘,提高了系统的IO性能。
但面对随机的分散的写操作,单一的校验盘往往成为性能瓶颈。
3.2.6RAID5
RAID5与RAID3的机制相似,但是数据校验的信息被均匀的分散到的阵列的各个磁盘上,这样就不存在并发写操作时的校验盘性能瓶颈。
阵列的磁盘上既有数据,也有数据校验信息,数据块和对应的校验信息会存储于不同的磁盘上,当一个数据盘损坏时,系统可以根据同一带区的其他数据块和对应的校验信息来重构损坏的数据。
RAID5可以理解为是RAID0和RAID1的折衷方案。
RAID5可以为系统提供数据安全保障,但保障程度要比RAID1低而磁盘空间利用率要比RAID1高。
RAID5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。
同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较低。
RAID5在数据盘损坏时的情况和RAID3相似,由于需要重构数据,性能会受到影响。
3.2.7RAID6
RAID6提供两级冗余,即阵列中的两个驱动器失败时,阵列仍然能够继续工作。
一般而言,RAID6的实现代价最高,因为RAID6不仅要支持数据的恢复,又要支持校验的恢复,这使RAID6控制器比其他级RAID更复杂和更昂贵。
1.RAID6的校验数据
当对每个数据块执行写操作时,RAID6做两个独立的校验计算,因此,它能够支持两个磁盘的失败。
为了实现这个思想,目前基本上有两个已经接受的方法:
•使用多种算法,如XOR和某种其他的函数。
•在不同的数据分条或者磁盘上,使用排列的数据。
2.RAID6的一维冗余
RAID6的第一种方法是用两种不同的方法计算校验数据。
实现这个思想最容易的方法之一是用两个校验磁盘支持数据磁盘,第一个校验磁盘支持一种校验算法,而第二个磁盘支持另一种校验算法,使用两种算法称为P+Q校验。
一维冗余是指使用另一个校验磁盘,但所包含的分块数据是相同的。
例如,P校验值可能由XOR函数产生,这样,Q校验函数需要是其他的某种操作,一个很有力的侯选者是ReedSolomon误差修正编码的变体,这个误差修正编码一般用于磁盘和磁带驱动器。
假如两个磁盘失败,那么,通过求解带有两个变量的方程,可以恢复两个磁盘上的数据,这是一个代数方法,可以由硬件辅助处理器加速求解。
3.2.8RAID10
RAID10是RAID1和RAID0的结合,也称为RAID(0+1),先做镜像然后做条带化,既提高了系统的读写性能,有提供了数据冗余保护,RAID10的磁盘空间利用率和RAID1是一样的,为50%。
RAID10适用于既有大量的数据需要存储,有对数据安全性有严格要求的领域,比如金融,证券等。
3.2.9RAID01
RAID01也是RAID0和RAID1的结合,但它是对条带化后的数据进行镜像。
但与RAID10不同,一个磁盘的丢失等同于整个镜像条带的丢失,所以一旦镜像盘失败,则存储系统成为一个RAID-0系统(即只有条带化)。
RAID01的实际应用非常少。
3.2.10JBOD
JBOD(JustBundleOfDisks)译成中文可以是"简单磁盘捆绑",通常又称为Span。
JBOD不是标准的RAID级别,它只是在近几年才被一些厂家提出,并被广泛采用。
Span是在逻辑上把几个物理磁盘一个接一个串联到一起,从而提供一个大的逻辑磁盘。
Span上的数据简单的从第一个磁盘开始存储,当第一个磁盘的存储空间用完后,再依次从后面的磁盘开始存储数据。
Span存取性能完全等同于对单一磁盘的存取操作。
Span也不提供数据安全保障。
它只是简单的提供一种利用磁盘空间的方法,Span的存储容量等于组成Span的所有磁盘的容量的总和。
3.3不同RAID级别对比
在各个raid级别中,使用最广泛的是raid0,raid1,raid10,raid5
RAID-0,将数据分成条带顺序写入一组磁盘中。
RAID-0不提供冗余功能,但是它却提供了卓越的吞吐性能,因为读写数据是在一组磁盘中的每个磁盘上同时处理的,吞吐性能远远超过单个磁盘的读写。
RAID-1,每次写操作都将分别写两份到数据盘和校验盘上,每对数据盘和校验盘成为镜像磁盘组。
也可使用并发的方式来读数据时,提高吞吐性能。
如果镜像磁盘组中某个磁盘出错,则数据可以从另外一块磁盘获得,而不会影响系统的性能,然后,使用一块备用磁盘将健康磁盘中的数据复制出来然后这两块磁盘又组成新的镜像组。
RAID1/0,即RAID1与RAID0的结合,既做镜像又做条带化,数据先镜像再做条带化。
这样数据存储既保证了可靠性,又极大地提高了吞吐性能。
RAID-0/1也是RAID0与RAID1的结合,但它是对条带化后的数据进行镜像。
但与
RAID10不同,一个磁盘的丢失等同于整个镜像条带的丢失,所以一旦镜像盘失败,则存储系统成为一个RAID-0系统(即只有条带化)。
RAID-5是将数据校验循环分散到各个磁盘中,它像RAID-0一样将数据条带化分散写
到一组磁盘中,但同时它生成校验数据做为冗余和容错使用。
校验磁盘包含了所有条带的数
据的校验信息。
RAID-5将校验信息轮流地写入条带磁盘组的各个磁盘中,即每个磁盘上既有数据信息又同时有校验信息,RAID-5的性能得益于数据的条带化,但是某个磁盘的失败却将引起整个系统的下降,这是因为系统将在承担读写任务的同时,重新构建和计算出失败磁盘上的数据,此时要使用备用磁盘对失败磁盘的数据重建恢复整个系统的健康。
从一个普通应用来讲,要求存储系统具有良好的IO性能同时也要求对数据安全做好保护工作,所以raid10和raid5应该成为我们重点关注的对象。
下面从IO性能,数据重构及对系统性能的影响,数据安全保护等方面,结合磁盘现状来分析两种技术的差异。
IO的性能:
读操作上raid10和raid5是相当的,RAID-5在一些很小数据的写操作(如比每个条带还小的小数据)需要2个读、2个写,还有2个XOR操作,对于单个用户的写操作,在新数据应用之前必须将老的数据从校验盘中移除,整个的执行过程是这样:
读出旧数据,旧数据与新数据做XOR,并创建一个即时的值,读出旧数据的校验信息,将即时值与校验数据进行XOR,最后写下新的校验信息。
为了减少对系统的影响,大多数的RAID5都读出并将整个条带(包括校验条带)写入缓存,执行2个XOR操作,然后发出并行写操作(通常对整个条带),即便了进行了上述优化,系统仍然需要为这种写操作进行额外的读和XOR操作。
小量写操作困难使得RAID-5技术很少应用于密集写操作的场合,如回滚字段及重做日志。
当然,也可以将存储系统的条带大小定义为经常读写动作的数据大小,使之匹配,但这样会限制系统的灵活性,也不适用于企业中其它的应用。