转载本站文章请注明,转载自: 扶凯[ http://www.php-oa.com]

储存区域网路(SAN)
谈到iSCSI就会先谈到储存区域网路(Storage Area Network, 简称 SAN),这是个专门用来传输磁碟资料的网路,以别于一般 TCP/IP 网路,通常预设 SAN 是使用光纤(FC,Fibre Channel)设备,不同的是 iSCSI 预设使用 Gigabit Ethernet(双交线)来作传输媒介,所以iSCSI 价格上比 Fibre Channel 低廉许多,所以这使得 iSCSI让许多中小企业能够以较低门槛就可以实现SAN的应用。
注:能够实现SAN应用有Fibre Channel,iSCSI与AoE 等等,其中以 Fibre Channel 价格最高、效能最优,而 iSCSI 是 Fibre Channel 之外较知名储存通讯协定,AoE 则是紧追在 iSCSI 的后起之秀,其实我也没有用过.
进阶学习:iSCSI 其实它也能够使用光纤来当传输媒介,但是通常为了节省费用而使用铜线。
iSCSI 介绍
iSCSI(Internet SCSI):一种主要应用在储存区域网路(SAN)通讯协定,iSCSI 将 SCSI 命令运行在 TCP/IP 网路上,用以传输磁碟资料。iSCSI 在 OSI 七层模型中属于传输层(Transport Layer)的通讯协定,提供给 iSCSI Target 与 iSCSI Initiator 之间沟通。
经由 iSCSI 技术,我们能够提供 Block-Level I/O 给 Initiator 主机,其目的不外乎是“将硬盘的排线网路化”、“把这台主机(Target 主机)幻化成另一台主机(Initiator 主机)的磁碟”以达成更大空间、更高 I/O 速度及具有冗余与高延展度的应用,类似 iSCSI 技术还有 Fibre Channel、AoE(ATA Over Ethernet)。
进阶学习:搭配 SAN 架构所应用之高阶技术之一为丛集档案系统(Cluster File System),RedHat 推广 GFS(Global FS)、SuSE 推广 OCFS2(Oracle Cluster FS)都是实际案例。
下面就SAN 中通常有两个角色“Target(服务端)”与“Initiator(客户端)”分别叙述如下:
Target_“储存设备”(Storage Device)
称为 Target 的通常是“储存设备”(Storage Device),也就是存放资料的硬盘(以硬盘阵列居多),在我们使用iSCSI时,会在 iSCSI 储存设备上去建立 LUN(Logical Unit Number)来提供给有 iSCSI Initiator 功能的主机来存取 iSCSI 储存设备。所以通俗一点讲,他就是服务端.
温馨提示:LUN 好比是个“逻辑单位磁碟”,为追求效率、冗余与延展性,这个 LUN 通常会是由数个实体磁碟(在搭配 RAID 或 LVM 技术后)所组成。
这次用来当作 iSCSI Target 主机是Centos5主机,因为Centos5本身是没有iSCSI Target的,其实别的发行版本也没有,所以我们只好手动编译iSCSI Enterprise Target.
编译 iSCSI Enterprise Target 软体
iscsitarget下载地址
http//iscsitarget.sourceforge.net/
最新的是 0.4.15 版
注意:安装要2.6.14以上内核
第一步:解压,然后进入目录
#tar -zxf iscsitarget-0.4.15.tar.gz”
#cd iscsitarget-0.4.15
#yum -y install gcc gcc-c++ kernel-devel
编译前,最好安装好上面这些包
第二步:编译程式
#make
#make install
第三步:加入到系统服务,设置开机预设启动 iscsi-target 
#chkconfig –add iscsi-target
#chkconfig iscsi-target on
#/etc/init.d/iscsi-target start
注:iSCSI Target 端主机预设使用 tcp 的 3260 端口来服务,所以防火墙记的开.
#iptables -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3260 -j ACCEPT
查看服务是否启动
# ps -C ietd
PID TTY TIME CMD
2691 ? 00:00:00 ietd
第四步:iSCSI Enterprise Target Daemon 设定档
iSCSI Enterprise Target Daemon 名称 ietd 使用 /etc/ietd.conf 当作设定档,您可以在原码目录(iscsitarget-0.4.15)内的 etc 目录下找到设定范本,范本内大多是“#”字号开头的注解,有需要用到这些设定时再将注解拿掉设定调整即可。不过,可以直接使用命令来建。不过重起后就没有了.
# ietadm –op new –tid=100 –params Name=iqn.2008-02.com.php-oa.iscsi:test
# ietadm –op new –tid=100 –lun=0 –params Path=/dev/VolGroup00/test
上面这一行中的“Target iqn.2008-02.com.php-oa:iscsi:test”这是 Target 名称,称作‘iSCSI Qualified Name’(简称:iqn),这格式在 iSCSI 规格书中有详细说明
iqn.yyyy-mm.<reversed domain name>[:identifier]
格式 意义 范例
yyyy-mm 年份-月份 2001-04
reversed domain name 倒过来的网域名称 com.php-oa
identifier 识别代号 iscsi:test
LUN(Logical Unit Number),“#Lun 0 Path=/dev/sdc,Type=fileio”这一行中, Path 改成您提供的硬盘名称,此例为“Path=/dev/VolGroup00/test”。
我们可以使用像是区块装置(Block devices,例 /dev/sdc)、一般档案(regular files)、LVM 逻辑卷轴(Logical Volume)与磁碟阵列(RAID)提供给 Initiators 主机当做‘区块装置’(硬盘).
当然.将范本设定档拷贝一份到 /etc 再来设定 /etc/ietd.conf 是个不错的选择。要重起后启用,记的编辑。你不可能重起后就不要了吧.
下面是我的ietd.conf的配置
Target iqn.2008-02.com.php-oa:storage.test
Lun 0 Path=/dev/sdb,Type=fileio
Alias Test
检查启动后的iscsi
#cat /proc/net/iet/volume
tid:1 name:iqn.2008-02.com.php-oa:storage.test
lun:0 state:0 iotype:fileio iomode:wt path:/dev/sdb
FQA:
1.make[1]: cc: Command not found错误

代表着这台linux 编译相关的程式(尤其是gcc)还没安装,Linux 称这类软体为开发工具(Develop Tool),只要把‘gcc’相关这一类的开发工具都安装即可。
可以使用下面的方法安装
#yum -y install gcc gcc-c++ kernel-devel openssl-devel
2.错误讯息“chap.c:20:25: error: openssl/sha.h: No such file or directory chap.c:21:25: error: openssl/md5.h: No such file or directory”
这个是因为openssl-devel’套件尚未安装所造成。
#yum openssl-devel krb5-devel zlib-devel e2fsprogs-devel
3.错误讯息“make: *** /lib/modules/2.6.18-53.1.13.el5/build: No such file or directory. Stop.
#yum install kernel-devel