当前位置: 首页 > 编程日记 > 正文

iSCSI软件套件 介绍

http://blog.csdn.net/do2jiang/article/details/5062586

iSCSI(Internet SCSI)是2003年IETF(InternetEngineering Task Force,互联网工程任务组)制订的一项标准,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议。

从根本上说,iSCSI协议是一种利用IP网络来传输潜伏时间短的SCSI数据块的方法,iSCSI使用以太网协议传送SCSI命令、响应和数据。iSCSI可以用我们已经熟悉和每天都在使用的以太网来构建IP存储局域网。通过这种方法,iSCSI克服了直接连接存储的局限性,使我们可以跨不同服务器共享存储资源,并可以在不停机状态下扩充存储容量。

iSCSI的工作过程:当iSCSI主机应用程序发出数据读写请求后,操作系统会生成一个相应的SCSI命令,该SCSI命令在iSCSI initiator层被封装成iSCSI消息包并通过TCP/IP传送到设备侧,设备侧的iSCSI target层会解开iSCSI消息包,得到SCSI命令的内容,然后传送给SCSI设备执行;设备执行SCSI命令后的响应,在经过设备侧iSCSItarget层时被封装成iSCSI响应PDU,通过TCP/IP网络传送给主机的iSCSI initiator层,iSCS Iinitiator会从iSCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序。

最早的时候,iSCSI的封装过程完全由硬件来实现,随着服务器处理器技术的日益提高,今天,iSCSI的发起与接收已经基本上都采用软件实现。发起端叫iSCSI initiator,接收设备一侧的软件叫iSCSI Target.本文将对比一些iSCSI initiator与iSCSI Target软件。

目前多数的iSCSI Target仿真软件多为需付费的商业软件,而iSCSI initiator则已有许多免费软件可供选用。

三款免费iSCSI initiator

Microsoft iSCSI Initiator

Microsoft提供的iSCSI发起器软件,可让Windows客户端将以太网卡仿真成iSCSI发起器,以便对网络上的iSCSI目标设备发起存取需求,建立iSCSI联机。

Microsoft iSCSI Initiator最新的版本为2008版,可支持Windows 2000/XP/Server 2003/2008等微软作业环境,并分别有支持x64、IA64、x86等处理器平台的版本。下载完成安装后,在Discovery选单输入iSCSI目标设备的 IP或iqn地址,即可在Target选单中选择与iSCSI设备建立连接,透过IP网络存取iSCSI存储设备,还支持多路径传输。

Linux-iSCSI

在使用时,系统中必须备妥kernel-source、kernel、gcc、perl、Apache等相关档案。下载并完成编译后,先将/etc/iscsi.conf内的iSCSI配置组态,改为符合目前使用的iSCSI目标设备的正确网址、用户名称与密码,接下来以 #/etc/init.d/iscsi start启动iSCSI设备,并以fdisk指令分割磁盘,最后用mkdir与 mount指令将磁盘驱动器挂载。

Solaris iSCSI Initiator

Solaris已内建了iSCSI Initiator软件,包括SPARC 64、x64与IA-32等处理器平台都能支持。Sun把iSCSI相关驱动程序整合在iSCSI Device Driver and Utilities的更新程序内。

使用时,先用svcadm enable svc:/network/iscsi_initiator的指令格式先行启始iSCSI Initiator,接下来的的操作主要依靠iscsiadm指令,先以iscsiadm add discovery-address指令设定目标设备地址,再用iscsiadm modify initiator-node修改与目标设备间的连接设定,然后依序使用devfsadm -c iscsi、format、newfs等指令建立新的磁盘区,最后再用mount指令将磁盘区挂载起来即可。

iSCSI Target软件功能特性对比

iSCSI Initiator 可用软件方式实现,同样的iSCSI Target 也行,不过优劣特点也相近,即是偏成本取向且不易达到专属硬件的效能。

要更注意的是,iSCSI Initiator 软件确实多半采用随机赠送的免费策略,而iSCSI Target软件则不同,多数的iSCSI Target 都要收费,仅少数免费,如UNH-iSCSI 项目中除了iSCSI Initiator软件开发也有iSCSI Target 软件开发,虽免费但也多半用于测试验证之用,少用于实际的商务运作。此外,有一个iSCSI Enterprise Target 开放项目能提供iSCSI Target 软件,但目前仅在0.4.x 版,连1.0 正式版都还有段距离。

