分类: 系统运维
2008-04-18 20:52:35
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存储 |
接口 | 光纤 | IP |
性能 | 高 | 中 |
管理及维护成本 | 高 | 低 |
管理方式 | 集中 | 集中 |
传输介质 | 光纤 | 双绞线 |
噪声干扰 | 无 | 有 |
访问方式 | 块 | 块 |
文件系统 | 主机文件系统 | 主机文件系统 |
电磁影响 | 无 | 有 |
传输距离 | 100公里 | 无限制 |
数据传输方式:同为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支持
操作系统 | 驱动程序 | 适配卡 | 产品名称 |
Windows 2000 | 有 | 有 | Microsoft software Initiator Intel PRO/1000T IP适配卡 Alacritech iSCSI HBA SES 1001 Adaptec iSCSI HBA <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:chmetcnv UnitName="C" SourceValue="721" HasSpace="False" Negative="False" NumberType="1" TCSC="0" w:st="on">721C</st1:chmetcnv>/F Qlogic SANblade QLA4010 |
Windows 2003 | 有 | 有 | Intel PRO/1000T IP适配卡 Microsoft software Initiator Alacritech iSCSI HBA SES 1001 Qlogic SANblade QLA4010 |
Red Hat Enterprise Linux AS 4.0 | 无 | 有 | Qlogic SANblade QLA4010 Adaptec iSCSI HBA 721C/F |
HP-UX V1/V2 | 有 | 无 | HP-UX software Initiator |
Novell Netware 5.1-6.5 | 有 | 无 | Novell software Initiator |
SUN Solaris 9 | 无 | 有 | Qlogic SANblade QLA4010 |
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美金左右。
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
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
7.格式化分区:
#mke2fs -t ext3 -c /dev/sda1
8.设定加载点:
#mkdir /cluster/raid
# mount -t ext3 /dev/sda1 /cluster/raid
经过以上的操作,我的 Linux服务器已经连接到 iSCSI 储存设备, 并且如同Linux 本机上面的一个 SCSI 硬盘一样。 使用的方式几乎一模一样。
9. 自动挂载一个iSCSI卷
可以通过向/etc/fstab.iscsi (filesystem table)中添加指令行来告诉Linux如何自动挂载卷了。使用vi编辑器修改/etc/fstab,依次使用shift+G命令(将光标定位到最后一 行)然后使用o命令(插入新行并且进入编辑状态),输入以下内容:
/dev/sda1 /cluster/raid ext3 defaults 0 0
存盘后从新启动计算机Linux即可自动挂载iSCSI卷。
五、保护iSCSI安全
光纤通道环境给人感觉具有比较高的安全性,原因在于它们是受控的专有网络。iSCSI 给人感觉安全性较低,原因在于它是基于以太网的网络。不过从本质上来说,光纤通道是没有安全功能的,而iSCSI提供了非常丰富的安全功能。iSCSI 规范提供了initiator与目标端两方面的身份验证(使用 CHAP、SRP、Kerberos 和 SPKM),能够阻止未经授权的访问,只允许那些可信赖的节点进行访问。另外,IPsec Digests(IPsec 摘要)和 Anti-Reply(防回复)功能阻止了插入、修改和删除操作,而 IPsec Encryption(IPsec 加密)功能防止被偷听,确保了私密性。
最简单的iSCSI实现方式,就是没有任何加密和认证机制的连接。这种方式仅提供“SCSI指令 在TCP/IP协议上传输”这样一个最基本的功能,连接到网络上的任何一台主机都可以毫无阻碍地连接到iSCSI存储设备上。这种方式显然对任何危险都没 有防范能力。但是,这种方式也有一个明显的优势,那就是性能。没有了认证和加密,自然也就省去了很多额外的开销。如果您非常需要您的iSCSI磁盘阵列全 速工作,这种方式无疑是最好的选择。 当然,选择这种方式的时候,用来连接iSCSI磁盘阵列的网络交换机最好是与外界隔离的。
妥善选择口令
口令应避免与个人资料有关系,不要选用诸如身份证号码、出生日期、电话号码等作为密码。建议选用字母、数字混合的方式,以提高密码破解难度。尽量避免在 不同的操作系统使用同一密码,否则密码一旦遗失,后果将不堪设想。黑客们经常用一些常用字来破解密码。曾经有一位美国黑客表示,只要用 “password”这个字,就可以打开全美多数的计算机。其它常用的单词还有:account、ald、alpha、beta、computer、 dead、demo、dollar、games、bod、hello、help、intro、kill、love、no、ok、superuser、 system、test、work、yes等。另外相信设置空白口令这件事就会让很多网络管理员头疼。很多用户嫌口令难记,干脆留空,或者随手设成 111111之类。这种口令实在令人着急,稍微耐心一点儿的黑客,手工都可以试出来,更何况眼下各种字典攻击程序满天飞。对iSCSI磁盘阵列来说,情况 也是一样。如果仅靠用户认证不能解决问题,就需要借鉴传统IP网络的办法,在内网和外网之间架设防火墙,阻击外面那些有充分精力和耐心的“尝试者”。 如果iSCSI磁盘阵列(Target)和主机(Initiator)需要跨广域网连接,最好使两者以VPN互连。总之就是一个目的,不让iSCSI磁盘 阵列使用公网的IP地址。
总结:至此这里 给予Linux网络下中小企业一个低成本的iSCSI的解决方案。
iSCSI小贴士:
1.应该使用硬件 initiator 还是软件 initiator?
iSCSI initiator 是使用硬件还是软件要取决于多种因素,包括预算、性能要求以及服务器工作负荷。软件 iSCSI initiator 能够实现成本最低的 iSCSI 解决方案。纯软件 iSCSI initiator 使用标准以太网卡,并依靠主机 CPU 来处理 iSCSI 命令和 TCP/IP 栈。对于具有 2G CPU 的最新一代服务器来说,大部分客户工作负荷在 iSCSI 协议处理方面不会引发明显的性能开销。如果您的服务器拥有千兆以太网卡则对软件 initiator 的评测过程几乎不会有任何问题,原因是在绝大多数流行的操作系统中,initiator 都是免费提供的。如果 CPU 较陈旧,服务器的负荷较重,则可能更适合采用硬件 iSCSI initiator。硬件 iSCSI initiator 会将 iSCSI 和 TCP/IP 处理工作转移到 iSCSI HBA 中。其结果就是能够大幅度降低 CPU 的性能开销,这点堪与光纤通道 HBA 相比。硬件 initiator 还能提供软件解决方案所不具备的功能,例如支持高可用性环境的硬件多通道功能,支持密集服务器环境中的远程引导功能。
2.硬件和软件 initiator 如何影响应用程序的性能?
如果应用程序位于负担较轻的服务器上,在大多数情况下,采用软件 initiator 的 iSCSI 的性能开销也不会明显影响应用程序的性能。如果服务器的负荷较重,则必须采用硬件 iSCSI initiator。不过,在大多数环境中,传输带宽以及主机 CPU 的性能开销完全不是问题 — 应用程序性能问题在很大程度上要归因于存储的轴数有限(承担工作负荷的磁盘太少)。这不是协议或传输问题。这是直连式存储系统的一个普遍问题,但是采用基 于 iSCSI 的 SAN 解决方案可以非常方便地解决这一问题。
3.Linux下哪些服务器适合使用iSCSI构架?
目前Linux的擅长应用领域是:单一应用的基础服务器应用,譬如DNS和DHCP服务器、Web服务器、目录服务器、防火墙、文件服务器、打印服务 器、互联网连接代理服务器、数据库。其中,数据库服务器及邮件服务器最适合采用iSCSI构架,另外NetApp表示由于ERP数据库系统采用块协议,所 以非常适合建置在iSCSI构架 上。
参考文件:
Linux iSCSI project:
A Quick Guide to iSCSI on Linux:http://www.cuddletech.com/articles/iscsi/index.html