首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

利用ISCSI储存技术构建IP存储网络(实战篇)

2012-09-17 
利用ISCSI存储技术构建IP存储网络(实战篇)本文重点介绍如何构建一个PC构架的iSCSI存储系统,这里我们选择一

利用ISCSI存储技术构建IP存储网络(实战篇)

本文重点介绍如何构建一个PC构架的iSCSI存储系统,这里我们选择一个普通的、性能优良的、可支持多块磁盘的PC服务器作为iSCSI target,并且选择一个成熟稳定的iSCSI target软件iscsitarget,基本配置环境如表1所示:
表1

利用ISCSI储存技术构建IP存储网络(实战篇)

? 这里将Target主机第三块硬盘(硬盘标识为/dev/sdc)作为iSCSI共享磁盘,硬盘大小为10G,分别共享给一台windows主机和一台Linux主机,基本结构如图1所示:

利用ISCSI储存技术构建IP存储网络(实战篇)

图1

下面开始详细介绍iSCSI网络存储的搭建过程。

一、安装iSCSI target软件
安装iscsitarget软件是在Target主机上进行的,即上面设定的192.168.12.246主机,这里我们选择的target软件是iscsitarget,读者可以从http://iscsitarget.sourceforge.net下载相应的版本,这里下载的是iscsitarget-1.4.20.1.tar.gz,接着开始进行编译安装:
[root@iscsi-target iscsi]#tar -xzvf iscsitarget-1.4.20.1.tar.gz
[root@iscsi-target iscsi]#cd iscsitarget-1.4.20.1
[root@iscsi-target iscsitarget-1.4.20.1]#make
[root@iscsi-target iscsitarget-1.4.20.1]#make install
?Iscsitarget安装完毕后,会创建/etc/iet/目录,此目录下有Iscsitarget的相关配置文件,接着就可以启动Iscsitarget服务了,启动或关闭Iscsitarget服务的命令如下:
[root@iscsi-target iscsi]# service iscsi-target???????
Usage: /etc/init.d/iscsi-target {start|stop|restart|condrestart|status}
如果要让iscsi-target服务开机自动运行,需执行如下操作:
[root@iscsi-target iscsi]#chkconfig --level 35 iscsi-target on
到此为止,iscsitarget安装完成。

二、配置一个简单的iSCSI target
?iSCSI Enterprise Target的主配置文件为/etc/iet/ietd.conf,此文件中的选项默认全部被注释掉了,有需要用到这些选项时,再将注释去掉即可。
?打开ietd.conf文件,首先找到类似如下行:
#Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
此选项表示该iSCSI Target的命名,先将前面的“#”号去掉, Target的命名在同一子网内应该是唯一的,标准命名方式为:
iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:
??iqn:表示“iSCSI Qualified Name”,简称iqn。
??yyyy-mm:表示年份-月份。这里是2001-04。
??reversed domain name:表示倒过来的域名,这里是com.example。
??identifier:表示识别代码,这里是storage.disk2.sys1.xyz。
接下来,就是要设定 LUN(Logical Unit Number),找到类似如下行:
#Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz
将前面的“#”号去掉,“Lun 0 Path=/dev/sdb”表示块设备号为0,映射的磁盘为/dev/sdb,“Type”值fileio是默认的,可以用于磁盘、file和LVM,这里设定的是“fileio”,主要用来对一个磁盘进行存储共享。读者可以根据自己情况将Path改为需要共享的存储分区的设备标识。这里假定共享的设备标识为/dev/sdb。
至此,一个简单的iSCSI Target已经配置完毕了,最后启动iscsi-target服务:
[root@iscsi-target iscsi]# service iscsi-target start

三、在windows上配置iSCSI Initiator
?下面的操作是在Initiator的windows主机上进行,即IP为192.168.12.136主机。
微软对iSCSI Initiator的支持相当完备,读者可以免费从微软网站获得iSCSI Initiator软件,网址是http://www.microsoft.com/WindowsServer2003/technologies/storage/iscsi/default.mspx
,本章实例下载的版本是Initiator-2.08-build3825-x86fre.exe,接下来开始说明如何让windows连接iSCSI Target。
?安装完成iSCSI Initiator后,在桌面上会发现启动图标,启动Microsoft iSCSI Initiator后,选择第二个分页标签“Discovery”,然后在“Target Portals”部分点击“Add”按钮,跳出“Add Target Portal”窗口,如图2所示:

利用ISCSI储存技术构建IP存储网络(实战篇)

图2

在此窗口下填写iSCSI Target的ip地址和端口,iSCSI Target地址就是上面设定的Target主机的地址,iSCSI Target的端口默认是3260,除非有特殊设定,填写完成,点击OK按钮。

接下来,选择第三个分页标签“Targets”,如图3所示,可以看到,iSCSI Initiator已经检测到了iSCSI Target的名称,但是此时的iSCSI Target还处于“inactive”状态,点击下方“Log On”按钮,然后弹出“Log On to Target”窗口,接着按下“OK”按钮来激活Target,此时iSCSI Target已经从“inactive”状态变为“Connected”状态。如图4和图5所示:

利用ISCSI储存技术构建IP存储网络(实战篇)?

图3

利用ISCSI储存技术构建IP存储网络(实战篇)

图4

利用ISCSI储存技术构建IP存储网络(实战篇)?
图5

到此为止,windows系统已经识别了iSCSI Target提供的共享磁盘分区,通过windows的磁盘管理器可以看到新增加的磁盘分区,如图6所示:

利用ISCSI储存技术构建IP存储网络(实战篇)
?
图6

现在就可以使用windows的磁盘管理功能对这块共享磁盘进行分区、格式化以及挂载等操作了。

四、在Linux上配置iSCSI Initiator
?下面的操作是在Initiator的Linux主机上进行,即IP为192.168.12.26主机。
1?安装Linux版本iSCSI Initiator
现在的主流Linux发行版本默认都自带了iSCSI Initiator,即Open-iSCSI,如果系统没有安装,只需通过光盘找到iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm包,通过rpm方式安装即可,当然也可以通过yum进行自动安装,操作如下:


[root@ Initiator iscsi]#yum install iscsi*
安装完成后,会生成/etc/iscsi主程序配置目录,其它相关文件的安装位置为:
/etc/iscsi/iscsid.conf
/etc/rc.d/init.d/iscsi
/etc/rc.d/init.d/iscsid
/sbin/iscsi-iname
/sbin/iscsiadm
/sbin/iscsid
/sbin/iscsistart
/var/lib/iscsi
/var/lib/iscsi/ifaces
/var/lib/iscsi/isns
/var/lib/iscsi/nodes
/var/lib/iscsi/send_targets
/var/lib/iscsi/slp
/var/lib/iscsi/static
/var/lock/iscsi
接下来需要启动Initiator服务,操作如下:
[root@ Initiator iscsi]# service iscsi start
?

2?iSCSI Initiator目录功能介绍
??/sbin/iscsiadm命令
?在iSCSI Initiator安装完成后,会生成/sbin/iscsiadm命令,此命令是用来管理(更新、删除、插入、查询)iSCSI配置数据库文件的命令行工具,用户能够用它对iSCSI nodes、sessions、connections和discovery records进行一系列的操作。
??/var/lib/iscsi/send_targets目录
?在此目录下,会生成一个或多个以iSCSI存储服务器IP和端口命名的文件夹,文件名为“iSCSI Target IP,端口号”(例如“192.168.12.246,3260”)。
??/var/lib/iscsi/nodes目录
?在此目录下,会生成一个或多个以iSCSI存储服务器上的Target名命名的文件夹,在该文件夹下有一个文件名为“iSCSI portal IP,端口号” (例如“192.168.12.246,3260”)的配置参数文件,该文件是iSCSI initiator登录iSCSI target时要使用的参数,而这些参数的设置是从/etc/iscsi/iscsi.conf中的参数继承而来的,可以通过iscsiadm命令对某一个参数文件进行更改。