现阶段真正成熟运用的iSCSI Target 多半由商业软件业者提供,如DataCore Software 的SANmelody/SANmelody Lite,或FalconStor Software 的iSCSI Server for Windows,或String Bean Software 的WinTarget 等,颇为玩味的,三者都是只能安装在Windows 伺服操作系统上,这似乎与节约成本有些违背(纯就操作系统的软件授权费,Windows 向来高于Linux、UNIX)。

iSCSI软件

iSCSI软件

iSCSI软件

实现iSCSI Target的方法也很多。拿飞康来说,飞康公司将iSCSI与ESX捆绑,意味着你没有应用ESX,就不能使用他们的iSCSI软件。DataCore公司同样把iSCSI软件与其产品相捆绑。微软将iSCSI与其操作系统捆绑,供应给OEM厂商并通过他们销售iSCSI软件。如果希望应用 iSCSI软件,你需要从戴尔,惠普,富士通公司或那些销售基于Windows设备的厂商购买。

Nimbus免费产品MySan由于某种原因只能在Windows 2003 SP1上运行。根据他们信息,SP2不支持Windows 2003.Starwind和Kernsafe的iSCSI和独立的服务器有很多不同的版本。最好的方法就是你可以选择一个你需要的产品,你也愿意为此而付款。

为你的Windows环境选择一种iSCSI软件,有些东西一定要记得。看以上表格,有很多不同版本的iSCSI软件,并且特征也不相同。如果你想要仿真磁带库并复制数据,价格就相对比较高。对一个或两个同时发生的连接,价格相对低些。在产品方面,并联(concurrent connections)并没有给你带来很多好处。考虑到可用的特征和不同情况的不同需求,建议尽可能多的使用虚拟化。你需要分析你真正需要什么,并为此做出决定。

iSCSI的2种多路径访问机制

经过数年的发展后,iSCSI已成为IP SAN的代名词,大幅促进了存储局域网络(SAN)的普及应用。但相较于FC SAN,iSCSI虽然有建置价格低的优点,但也被认为存在着许多不足,包括易受攻击、可用带宽低,且缺乏高可用性的冗余访问机制等。

事实上,若有适当的环境配合,iSCSI也能实现多路径I/O(Multi-Path Input/Output,MPIO,多路径输入输出)与多重连结(Multiple Connections per Session,MC/S)两种多重路径存取的机制,可建立负载平衡、故障失效切换等带宽聚合应用,提供更可靠的存储网络环境。

MPIO与MC/S都是利用多条实体存取通道,在服务器(iSCSI Initiator段)与存储设备(iSCSI Target端)之间建立逻辑通道,可透过轮替的存取动作,避免单一实体通道中断时,连带导致存取中断;或是平衡多个实体通道间的传输负载,避免传输负荷集中在单一实体通道上。但2种机制间又有所不同:

多重路径MPIO

MPIO可允许1个iSCSI Initiator透过多个Session连入同1个iSCSI Target设备,以便利用多网卡或iSCSI HBA启用负载平衡与故障失效切换机制,也可称作Multiple Sessions per Initiator.

多重连接MC/S

MC/S可允许在同一个Session中,在iSCSI Initiator与iSCSI Target间建立多个TCP/IP连接,同样也能让用户利用多张网卡或iSCSI HBA启用负载平衡与故障失效切换机制。

简而言之,MPIO是在更高的网络堆栈层上运作(即在iSCSI层上的SCSI指令层),且多条存取路径间的负载平衡机制,是针对1个指定的独立逻辑驱动器(LUN)运作;而MC/S则是iSCSI RFC中所定义的方法,是在iSCSI层上运作,具有更好的传输验证能力(Error Recovery Levels),另外MC/S的负载平衡是“同时”针对所有的逻辑驱动器运作,这点也与MPIO不同。

实现多路径存取的3种方式

iSCSI的底层是IP与以太网,理论上可直接从网卡实施,利用Port Trunking/Teaming/Link Aggregation的方式,将主机上的多张网卡捆绑在1个IP下,再连接到iSCSI存储设备上,搭配iSCSI存储设备传输埠上的对应设定,从而实现实体多路径连接。但问题在于,不是所有网卡都能支持这种方式。

