HI,movno1
分类: LINUX
2006-04-04 14:06:49
Linux网络环境下iSCSI配置攻略(1) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一、iSCSI发展路线图 2001年初:由IBM及Cisco于2001年制定iSCSI技术,两家并且分别推出了支持iSCSI的产品—IBM IP Storage 200i及Cisco SN5420 Router。 2001年12月:NetApp公司推出了自家的IP SAN,它采用的是自行开发的VLD协议(Virtual Local Disk),存储上属于Block over IP方式。 2003年2月:SNIA(Storage Networking Industry Associate,存储网络工业协会)终于正式制定通过了iSCSI标准。而业界莫不把此标准化视为iSCSI发展历程中的最关键因素,自此开始,有愈来愈多的厂商开始进一步开发合乎业界标准的相关产品,iSCSI也开始受到业界目光的青睐。 2003年5月:微软在Windows Server 2003 中,正式开始支持iSCSI,并提供iSCSI Initiator驱动程序的下载。微软此项深具推波助澜的作法,带动了整个iSCSI业界的发展。所以接下来,不论各类作业平台或软硬件的支持会愈来愈齐备。 2004年10月:HP发布的IP Storage 500/1500。 2005年:自从标准化及微软支持解决了iSCSI最大的发展瓶颈之后,iSCSI的全面普及也只是时间早晚的问题而已。但业界对其开始普及的时间点一直莫衷一是。一般调查机构多半认为该时间点应在2006年,但各家厂商却异口同声地认为2005年就有机会看到市场大幅起飞。 二、 iSCSI技术 SAN(Storage Area Network的缩写)意为存储区域网络,是真正的专注于企业级的存储。SAN采用一个分离的网络(从传统的局域网中分离)连接所有的存储器和服务器,这个网络可以采用高性能的实现技术,如光纤通道(Fiber Channel),可以容纳SCSI等协议,使数据块的移动更为有效,也便于用户自由增加磁盘阵列、磁带库或服务器等设备。现在的SAN基本都是通过Fibre Channel来实现的,Fibre Channel,简称FIBRE CHANNEL,又称光纤通道,是利用专用设备进行数据高速传输的一种网络标准,主要用于连接服务器的干线(backbones),并把服务器连接到存储设备上。 采用高速的FIBRE CHANNEL作为传输媒介的SAN具有光纤信道在距离、性能和连接性等方面的优势,如果结合光纤通道交换机,则可以提供高达2Gb/s的数据传输速率,使独立于应用服务器网络系统之外的SAN几乎拥有了无限的存储能力。 但是利用FIBRE CHANNEL实现的SAN虽然性能优越,扩展性极佳,但价格却贵得惊人,管理起来也非常困难,让一般用户难以承受。也是许多企业不得不忍痛放弃SAN的原因。iSCSI(互联网小型计算机系统接口)是一种在Internet协议网络上,特别是以太网上进行数据块传输的标准,是一种集成了IP和SCSI的技术。它最大的特点就是让标准的SCSI命令能够在TCP/IP网络上的主机系统(启动器)和存储设备(目标)之间传送。与光纤通道相比,iSCSI具有许多优势,用‘iSCSI=低廉+高性能’这个等式来表示再恰当不过了。iSCSI是基于IP协议的技术标准,实现了SCSI和TCP/IP协议的连接,那些以局域网为网络环境的用户只需要少量的投入,就可以方便、快捷地对信息和数据进行交互式传输和管理。相对于以往的网络接入存储,iSCSI的产生解决了开放性、容量、传输速度以及兼容性等许多问题,让用户可以通过现有的TCP/IP网络来构建存储区域网,能够更容易地管理SAN存储。iSCSI结构见图1。 图1 iSCSI体系结构 这里就SAN与iSCSI做一比较,基本两者同属运行块协议的SAN架构,只不过前者透过FIBRE CHANNEL,后者由IP传输数据罢了,而两者在管理及应用上也大同小异。这里在此还是尽量做一番归纳整理,以供参考,见表-1。 表-1 iSCSI和SAN综合对比
数据传输方式:同为SAN的iSCSI及FIBRE CHANNEL都采用块协议方式。 传输速度:就目前的传输速度而言是FIBRE CHANNEL(2Gb)最快、iSCSI(1Gb)次之。 管理方式:iSCSI采用IP网络的现有成熟架构。所以可延用既有成熟的网络管理机制,不论是建置、管理或维护上,都非常方便及容易。而FIBRE CHANNEL则完全独立于一般网络系统架构,所以需由FIBRE CHANNEL供货商分别提供专属管理工具软件。 管理及维护成本:一般来说,FIBRE CHANNEL SAN多半需要特定的工具软件来操作管理,所以需要对人员进行一定时间的教育训练,而且费用不低。但由于iSCSI乃透过IP网络来传输数据及分配存储资源,所以只要使用网络现有的管理功能即可,相较起来,的确可以省下大笔管理人力及训练成本。 传输距离:原则上,二者都支持长距离的数据传输。FIBRE CHANNEL的理论值可达100公里。透过IP网络的iSCSI理论上都没有距离上的限制, iSCSI可以进行长距大量资料的传递。 噪声碰撞问题:由于iSCSI走的是IP网络,其中当然充斥着来自全球各地的庞大数据及噪声,所以碰撞情形也就在所难免了,如此一来,在数据传输的过程中,就很容易导致延迟的情形发生,大大影响了传输的效能,甚至数据的正确性。 三、主流操作系统对iSCSI支持 对于蓄势待发已久的iSCSI而言,迟迟未能全面普及的主要原因之一,就在于各类平台支持性的不够完备。是否能得到各式平台充份支持的关键,则在于协议的标准化上。有了标准化的协议,各类平台解决方案商才能有所依循地推出符合共通标准的支持及产品,如此可观的市场规模才能建立得起来。SNIA协会在2003年2月正式通过了iSCSI标准, 虽然iSCSI已正式标准化,但不一定代表从此就能快速普及,iSCSI是否能在企业存储市场站稳脚步,仍需看厂商本身的参与态度及开发意愿。表2是主流操作系统对iSCSI支持情况。 表2是主流操作系统对iSCSI支持
iSCSI Initiator可分为三种,即软件Initiator驱动程序、硬件的TOE(TCP Offload Engine,TCP卸载引擎) HBA卡及iSCSI HBA卡。就性能而言,软件Initiator驱动程序最差、TOE HBA卡居中、iSCSI HBA卡最佳。但是iSCSI HBA只能运行iSCSI协议,而无法运行NFS(Network File System,SUN制定)或CIFS(Common Internet File System,微软制定)等档案系统协议与应用服务器沟通。但Initiator驱动程序及TOE HBA卡则同时支持iSCSI、NFS及CIFS三种协议。 四、Linux下实现iSCSI Linux网络环境iSCSI技术的实现主要有三种方式: 1. 纯软件方式 服务器采用普通以太网卡来进行网络连接,通过运行上层软件来实现iSCSI和TCP/IP协议栈功能层。这种方式由于采用标准网卡,无需额外配置适配器,因此硬件成本最低。但是在这种方式中,服务器在完成自身工作的同时,还要兼顾网络连接,造成主机运行时间加长,系统性能下降。这种方式比较适合于预算较少,并且服务器负担不是很大的用户。目前不论是Microsoft Windows、IBM AIX、HP-UX、Linux、Novell Netware等各家操作系统,皆已陆续提供这方面的服务,在价格上,比起前两种方案,远为低廉,甚至完全免费。但由于Initiator驱动程序工作时会耗费大量的CPU使用率及系统资源,所以性能最差。在此建议,最好是采用1GHz以上CPU的主机,如此才能获得较佳的效能表现,如果公司主机CPU在1GHz以下,那么最好不要采用。至于在各类协议的支持上,Initiator驱动程序可以同时支持iSCSI、NFS及CIFS协议。当然现在大多数服务器CPU都可以满足这个要求。这里免费的iSCSI Initiator驱动程序,才可以将一般Gigabit网卡仿真成iSCSI Initiator。然后再透过iSCSI桥接器将一般SCSI接口的存储配备仿真成iSCSI Target,如此就形成一个iSCSI-SAN。 2. iSCSI TOE网卡实现方式 在这种方式中,服务器采用特定的TOE网卡来连接网络,TCP/IP协议栈功能由智能网卡完成,而iSCSI层的功能仍旧由主机来完成。这种方式较前一种方式,部分提高了服务器的性能。在三种iSCSI Initiator中,价格比iSCSI HBA便宜,但比软件Initiator 驱动程序贵,性能也居于两者之间。目前市面上Intel的TOE(TCP Offload Engine,TCP卸载引擎) HBA价格在150美金左右。 |
Linux网络环境下iSCSI配置攻略(2) | |
3. iSCSI HBA卡实现方式 使用iSCSI存储适配器来完成服务器中的iSCSI层和TCP/IP协议栈功能。这种方式使得服务器CPU无需考虑iSCSI以及网络配置,对服务器而言,iSCSI存储器适配器是一个HBA(存储主机主线适配器)设备,与服务器采用何种操作系统无关。该方式性能最好,但是价格也最为昂贵。在三种iSCSI Initiator中,价格最贵,但性能最佳。目前价格已由一开始的1000美金左右,下降跌至500美元左右。对于有高效能应用需求的企业,最好采用iSCSI HBA卡,如此才能获得最好的性能。 考虑到笔者使用Linux服务器使用2.4G Intel 至强处理器,而且网络负载不大,本文使用第一种方式,拓朴结构见图2. 图2 网络拓朴结构 说明:iSCSI 储存设备架构: 型号为PROMISE Vtrak 15200 ,使用 iSCSI 机型; 使用5颗硬盘,1 颗为 spare disk,其余4 颗做成 RAID-5; IP:iSCSI 储存设备的 IP 地址设置为 192.168.11.201 连接到储存设备的账号与密码分别为: myaccount/iscsimy1Spw Linux 服务器: 系统: Red Hat 9 Linux核心 ( 2.4.20-8mp ) IP: Red Hat 9 Linux服务器IP地址设置为 192.168.10.3 硬件:Dell PowerEdge 16000SC(2.4G Intel 至强处理器,512MB DDR ECC内存)基础型服务器。用于邮件服务器(商业版本的sendmail:3Rsoft)。 1.准备工作 因为安装iSCSI驱动需要配合核心来编译,所以会使用到内核源代码,此外,也需要编译器 ( compiler ) 的帮助,因此,先确定您的 Linux 系统当中已经下列软件的存在 :kernel-source 、kernel、gcc、perl、Apache。 打开一个终端,使用命令检查: # rpm -qa | grep gcc;rpm -qa | grep make # rpm -qa | grep kernel ;rpm -qa | grep make iSCSI 驱动程序下载网址是: 这个网站根据Linux内核(2.4/2.6)提供两种驱动程序,请根据内核版本下载相应的驱动,首先使用下面的命令查询目前所使用的Linux的内核版本: #uname –a Linux cao 2.4.20-8#1Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux |
Linux网络环境下iSCSI配置攻略(3) | |||||||||||||
2. 得到版本信息后,到其官方网站下载系统所需的驱动。下载完成就可以使用下面的命令安装该组件然后编译内核: #cd cd /usr/local/src # wegt
#tar -zxvf linux-iscsi-3.4.3.2.tgz # cd linux-iscsi-3.4.3.2 #make clean # make #make install 3. 修改配置文件开始进行修改的工作: # vi /etc/iscsi.conf Username= myaccount #用户名# Password= iscsimy1Spw #口令# DiscoveryAddress=192.168.11.201 #iSCSI 储存设备的 IP 地址# Username=myaccount Password=iscsimy1Spw 4. 启动iscs #/etc/init.d/iscsi start Starting iSCSI: iscsi iscsid fsck/mount 5. 使用iscsi-ls命令可以看到更为详细的磁盘信息:: # iscsi-ls ***************************************************************** SFNet iSCSI Driver Version ... 3.4.3.2 (27-Jun-2005 ) **************************************************************** TARGET NAME : iqn.1994-12.com.promise.target.3b.31.4.55.1.0.0.20 TARGET ALIAS : Vtrak 15200 HOST NO : 0 BUS NO : 0 TARGET ID : 0 TARGET ADDRESS : 192.168.11.201:3260 SESSION STATUS : ESTABLISHED AT Thu Nov 10 20:13:43 2005 NO. OF PORTALS : 1 PORTAL ADDRESS 1 : 192.168.11.201:3260,2 SESSION ID : ISID 00023d000001 TSIH 04 **************************************************************** iSCSI节点名称有两种格式,即 iqn-type 格式和 eui-type 格式。 Linux常用的是iqn-type的格式为: 6.使用fdisk命令进行磁盘分区 fdisk命令格式 fdisk [-l] [-b SSZ] [-u] device 主要选项: -l: 察看指定的设备的分区表状况。 -b SSZ:将指定的分区大小输出到标准输出上,单位为区块。 -u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址。 device:要这些操作的设备名称。 fdisk是各种Linux发行版本中最常用的分区工具,是被定义为Expert级别的分区工具。我们可以通过fdisk来分区使用iscsi设备。它还包括一个二级选单,首先输入命令,然后出现问答式界面,用户通过在这个界面中输入命令参数来操作fdisk。见图3。 图3 fdisk分区工具 选项介绍: a:设定硬盘启动区。 b:编辑一个BSD类型分区。 c:编辑一个DOS兼容分区。 d: 删除一个分区。 l: 察看指定的设备的分区表状况。 m:显示Fdisk命令各个参数的说明。 o:创建一个DOS分区。 n:设定新的硬盘分区。 p:打印分区信息。 s:创建一个空Sun分区表。 t:改变硬盘分区类型。 q: 结束分区,不保存操作内容。 v:校验硬盘分区表。 w:结束分区,保存操作内容。 x:进入高级操作模式。 # fdisk /dev/hdd 运行后出现fdiak的命令提示符: Command (m for help): 使用n命令创建一个分区,会出现选择主分区(p primary partition)还是扩展分区(l logical)的提示,通常选用主分区。然后按照提示输入分区号(Partion number(1-4):)、新分区起始的磁盘块数(First Cylinder)和分区的大小,可以是以MB为单位的数字(Last cylindet or +siza or +sizeM or +sizeK:)。例如: fdisk /dev/sda Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-189971, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-189971, default 189971): Using default value 1899719 Command (m for help): w
|