3?在linux上执行iSCSI? Target发现
?可以使用如下指令向 iSCSI Target 主机查询划分了哪些lun:
iscsiadm -m discovery --type sendtargets --portal IP
?或者
iscsiadm -m discovery -t sendtargets -p IP
例如:
[root@ Initiator iscsi ]# iscsiadm -m discovery -t sendtargets -p 192.168.12.246:3260?????????????????????????????????????????
192.168.12.246:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
可以看出,“iqn.2001-04.com.example:storage.disk2.sys1.xyz”就是iSCSI Target的名称。由于在配置iSCSI Target时,没有做任何限制,因此所有的客户端主机都允许连接iSCSI Target共享出来的磁盘。
需要说明的是:当成功执行一次Target发现后,iSCSI Initiator就会将查询纪录写到/var/lib/iscsi/send_targets对应目录下。因此,对于Target发现只需执行一次即可。
接着通过iscsiadm指令与iSCSI Target 主机建立连接,也就是登录iSCSI Target:
iscsiadm -m node -T <target-name> -p <ip-address>:<port> --login
或者
iscsiadm -m node -T [target-name] -p [ip-address] -l
这里的“-T”后面跟target名称,“ip-address”是target主机的IP地址,“port”是target主机的端口号,默认是3260。
例如:
[root@ Initiator iscsi ]#iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.12.246 -l
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.12.246,3260]
Login to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.12.246,3260]: successful
如果有多个Target主机时,可以通过如下命令一次登录所有的targets:
[root@ Initiator iscsi ]#iscsiadm -m node --loginall=all
这里需要说明的是,通过执行Target发现操作,其实已经与iSCSI Target 主机建立了连接,此时如果再次执行iscsiadm命令与Target 主机建立连接的话,会提示“iscsiadm: initiator reported error (15 - already exists)”错误,所以需要先断开与iSCSI Target 主机的连接,执行如下指令,断开Initiator 与iSCSI Target 主机的连接:
iscsiadm -m node -T [target-name] -p [ip-address] -u
?例如:
[root@ Initiator iscsi ]#iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.12.246? -u
Logging out of session [sid: 2, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.12.246,3260]
Logout of [sid: 2, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.12.246,3260]: successful
?当iSCSI Initiator与iSCSI Target连接成功后,还可以通过如下命令查看iSCSI session信息:
[root@ Initiator iscsi ]#iscsiadm -m session –i
例如:
[root@ Initiator iscsi ]#iscsiadm -m session –i
iSCSI Transport Class version 2.0-871
version 2.0-871
Target: iqn.2001-04.com.example:storage.disk2.sys1.xyz
??????? Current Portal: 192.168.12.246:3260,1
??????? Persistent Portal: 192.168.12.246:3260,1
??????????????? **********
??????????????? Interface:
??????????????? **********
??????????????? Iface Name: default
??????????????? Iface Transport: tcp
??????????????? Iface Initiatorname: iqn.1994-05.com.RedHat:fd37f211e3a
??????????????? Iface IPaddress: 192.168.12.26
??????????????? Iface HWaddress: <empty>
??????????????? Iface Netdev: <empty>
??????????????? SID: 1
??????????????? iSCSI Connection State: LOGGED IN
??????????????? iSCSI Session State: LOGGED_IN
??????????????? Internal iscsid Session State: NO CHANGE
??????????????? ************************
??????????????? Negotiated iSCSI params:
??????????????? ************************
??????????????? HeaderDigest: None
??????????????? DataDigest: None
??????????????? MaxRecvDataSegmentLength: 262144
??????????????? MaxXmitDataSegmentLength: 8192
??????????????? FirstBurstLength: 65536
??????????????? MaxBurstLength: 262144
??????????????? ImmediateData: Yes
??????????????? InitialR2T: Yes
??????????????? MaxOutstandingR2T: 1
??????????????? ************************
??????????????? Attached SCSI devices:
??????????????? ************************
??????????????? Host Number: 32 State: running
??????????????? scsi32 Channel 00 Id 0 Lun: 0
??????????????????????? Attached scsi disk sdb????????? State: running

4?管理共享磁盘
?首先通过fdisk命令查看共享过来的磁盘标识,也可以通过dmesg命令查看系统是否认到了共享的iSCSI磁盘,操作如下:
[root@ Initiator iscsi ]#fdisk -l
Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

?? Device Boot????? Start???????? End????? Blocks?? Id? System
/dev/sda1?? *?????????? 1????????? 13????? 104391?? 83? Linux
/dev/sda2????????????? 14?????? 38913?? 312464250?? 8e? Linux LVM

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

?? Device Boot????? Start???????? End????? Blocks?? Id? System
/dev/sdb1?????????????? 1???????? 609???? 4891761?? 83? Linux
/dev/sdb2???????????? 610??????? 1305???? 5590620?? 83? Linux
?从fdisk输出可知,iscsi共享磁盘标识为/dev/sdb,大小10.7G,下面就可以通过fdisk命令对这个磁盘进行重新分区、格式化、创建文件系统等操作了。

热点排行