另外,有一些存储厂商提供的SAN路径管理软件,也能协助用户建立iSCSI多路径存取环境,如EMC PowerPath、HDS的Hitachi Dynamic Link Manager、NetApp SnapDrive、Infortrend EonPath等,但这些软件通常都只支持特定厂牌型号的iSCSI设备。

不过我们也可跳过网卡这一层,亦无须使用路径管理软件,直接利用iSCSI Initiator软件配合iSCSI设备建立多路径存取。要利用这种方式建立MPIO还是MC/S,都必须满足一定条件:

(1)iSCSI Initiator端需有多张网卡或网络端口连接到Target端。

(2)iSCSI Initiator软件需支持MPIO或MC/S.

(3)iSCSI Target设备需支持MPIO或MC/S.

其中第1项是最基本的条件,主机若没有2个以上的网络端口(或2张以上网卡/iSCSI HBA)可用,自然谈不上多路径存取,不过目前多数服务器都内建了至少2组GbE网络端口,这点通常不会成为太大问题。

第2项条件则视不同环境而定,目前各主要操作系统厂商提供的iSCSI Initiator软件中,目前以Windows的支持较为齐全,如微软的iSCSI Initiator 2.06版以后就能支持MPIO与MC/S;Sun则有OpenSolaris MPxIO程序可支持Solaris环境的MPIO;Linux环境同样也能支持MPIO.

而就第3点来说,目前MPIO远比MC/S普及,大多数iSCSI存储设备都能支持MPIO,只要能允许同一个iqn建立的session即可。

但能支持MC/S的产品就少了许多,在软件式的iSCSI Target方面,目前能支持的也不多,如微软的iSCSI Target、Sun的Solaris iSCSI Target都不支持。

相关文章:

【Computer Vision】 复现分割网络(1)——SegNet

