iscsi的工作原理与优化(2)
2.1 iSCSI协议模型,iscsi【会话层协议,即应用协议】
iSCSI使用TCP/IP协议在不稳定网络上进行可靠的数据传输。iSCSI层和标准SCSI集在协议栈中的位置如图1所示。iSCSI层包括了已封装的SCSI命令、数据和状态。就是说若Initiator端的操作系统或应用程序需要进行数据写操作,SCSI的CDB(Command Description Block命令描述块)必须被封装以便能够在串行千兆位链接上传输到Target端。iSCSI属于端到端的会话层协议,它定义的是SCSI到TCP/IP的映射,即Initiator将SCSI指令和数据封装成iSCSI协议数据单元,向下提交给TCP层,最后封装成IP数据包在IP网络上传输,到达Target后通过解封装还原成SCSI指令和数据,再由存储控制器发送到指定的驱动器,从而实现SCSI命令和数据在IP网络上的透明传输。它整合了现有的存储协议SCSI和网络协议TCP/IP,实现了存储与TCP/IP网络的无缝融合。

iscsi的网络应用类型:
SAN网络:Storage Area Network 存储区域网络,多采用高速光纤通道,对速率、冗余性要求高。使用iscsi存储协议,块级传输。
NAS网络:Network Attachment Storage,网络附件存储,采用普通以太网,对速率、冗余无特别要求,使用NFS、CIFS共享协议,文件级传输。
SAN和NAS的区别:1.SAN一般特指存储网络的构建方式,NAS一般特指产品。
2.SAN有单独的存储网络,NAS使用现有网络
家庭网络存储设备:FREENAS,用的是FREEBSD系统
iscsi的优点能快速提高网络环境,能节约企业30-40%的成本主要包括;
硬件成本低:构建iSCSI存储网络,除了存储设备外,交换机、线缆、接口卡都是标准的以太网配件,价格相对来说比较低廉。
同时,iSCSI还可以在现有的网络上直接安装,并不需要更改企业的网络体系,这样可以最大程度地节约投入。
操作简单,维护方便:对iSCSI存储网络的管理,实际上就是对以太网设备的管理,只需花费少量的资金去培训iSCSI存储网络管理员。
当iSCSI存储网络出现故障时,问题定位及解决也会因为以太网的普及而变得容易。
扩充性强:对于已经构建的iSCSI存储网络来说,增加iSCSI存储设备和服务器都将变得简单且无需改变网络的体系结构。
带宽和性能:iSCSI存储网络的访问带宽依赖以太网带宽。随着千兆以太网的普及和万兆以太网的应用,iSCSI存储网络会达到甚至超过FC
(FiberChannel,光纤通道)存储网络的带宽和性能。
突破距离限制:iSCSI存储网络使用的是以太网,因而在服务器和存储设备的空间布局上的限制就会少了很多,甚至可以跨越地区和国家。
iSCSI 在安全方面相关设定,iSCSI 在安全管理方面有着不错优势,可以使用"主机"和"使用者"来完成允许或拒绝存取的设定。
安装完会默认生成底下列出例子为“只允许 172.16.7.120 这台 Initiator”并“拒绝全部”设定
iscsi的安全配置
/etc/initiators.allow 内容,最后一行允许 172.16.7.120(其他三行被#注解) # Some exmaples
#iqn.-.com.example:storage.disk1.sys1.xyz 192.168.22.2, 192.168.3.8
#iqn.-.com.example:storage.disk1.sys4.xyz [3ffe:::::43ff:fe31:5ae2], [3ffe:::::]/
iqn.-.com.example:storage.disk2.sys1.xyz 172.16.7.120 /etc/initiators.deny 内容,最后一行拒绝全部(其他四行被#注解) # Some exmaples
#iqn.-.com.example:storage.disk1.sys1.xyz ALL
#iqn.-.com.example:storage.disk1.sys2.xyz 192.168.12.2, 192.168.3.0/, 192.167.1.16/
#iqn.-.com.example:storage.disk1.sys4.xyz [3ffe:::::43ff:fe31:5ae2], [3ffe:::::]/
iqn.-.com.example:storage.disk2.sys1.xyz ALL
注意到 iqn 需与 /etc/ietd.conf 内的 iqn 相同。
iSCSI性能瓶颈
iSCSI协议建立在传统的TCP/IP协议之上,在进行实际数据传输时,其传输系统性能受限于TCP/IP协议栈负载及以太网最大带宽,另外iSCSI协议层也会额外增加一些负载开销,在实际应用中,iSCSI数据传输性能仍然存在瓶颈。以发送端的写操作为例,一次完整的iSCSI协议数据传输包括数据封装、数据拷贝、数据传输.
优化:
1.优化网络传输
iSCSI协议利用通用的TCP/IP协议进行海量存储数据传输,传统的TCP/IP协议用于在不可靠的数据链路上实现可靠的数据传输,其性能必然受限于TCP/IP本身的传输性能,基于通用TCP/IP协议的网络存储面临的一个很重要的性能问题就是TCP/IP协议栈开销。目前已经出现了一些新的网络技术用于改善TCP/IP协议栈开销。
1)有些新型网卡可以分担过去由主机CPU完成的CRC校验和计算功能,利用这些网卡,可进一步释放主机CPU资源,进而降低CPU利用率。
2)一些新型网卡可以实现过去由主机TCP/IP软件协议栈完成的TCP包拆分功能,这样也可缓解主机CPU的压力。
3) iSCSI SAN网络绝不能与一般的以太网用户混合。如果混合不仅会削弱SAN的性能,还会使LAN的存储数据受到影响。正确的做法是将iSCSI SAN网络与日常的用户网络分开。最常见的分离方法是采用虚拟局域网( VLAN),限制iSCSI网络通向虚拟局域网,保持正常的网络通道。
2.避免数据挎贝
iSCSI协议层建立在传统的TCP/IP协议层之上,其PDU数据包必须通过内存拷贝的方式传递给TCP/IP协议栈的缓冲区进行网络传输。而内存拷贝要进行内存读写操作各一次,内存数据拷贝又必须依赖于CPU执行指令来完成,因此会消耗CPU资源并降低内存性能,最终影响iSCSI系统性能。为了避免数据拷贝操作,目前主要的方法是采用TOE硬件方案:TOE方案是将过去由操作系统完成的TCP/IP协议栈直接转移到TOE网卡上由硬件实现。这个方案有效她避免了TCP/IP协议栈对系统CPU资源的占用,优化了iSCSI系统性能。TOE卡可以从一些供应商处获得,如Alacritech、LeWiz Communications、
QLogic等。
3.数据校验的优化
CRC校验数据的生成或检测均是计算密集型操作,会消耗大量的CPU资源,因此如何优化数据校验性能成为优化iSCSI性能的关键。目前常用的优化方案有下面几种。
(l) iSCSI HBA硬件方案
为了进一步消除CRC校验运算对系统CPU资源的影响,工业界将iSCSI协议及TCP/IP协议全部集成到网卡上构成iSCSI的HBA适配卡,这种方式中的iSCSI HBA适配卡对主机来说就是一块SCSI卡,既不存在数据拷贝问题,也不存在数据校验问题。采用硬件方案虽然能进一步释放CPU资源,但iSCSI HBA硬件处理能力有限制,无法分享CPU日益提升的性能。
(2)优化数据校验
通过优化CRC校验算法来加快校验过程也是提高iSCSI性能的一个途径。
iscsi的工作原理与优化(2)的更多相关文章
- MySQL/MariaDB数据库的索引工作原理和优化
MySQL/MariaDB数据库的索引工作原理和优化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际工作中索引这个技术是影响服务器性能一个非常重要的指标,因此我们得花时间去了 ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- memcached工作原理与优化建议
申明,本文为转载文:http://my.oschina.net/liuxd/blog/63129 工作原理 基本概念:slab,page,chunk. slab,是一个逻辑概念.它是在启动memcac ...
- Nginx工作原理和优化、漏洞
1. Nginx的模块与工作原理 第三方模块:HTTP Upstream Request Hash模块.Notice模块和HTTP Access Key模块. 图1-1展示了Nginx模块常规的HT ...
- Nginx 工作原理和优化、漏洞
1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(locat ...
- Nginx工作原理和优化、漏洞(转)
查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -Vnginx version: nginx/1.2.3built by gc ...
- 【转载】Nginx 的工作原理 和优化
1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(locati ...
- Nginx工作原理和优化
转自:http://blog.csdn.net/hguisu/article/details/8930668 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过 ...
- ElasticSearch工作原理与优化
elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的,通过倒排索引的方式快速查询.比如一本书的目录是索引,然后快速找到每一章的的文本内容这种叫正向索引:而如果一件衣服 ...
随机推荐
- Promise入门详解
异步调用 异步 JavaScript的执行环境是单线程. 所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个,它 ...
- P1130 红牌(动态规划)
P1130 红牌 思路如下 这一题很像数字金字塔,我们可以正着求最小时间,当然也可以逆着求最小时间, 如果正着求:那么我们怎么求状态转移方程呢?,在这里我们假定状态转移方程为:dp[ i ][ j ] ...
- Elasticsearch 核心术语概念
Elasticsearch 相当于一个关系型数据库 索引 index 类型 type 文档 document 字段 fields 跟关系型数据库对比 Elasticsearch 相当于一个数据库 索引 ...
- SignalR新手系列教程详解总结(转)
SignalR新手系列教程详解总结 GlobalHost.ConnectionManager.GetHubContext<TodoListHub>() .Clients.Clients(l ...
- IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试
IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试 目的不是为了编写TSC2007驱动,是为了学习IIC驱动的编写,读一下TSC2007的ADC数据进行练习,, Linux主机驱动和外设驱 ...
- 「一闻秒懂」你了解goroutine和channel吗?
开源库「go home」聚焦Go语言技术栈与面试题,以协助Gopher登上更大的舞台,欢迎go home~ 背景介绍 大家都知道进程是操作系统资源分配的基本单位,有独立的内存空间,线程可以共享同一个进 ...
- 7.5 this关键字的使用;标准学生类的编写 、构造方法的格式
/** 学生类** 起名字我们要求做到见名知意.* 而我们现在的代码中的n和a就没有做到见名知意,所以我要改进.** 如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近的原则. * 我们 ...
- Array(数组)对象-->sort() 方法
1.定义和用法 sort() 方法用于对数组的元素进行排序. 默认排序顺序为按字母升序. 语法: array.sort(sortfunction) 参数: sortfunction:规定排序顺序.必须 ...
- Array(数组)对象-->数组的访问
1.访问数组: 通过指定数组名以及索引号码,你可以访问某个特定的元素. 格式: 数组对象名[下标] 例如:arr[0] 就是访问数组第一个值 var arr = new Array(3); arr[ ...
- Mycat使用配置实践
本来写了好多,关于配置的解释和使用以及注意,但是发现有点啰嗦含金量也不高,所以直接把实际使用的一个例子放着吧,供参考. <!DOCTYPE mycat:schema SYSTEM "s ...