iSCSI前沿技术论文研究.docx
- 文档编号:10952249
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:19
- 大小:154.40KB
iSCSI前沿技术论文研究.docx
《iSCSI前沿技术论文研究.docx》由会员分享,可在线阅读,更多相关《iSCSI前沿技术论文研究.docx(19页珍藏版)》请在冰豆网上搜索。
iSCSI前沿技术论文研究
目录
摘要3
1.引言5
2.相关技术6
2.1iSCSI技术6
2.2TCP拥塞窗口控制算法6
2.3RAID技术7
2.4逻辑卷管理(LVM)7
3.内容简述及比较9
3.1iSCSI远程存储访问的优化9
3.2针对iSCSI存储服务器设计的新的分级数据cache架构10
3.3iSCSI带外存储虚拟化的设计和实现12
3.4论文内容的比较14
4.iSCSI存储虚拟化的具体实现15
4.1对于具体实现的讨论和说明15
4.2整体架构15
4.3目标器的工作机制17
4.4客户端的工作机制18
参考文献20
摘要
随着网络技术的飞速发展,基于廉价TCP/IP协议的存储区域网络(IPStorageAreaNetwork,IPSAN)越来越受到人们的欢迎,其中的代表就是iSCSI技术。
iSCSI技术的核心思想是在IP网络上传输SCSI命令和数据。
它成本低、传输速度快、标准化程度高,适合中小型企业。
但是它也存在一些问题,比如高延迟环境下性能急剧下降、负载较大时吞吐量不能满足要求、一对一模式不适应虚拟化要求等等。
本文将对三篇文章的内容进行介绍和分析:
OptimizationofiSCSIRemoteStorageAccessthroughMultipleLayers、ANewHierarchicalDataCacheArchitectureforiSCSIStorageServer、DesignandimplementationofiSCSIOut-of-bandstoragevirtualization。
这三篇文章研究的主体都是iSCSI技术,并且从三个不同的层面分别解决了一个iSCSI技术存在的问题。
第一篇主要是针对iSCSI远程存储访问的优化,研究了iSCSI/SCSI层、TCP/IP层以及以太网层对于iSCSI性能的影响,并给出了提高iSCSI性能的方法和参数设置。
第二篇主要是针对iSCSI服务器设计了一种新的分级数据缓存结构,称为DCA,并且设计了SLAP算法来辅助DCA的工作,使得iSCSI服务器在负载压力大时仍能保证吞吐量。
第三篇设计和实现了iSCSI带外虚拟化,通过增加一个管理层来对后端设备进行抽象。
在介绍了三篇论文的内容之后,本文还对它们的相同点和不同点进行了简单的分析。
本文最后对于iSCSI存储虚拟化进行了深入的讨论,对于原论文中的一些设计进行了讨论和修改,并给出了一个改进后的iSCSI三方通信结构,实现了iSCSI存储虚拟化的内容。
关键字:
iSCSI,分级数据缓存结构,存储虚拟化
Abstract
Withtherapiddevelopmentofnetworktechnology,IPStorageAreaNetwork(IPSAN)basedonlow-costTCP/IPprotocolbecomemoreandmorepopular.iSCSItechnologyisoneoftherepresentatives.ThecoreideaofiSCSItechnologyistotransportSCSIcommandsanddataontheIPnetwork.Itislow-cost,transmissionspeed,highdegreeofstandardizationforsmallandmediumenterprises.Butitalsohassomeproblems,suchasdrasticperformancedeteriorationinthecaseoflonger-latency,toosmallthroughputinlargeloadenvironment,point-to-pointmodeisnotsuitedtorequirementsofstoragevirtualization.
Wewillintroduceandanalysisthecontentofthethreepapers:
OptimizationofiSCSIRemoteStorageAccessthroughMultipleLayers,ANewHierarchicalDataCacheArchitectureforiSCSIStorageServer,DesignandimplementationofiSCSIOut-of-bandstoragevirtualization.TheirstudiesareallaboutiSCSItechnology,andsolveaproblemsaboutiSCSItechnologyfromthreedifferentaspectsrespectively.ThefirstoneisabouttheoptimizationofiSCSIremotestorageaccess.ItstudiestheimpacttoiSCSIperformancefromiSCSI/SCSIlayer,TCP/IPlayerandEthernetlayer,andshowsthewaytoimproveiSCSIperformanceandtheparametersettings.ThesecondonedesignsanewhierarchicaldatacachearchitectureforiSCSIstorageserver,calledDCA,anddesignsaSLAPalgorithmtohelptheDCA.ItcanmakesiSCSIserverstoensurethroughputinlargeloadenvironment.ThelastonedesignsandimplementstheiSCSIout-of-bandstoragevirtualization.Itmakestheback-enddevicesvirtualbyaddingamanagerlayer.Afterintroducingthethreepapers,wemakeasimpleanalysisaboutsimilaritiesanddifferences.
Intheendofthispaper,wemakeadeepdiscussionaboutiSCSIstoragevirtualization.Weanalysissomecontentandmakesomechangesintheoriginalpaper.WealsogivesanimprovedTripartitecommunicationarchitecture,whichimplementstheiSCSIstoragevirtualization.
Keywords:
iSCSI,HierarchicalDataCacheArchitecture,storagearchitecture
1.引言
当今是一个信息爆炸的时代,企业的数据量越来越大,对于这些数据的存储需求也越来越迫切,传统的存储模式已经不能满足企业级存储应用的需求了。
随着Internet的飞速发展和分布式系统的广泛应用,网络存储技术已经成为了存储领域一个主要的研究方向。
在网络存储技术中,iSCSI是IPSAN的代表。
iSCSI技术一个很大的特点就是对传统技术的继承和发展。
SCSI技术是一个被广泛采用的存储标准,有一定的历史,并且发展态势良好。
TCP/IP协议是计算机网络中最成熟的协议,并且IP网络的基础设施已经非常完善了。
利用这两个优秀和成熟的技术,iSCSI在很多方面展现出了自己的优势。
在应对远程存储问题时,iSCSI技术可以利用现有的基础设施,成本低、传输速度快、标准化程度高、兼容性好、易于管理。
越来越多的中小型企业选择iSCSI技术来建立数据存储服务中心。
iSCSI虽然在很多方面都有很大的优势,但也存在着许多不能被忽视的缺点。
在传统iSCSI架构中,资源需要预先分配,使用起来很不灵活,很难满足用户不断变化的需求。
iSCSI基于点对点的通信模式不支持虚拟化,而且系统中的连接数量非常庞大,对于系统和网络来说是很大的负担。
在高延迟的环境下,iSCSI系统的性能将会有非常严重的恶化。
以上这些严重限制了iSCSI技术的发展。
从iSCSI技术诞生开始,人们就没有停止对于它的改进。
这些改进是多方面的,包括提升它的性能、在高负载下提高吞吐量、提供虚拟化支持等等。
本文所研究的三篇论文就是分别从这三个方面来对iSCSI技术进行改进的。
论文[1]主要研究iSCSI远程存储访问的优化,其优化的层次不仅仅限于iSCSI协议层,而是对包括TCP/IP层在内的多个层次进行了综合的优化;论文[2]针对iSCSI存储服务器设计了一种新的分级数据cache架构,通过这种新的架构来有效地削减局部互联通信,从而提高存储服务器性能;论文[3]研究的内容是iSCSI带外存储虚拟化的设计和实现,提供了一种简单实用的iSCSI虚拟化机制。
虽然三篇论文所侧重的技术细节以及针对的问题各不相同,但都是为了解决iSCSI技术在实际应用中面临的一些问题。
本文接下来的部分是这样组织的:
第二部分简单介绍三篇论文中所涉及的一些基础技术,包括iSCSI技术、TCP拥塞窗口控制算法、RAID技术和LVM;第三部分对三篇论文的核心内容进行阐述,并且会对一些关键的部分进行比较;由于本文作者在iSCSI存储虚拟化方面也做过相应的设计,并且和论文[3]在很多地方有相似之处,所以第四部分重点介绍iSCSI存储虚拟化的实现,以及对论文[3]的深入讨论和改进。
2.相关技术
2.1iSCSI技术
iSCSI是标准的IPSAN协议。
iSCSI协议是建立在SCSI协议之上的。
在iSCSI中,通信是在两方之间进行的,发起通信的一方称为启动器(initiator),接收请求的一方称为目标器(target)。
在启动器发起通信之前,需要创建目标器。
对于用户来说,目标器就是一个可用的存储设备,它可以是一个磁盘,也可以是一个分区。
在目标器创建完成之后,启动器通过iSCSI协议的发现机制就可以看到该目标器了。
启动器要使用该目标器,就必须先进行登录,在登录完成之后就可以进行数据传输了。
启动器和目标器之间传输的是iSCSI协议数据单元(PDU),而协议数据单元的本质就是SCSI命令和响应。
iSCSI协议将SCSI命令集封装到PDU中,又将PDU封装到IP包中,然后再在IP网络中传输。
它能在很大程度上减少访问和传输存储数据的时间。
图2.1iSCSI的通信模式
iSCSI技术的重点是将SCSI命令通过IP网络传输,所以它的通信模式是比较简单的。
iSCSI协议并没有在资源管理上做太多的工作。
一个目标器之后,连接到它上面的启动器看到的就是该目标器的所有存储空间,即在iSCSI通信模式中,目标器是存储资源的分配单位,而且是独立的。
当有多个启动器登录同一个目标器的时候,该目标器对于这些启动器来说是共享的。
启动器连接多个目标器的时候,目标器之间是独立的,相当于启动器中的多个磁盘或者分区。
2.2TCP拥塞窗口控制算法
TCP使用拥塞窗口(CWND)的概念来控制网络拥塞。
CWND指明了能被连续发送而不会收到数据接收方的延迟ACK包的最大包数,即超过这个值就可能收到延迟ACK。
CWND是一个参数,它为了达到网络拥塞控制的目的而限制了数据发送者的行为。
一般来说,如果TCP通信状态被认为是正常的,那么当数据发送发收到一个ACK是就增大CWND的值。
但是,如果TCP实现检测到一个错误并且判定通信的状态是不正常的,那么CWND就会急剧减小。
这是CWND设计的总体原则,但是在具体的实现中,算法在细节上并不是完全相同的。
比如在Linux2.6版本的内核中,就有多个控制算法的实现,我们可以使用用户命令来改变算法,这些算法包括Reno、二分增长拥塞控制(BIC)、WestWood以及HamiltonTCP等等。
2.3RAID技术
RAID就是独立冗余磁盘阵列(RedundantArrayofIndependentDisk)。
它是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能与数据备份能力的技术。
RAID有不同的级别,而不同的级别对应于不同的性能、容量和可靠性,代表了这三种关键参数的不同平衡组合。
RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。
因为将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。
如果刚好所需要的数据在不同的驱动器上效率最好。
它不需要计算校验码,实现容易。
它的缺点是它没有数据差错控制,如果一个驱动器中的数据发生错误,即使其它盘上的数据正确也无济于事了。
RAID4和RAID3很像,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。
它的特点和RAID3也挺像,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。
RAID5是分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。
RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。
因为奇偶校验码在不同的磁盘上,所以提高了可靠性,允许单个磁盘出错。
2.4逻辑卷管理(LVM)
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
通过LVM系统管理员可以轻松管理磁盘分区,如:
将若干个磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。
管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。
管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:
“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。
而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
LVM将存储虚拟化,使用逻辑卷,可以不再受限于物理磁盘的大小。
另外硬件相关的存储设置被隐藏,可以不用停止应用或卸载文件系统来调整卷大小或进行数据迁移。
因而可以减小操作成本。
它与直接使用物理存储更是拥有很多优势:
(1)灵活的容量,使用逻辑卷时,文件系统可以扩展到多个磁盘上,可以聚合多个磁盘或磁盘分区成单一的逻辑卷。
(2)可伸缩型的存储池,可以使用简单的命令来扩大或缩小逻辑卷的大小,而不用重新格式化或分区磁盘设备。
(3)在线的数据在分配,可以在线移动数据,数据可以在磁盘在线的情况下重新分配。
(4)方便的设备命名,逻辑卷可以按自己喜欢的方式起任何名字。
(5)条块化的磁条,可以生成一个逻辑盘,它的数据可以被条块化存储在多个磁盘上,这样可以明显提升数据吞吐量。
(6)镜像卷,逻辑卷可以提供方便的方法来镜像数据。
(7)卷快照,使用逻辑卷可以获取设备快照用来一致性备份或者测试数据更新效果,并且还不会影响真实数据。
3.内容简述及比较
3.1iSCSI远程存储访问的优化
一般情况下,CWND的大小对于用户程序来说是不可见的,所以需要先对TCP的内核源码进行一些处理。
在TCP内核源码中插入监视的功能,让CWND对于用户来说是可见的,这个功能是实验和改进的基础。
虽然是为了提高iSCSI的性能,但仅仅只分析iSCSI层是不够的,所以需要对其他的层也进行优化和评估,包括SCSI/iSCSI层、TCP/IP层以及以太网层。
为了分析各层对于iSCSI性能的影响,实验设置了多个可能带来影响的参数,从iSCSI本身的参数,到TCP/IP拥塞窗口的控制参数,再到NIC的参数,可以说已经非常全面了。
具体的设置和测试的细节非常的繁琐,限于篇幅在此就不进行阐述了,我们重点关注结果和分析部分。
首先看总体性能和理论值的比较。
为了使用sg_dd命令,实验修改了内核以使得实验环境能兼容这个命令,并以最大为4096KB的块大小来访问target,首次爆发长度(FirstBurstLength)和最大爆发长度(MaxBurstLength)被设置为4194304。
经过实验发现,优化后的iSCSI的性能仍然只有理论性能的一半。
为了让优化后的iSCSI性能更接近理论值,我们需要研究导致延迟性能下降的因素。
然后关注一个持续的iSCSI写访问,研究的对象是从发送第一个包到最后一个包得数据转换时间(Ta)、通告包的准备时间(Tb)、直到下次写的时间间隔(Tc)以及RTT。
实验发现,Tb和Tc几乎是稳定不变的,而RTT几乎和在模拟器里设定的值相同。
从另一方面看,iSCSI性能低于理论值得原因可能来自发送时的数据转换时间Ta,它和RTT有一定的比例关系。
因此,数据转换时的细节值得进一步研究。
通过更进一步的实验,我们发现,短时间内包被连续转换之后,包得发送突然停止了。
经过一个固定的时间后,包的连续发送又开始了。
很明显这就是iSCSI性能在高延时环境下降低的原因。
这个间隔大概是50ms,和RTT相同。
最后我们得出了一些结论。
当RTT为32ms时,优化的iSCSI的性能是默认iSCSI设置的四倍。
而且,我们构建了iSCSI连续访问的模型,并分析了CWND和包转换对于高延时环境下iSCSI性能下降的影响。
iSCSI访问的挂起和重启是被TCP层控制的,因为在重启前只收到了TCPACKs。
但是,这个控制因素不是只由CWND来决定。
3.2针对iSCSI存储服务器设计的新的分级数据cache架构
在这篇论文里,作者提出了一种称为DCA的分级数据cache架构,通过它来有效地削减局部互连通信,从而提高存储服务器性能。
DCA由两部分组成:
一个是在NIC里的读cache,称为NICcache;另一个是在主存里的读写统一cache,称为辅助cache。
NICcache为大部分的读请求服务,没有通过PCI总线获取数据。
辅助cache的功能包括:
(1)在每次部分NICcache命中时为一些读请求服务;
(2)为NICcache指示缓存的位置;(3)在局部吸收处理最短暂的写操作。
存储服务器cache的局部性距离(对同一个数据块的两次请求之间的数据块数)通常比使用了更高级别cache的局部性距离要长。
这是因为多级存储缓存在客户端部署并且在应用服务器已经过滤了大部分的应用局部性。
因此,存储服务器里的PCI总线流量要比诸如web服务器的应用服务器密集得多。
我们模拟了单级的基于最近最少使用(LRU)策略的NICcache,结果只有微不足道的NIC命中率和局部互连流量的减少。
这促使我们为基于iSCSI的存储服务器去探索一种新的、能最好利用块级局部性和NICcache空间的cache架构。
图3-1.DCA架构图
图3-1说明了在一个典型的iSCSI存储服务器里的两级DCA缓存架构。
在图中,内存通过内存控制中枢(MCH)连接到CPU,而网络结构通过PCI总线连接到I/O控制中枢(ICH)。
一个只读NICcache工作在NIC一边,以减少内存和网络接口之间的PCI流量。
在一个iSCSI存储服务器里,多个iSCSI目标器模块经常被用来提供各种并行数据服务。
因此,板载NICcache空间经常被多个iSCSI目标器共享。
为了有效地管理所有iSCSI目标器的NICcache空间,在DCA里,整个NICcache的目标器目录和每个目标器的cache目录都由主机系统来维护。
因为主机系统是拆封iSCSI数据包的唯一地点,所以在主机内存中维护NICcache元数据对于显著减少由NICcache查找和维护操作带来的PCI流量很有好处。
为了现有linux内核级网络和I/O栈的兼容性考虑,我们设计了一个在iSCSI应用层、称为辅助cache的读写统一cache,而不是将之与已经针对其各自功能而被高度优化的内核级套接字缓冲区或者是磁盘I/O缓冲区cache合并。
辅助cache的体积要比NICcache的大。
它被用来协助NICcache做位置放置的决定以及通过定时刷新的写回策略来吸收短暂的写操作。
在DCA方案里,PCI流量的减少在很大程度上取决于三个因素:
NICcache命中率,辅助cache命中率,以及为保持NICcache和辅助cache的一致性所花费的开销。
DCA的分级缓存方法解决了围绕处理混合读写传输的各种问题,这些问题是传统的缓存系统很难解决的,主要原因是被请求的服务器的块具有比较差的局部性。
但是,作为一个两级的存储cache架构,和单级NICcache相比它还有更多的问题需要解决。
为了有效地组织NICcache上有限的空间,我们在我们的设计中考虑以下的四个问题:
基本cache行单元、管理cache空间、包容对独占、cache一致性。
由于对于NICcache来说,一个简单的基于访问的布局算法不能在混合读写传输的情况下很好地工作,我们需要开发一种新的算法,这个算法可以确定那些虽然访问率超过了一个预定的阈值,但在未来被读取的可能性仍然很高的块。
我们称这些块为热块。
我们的cache布局算法的目标是在NICcache里缓存大部分的热块,并将冷块移除cache。
虽然DCA和一般的分级cache架构有一些相似之处,但DCA和前期的工作还是存在着显著的区别。
首先,DCA的cache布局决策是由存储服务器做出的,对客户端是透明的,而目前的解决方案是和存储客户端合作。
第二,DCA维护一个辅助cache和NICcache的包容性。
第三,目前的分级cache架构解决方案旨在在更高的级别提高命中率,同时在广域网里减少降级开销。
但是DCA旨在将低级NICcache的命中率最大化,从而削减局部互连流量。
据我们所知,这项工作是首批开发分级cache布局算法来有效减少存储服务器里的PCI流量的。
为此作者基于离线分析的数据专门设计了SLAP算法。
对于iSCSI读请求,SLAP算法在NICcache和辅助cache中查找NICcache中的部分命中或丢失。
由于任何数据块都需要被传递到NIC,在辅助cache发生读不命中后,如果辅助cache的读记录数大于写记录数,那么mov_nic_cache()操作将被调用,将被请求的块从NIC发送缓冲区复制到NICcache。
根据我们的跟踪分析,这是在大部分实例里有较强读局部性的一个很好的征兆。
通过在NIC里引入一个缓冲cache,可以进一步地节省移动操作的开销。
对于iSCSI写请求,辅助cache和NICcache之间的一致性检查是必须的。
如果辅助cache的读请求命中并且它之前的请求类型也是读,那么该块条目若存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iSCSI 前沿技术 论文 研究
![提示](https://static.bdocx.com/images/bang_tan.gif)