目录 Tags: ComputerVision编译数据处理训练结果ReferenceTags: ComputerVision 编译 src/caffe/layers/contrastive_loss_layer.cpp:56:30: error: no matching function for call to ‘max(double, float)’ Dtype dist std::max(margin - sqrt(dist_sq_.cpu_data()[i]), Dt…

kotlin + springboot 整合redis,Redis工具类编写及单元测试

参考自&#xff1a; https://www.cnblogs.com/zeng1994/p/03303c805731afc9aa9c60dbbd32a323.html 1、maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://…

:before和::before的区别

在一次项目中&#xff0c;有一次要用到::selection伪元素&#xff0c;然后开发同学问我&#xff0c;CSS中一个冒号和两个冒号有神马区别&#xff1f; 这好像真的是个问题&#xff0c;或许很多前端同学对此都有疑惑&#xff0c;查了些资料&#xff0c;证实了下两个符号的区别&am…

python下载大文件mp4_python合并大量ts文件成mp4格式(ps:上限是450,亲测)

原博文 2018-08-22 17:34 − 1 import os 2 #exec_str rcopy /b ts/c9645620628078.tsts/c9645620628079.ts ts/1.ts 3 #os.system(exec_str) 4 f open(index.m3u8, r, encod...08595 相关推荐 2019-12-19 14:27 − ts readonly name "xxx"; updateValueAndValidi…

提高网站页面收录的几个方法 返回列表 发新帖回复

首先是清楚网站总体有多少页面。 可以用xenu扫描出所有的页面。 1.html地图 网页数量不是太多&#xff0c;可以用网站地图来增加收录&#xff0c;分成几个地图页面。 2.随机文章模块 在不影响用户体验的情况下&#xff0c;在栏目中增加随机文章模块&#xff0c;增加链接曝光度&…

JSP+Servlet+JavaBean

JSP相当于在HTML页面中加上Java代码&#xff0c;一般在<body>标签中放入主要代码。 在JSP里用<%...%>把Java代码包含起来的。 Servlet的生命周期&#xff1a; ①被服务器实例化后&#xff0c;容器运行init方法。 ②当请求&#xff08;Request&#xff09;到达时&am…

logistic回归 如何_第七章:利用Python实现Logistic回归分类模型

免责声明&#xff1a;本文是通过网络收集并结合自身学习等途径合法获取&#xff0c;仅作为学习交流使用&#xff0c;其版权归出版社或者原创作者所有&#xff0c;并不对涉及的版权问题负责。若原创作者或者出版社认为侵权&#xff0c;请联系及时联系&#xff0c;我将立即删除文…

多年没有管理的技术博客了,即日起开始管理起技术博客

多年没有管理的技术博客了&#xff0c;即日起开始管理起技术博客&#xff0c;希望朋友们一如既往的支持转载于:https://www.cnblogs.com/flashicp/archive/2012/08/14/2639054.html

GNS3的默认Telnet程序改成secureCRT

编辑-首选项-一般里的“终端命令”改为C:\Users\ldy\AppData\Local\VanDyke Software\SecureCRT\SecureCRT.exe /t /telnet %h %p 前面是SecureCRT程序的目录&#xff0c; /t是指建立一个新标签 &#xff0c; /telnet的意思是走Telnet协议&#xff0c; %h是要telnet到的主机&am…

关于Vue实例的生命周期created和mounted的区别

关于作者 程序开发人员&#xff0c;不拘泥于语言与技术&#xff0c;目前主要从事PHP和前端开发&#xff0c;使用Laravel和VueJs&#xff0c;App端使用Apicloud混合式开发。合适和够用是最完美的追求。 个人网站&#xff1a;http://www.linganmin.cn 最近刚写了一个手机在线播放…

UVa 10112 - Myacm Triangles

UVa第一卷最后一题。 求内部不含点并且面积最大的三角形。 暴力。 代码如下&#xff1a; 1 #include<iostream>2 #include<cstdio>3 #include<cmath>4 #include<cstring>5 6 using namespace std;7 8 typedef struct node9 { 10 char ch; 11 i…

[转]ASP.NET1.0升级ASP.NET2.0问题总结

来自&#xff1a;http://www.enet.com.cn/article/2006/0310/A20060310510518.shtml1&#xff0e;Global.asax文件的处理形式不一样&#xff0c;转化后将出现错误 在vs2003中Global.asax具有代码后置文件&#xff0c;2.0下, 将代码分离文件移到 App_Code 目录下&#xff0c;以便…

python文本编码转换_Python: 转换文本编码

最近在做周报的时候&#xff0c;需要把csv文本中的数据提取出来制作表格后生产图表。 在获取csv文本内容的时候&#xff0c;基本上都是用with open(filename, encoding UTF-8) as f:来打开csv文本&#xff0c;但是实际使用过程中发现有些csv文本并不是utf-8格式&#xff0c;从而…

ipone 网页版的iphone

本文摘自&#xff1a;http://www.cocoachina.com/bbs/m/list.php?fid6#list

import static

import static&#xff08;静态导入&#xff09;是JDK1.5中的新特性&#xff0c;一般我们导入一个类都用 import com.....ClassName;而静态导入是这样&#xff1a;import static com.....ClassName.*;这里多了个static&#xff0c;还有就是类名ClassName后面多了个 .* &#xf…

poj1423

http://acm.pku.edu.cn/JudgeOnline/problem?id1423n!(log10(sqrt(4.0*acos(0.0)*n))n*(log10(n)-log10(exp(1.0)))1);n1 除外 转载于:https://www.cnblogs.com/FCWORLD/archive/2011/03/12/1982355.html

python缩进在程序中长度统一且强制使用_Python习题纠错1

February, 1991 0.9.1 2.Python语言的缩进只要统一即可&#xff0c;不一定是4个空格&#xff08;尽管这是惯例&#xff09;。 Python缩进在程序中长度统一且强制使用. 3.IPO&#xff1a;Input Process Output 4.Python合法命名的首字符不能是数字。 5.Python保留字&#xff1a;…

ASP.NET MVC3 在WebGrid中用CheckBox选中行

分三步走 1.保证你的webgrid包含在form中 using (Html.BeginForm("Assign","Home")) { } 2.在webgrid中加一列checkbox grid.Column(header: "Assign?", format: <text><input class"check-box" id"assi…

Delphi中使用IXMLHTTPRequest如何用POST方式提交带参

http://blog.sina.com.cn/s/blog_51a71c010100gbua.html说明&#xff1a;服务器端为JAVA&#xff0c;编码UTF-8&#xff0c;返回数据编码UTF-8&#xff1b;数据交换格式JSON。procedure TloginForm.loginBtnClick(Sender: TObject);var jo: ISuperObject; //JSON接口 req: IX…

Windows图标:有一些你未必知道的东西

有一天&#xff0c;我的程序在任务栏的应用程序中看起来是这样的很奇怪&#xff0c;我的图标明明不是这样的&#xff0c;在资源管理器的文件夹里面&#xff0c;我的图标能够正常显示&#xff0c;在桌面的任务栏里&#xff0c;也能正常的显示&#xff0c;唯独在任务管理器里显示…

几种函数式编程语言

1、函数式编程语言有&#xff1a;lisp,hashshell,erlang等。 2、在函数中的参数&#xff0c;有一一对应的&#xff0c;也有指定模式的&#xff0c;还有使用能数组。如*argp&#xff08;元组&#xff09;&#xff0c;**argp(字典&#xff09;。 3、在pyphon语言中有一些内置的函…

python逐个读取文件并处理_逐个读取多个文件并用python进行处理

我在python中使用Pybrain&#xff08;神经网络库&#xff09;进行图像处理。我在一个目录中有196个文件&#xff0c;它保存在下面代码中的所有_文件中。我试着打开每个文件并分别对每个文件进行处理&#xff0c;但它将所有文件数据放在一个字符串中&#xff0c;我希望每个文件逐…

HDU 2102 A计划

该题是一道典型的搜索题&#xff0c; #include<stdio.h> #include<stdlib.h> #include<string.h> struct Node {int x, y;int time;int flag; }q[100024]; int d[4][2]{ 0,1,1,0,0,-1,-1,0 }; int N,M; char map[2][13][13]; void getxy( int &X,int &a…

node.js是做什么的?

作者&#xff1a;厂长链接&#xff1a;https://www.zhihu.com/question/33578075/answer/56951771来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。国外有一篇非常好的Node.js 介绍文章&#xff0c;从原理入手讲解&#x…

K8S - Kubernetes简介

Kubernetes Kubernetes&#xff08;简称K8s&#xff0c;用8代替8个字符“ubernete”&#xff09;是Google开源的一个容器编排引擎&#xff0c;支持自动化部署、大规模可伸缩、应用容器化管理。 Kubernetes 是目前最为广泛且流行的容器编排调度系统&#xff0c;也是现在用来构建…

python中filenotfounderror_Python3 报错 FileNotFoundError: [WinError 2]

Python3 报错 FileNotFoundError: [WinError 2]工具/原料 Python3.7 chromedriver 方法/步骤 1 首先&#xff0c;打开py文件&#xff0c;如图&#xff0c;有如下代码。 import time from selenium import webdriver driver webdriver.Chrome()2 然后运行py文件&#xff0c;run…

Push Notifications

push notification 使用&#xff1a; 参考资源: http://tiny4cocoa.com/thread-1406-1-1.html http://bbs.ldci.com.cn/read.php?tid-19971.html http://www.cocoachina.com/bbs/read.php?tid-3770-keyword-apns.html http://code.google.com/p/apns-python-wrapper/ http://…

[原创]Bash中的$*和$@的区别

2019独角兽企业重金招聘Python工程师标准>>> 在Bash脚本中&#xff0c;$*和$都用于表示执行脚本时所传入的参数。先通过一个例子看看他们的区别: #!/bin/bash # testvar.sh echo "-------------ISF is set to \"-seperator\" ------------" IFS…

文本处理工具之grep和egrep

文本处理工具之grep和egrep grep全称global search regular expression (RE) and print out the line正则表达式&#xff08;一类字符所书写的模式pattern&#xff09; 元字符&#xff1a;不表示字符本身的意义&#xff0c;用于额外功能性的描述基本正则表达式的元字符 字符匹配…

【转】堆栈和托管堆 c#

原文地址&#xff1a;http://blog.csdn.net/baoxuetianxia/archive/2008/11/04/3218913.aspx首先堆栈和堆&#xff08;托管堆&#xff09;都在进程的虚拟内存中。&#xff08;在32位处理器上每个进程的虚拟内存为4GB&#xff09; 堆栈stack 堆栈中存储值类型。 堆栈实际上是向…