关于iscsi target 的简单Q&A
http://iscsitarget.sourceforge.net/wiki/index.php/FrequentlyAskedQuestions
关于iscsi target deamon 的一些开发信息
http://iscsitarget.sourceforge.net/wiki/index.php/ManagementDaemon
台湾老师写的一个关于 IET 安装的PPT 不过比较简单(我可是提供我自己的网站下载哦!)
http://www.imgoto.com/download/iscsi_enterprise_target.rar
回头我再收集一些,还会陆续放上来。
posted @
2008-03-20 11:33 李佩亮 阅读(76) |
评论 (1) |
编辑
这里都是关于 使用 ISCSI Enterprise Target(简称IET) 的使用说明。
常用操作命令:
查看当前虚拟单元清单。
cat /proc/net/iet/volume
查看当前服务器 ISCSI target 服务以及连接状态命令
cat /proc/net/iet/sessions
关于ISCSI Target 的配置,常用有两种方式:
1.修改配置文件
vi /etc/ietd.conf
2.使用IET管理命令行
添加一个新的 target
ietadm --op new --tid=[id] --params Name=iqn.foo.bar:baz
其中[id] 为数字,必须是没有使用过的。后面的Name 需要自己自定义,也需要保证是唯一的。
当然不知道自己本机所有target id 的话,可以使用这个命令查看当前的target 状态和得到target id.
查看当前服务器 ISCSI target 服务以及连接状态命令
cat /proc/net/iet/sessions
添加一个新的 lun
Note:在一个已经存在的 target 上加入一个lun,以便共享出来给外界。
ietadm --op new --tid=[id] --lun=[lun] --params Path=/path/to/exported/file,Type=fileio
[id] 必须是一个已经存在的tid 号,[lun]可以自己定义。
后面的path 我就不需要多说了,就是共享的路径了。
关于ietadm 其余的命令,大家可以使用 ietadm --help 来查看更多的指令。
所有的配置更改过后,大家别忘重启iscsi 服务。
service iscsi-target restart
强力推荐一个非常好的介绍配置的网站:
http://www.linuxtopia.org/online_books/suse_linux_guides/SLES10/suse_enterprise_linux_server_installation_admin/sec_inst_system_iscsi_target.html
其他常见问题
1.防火墙链接限制,外界无法访问Target 服务器3260 端口。
请在防火墙上手动放开 3260 端口,或者有条件的话干脆关闭防火墙。
更改防火墙配置并重启生效
vi /etc/sysconfig/iptables
server iptable restart
2.共享的路径都可以有哪些?
在IET 的技术文档中规定,以下几种路径是被支持的:

1)一个完整的block 磁盘,比如我在前文中所述的 /dev/sdb。
2)一个RAID 设备或者是一个 LVM ,这个我没测试过!-_-!
3)一个虚拟的镜像文件,可能性能可比直接IO 读取稍差点!
例子:
制作一个512M 的磁盘镜像
dd if=/dev/zero of=/disk.img bs=512 count=1000000
IET 配置中lun 设置:
LUN 0 Path=/disk.img,Type=fileio
重启IET服务生效!
先说到这里吧!总之,IET 的配置不是很复杂,使用起来也非常方便。
配置完成并使用后,岂能用一个爽字来替代。目前我仍在上瘾状态中。
posted @
2008-03-20 11:18 李佩亮 阅读(305) |
评论 (0) |
编辑
一、选用ISCSI原因
近期为了满足工作项目的设计需求,需要一个生产环境局域网内共享的大容量存储环境。考虑到价格因素,我选择采购了一台专用的网络存储服务器,硬盘全部为SATA 硬盘,通过自机网卡进行文件系统级别的共享。考虑到网络存储服务器只是用来存储别无他用,所以在系统的选择方面,我选择了linux 来提高机器的性能和效率,并使用ext2或ext3格式提高硬盘读写效率,当然这些效率的提高都是与Windows 操作系统进行对比的。对于共享,我选择安装使用常见的samba 来对硬盘某一目录进行NFS 方式文件共享,其余各服务器均使用windows 2003 x64 R2 操作系统,并统一映射网络路径//192.168.1.200/share 目录 为网络驱动器盘符z:到网络存储服务器共享出的目录中。
在项目中期,随着功能测试和性能测试的开展,发现我们基于.net 开发的web 应用,并不能很好的直接使用网络驱动器,造成了不小的麻烦,而且我们所使用的oracle 数据库需要的很多的功能也不能正常使用这种网络共享。所以需要一个能让操作系统认为共享磁盘为本地硬盘的的一种解决方案才是最优的解决方案。
二、了解ISCSI
在所有剩余可选网络存储的解决方案中,除SAN 方式以外最好的方案不外乎ISCSI架构方式了,在ISCSI 架构中,各服务器作为客户端直接连接网络存储服务器的一个空间,并映射为本地的SCSI 逻辑硬盘,这样各个服务器对此硬盘操作的时候,就如同本地硬盘一样访问读写。并且由于ISCSI是块直接读写,理论上应该比其他共享方式在效率上要快很多。
首先我们要了解iSCSI 架构中的角色与专词,iSCSI 的储存设备称为iSCSI Target(或称iSCSI Target Device),例如iSCSI 磁盘阵列柜、iSCSI 磁带柜等,而iSCSI 卡称为iSCSI HBA(Host Bus Adapter),当然,iSCSI 允许使用一般Ethernet NIC 卡(网络卡,为了效率多半是GbE以上等级)与Ethernet Switch(交换器),若使用一般GbE 卡,则还需要搭配软件才能让GbE 卡收发iSCSI 协议,此软件称为iSCSI Initiator,事实上iSCSI HBA的角色也等同于iSCSI Initiator。
简单来说在软件构成的ISCSI 方案中,ISCSI Target可以被视作ISCSI服务器端,ISCSI Initiator 可以被视作客户端。在本次项目中,我决定由现有的网络存储服务器担任ISCSI Target,其余服务器都安装iSCSI Initiator来进行与存储的通信并映射网络存储服务器的指定空间为本地硬盘。
不过,使用软件实现ISCSI必须多加权衡,由于它运用服务器的CPU 来进行iSCSI 协议的编解运算,会折损服务器的本务运算效能(即伺服应用服务的运算),建议在性能非常好的服务器上使用,且也要多斟酌效能冲击性,也不建议直接以服务器内唯一的GbE 网埠来传发iSCSI 协议,因为这将阻碍服务器原有对前端服务的能力(即Internet/LAN 与SAN 的传输交迭影响),所以多会额外加装第二张GbE 网卡,以另一专属区网(SAN)的作法来传输iSCSI。
三、软件实现ISCSI 需要的工具和准备工作
软件实现ISCSI 要按操作系统分,主要推荐以下几种:(都是免费的,或者收费我还不知道!-_-!)
windows 下的Initiator 还可以使用微软自己的客户端:
http://www.microsoft.com/downloads/details.aspx?familyid=12cb3c1a-15d6-4585-b385-befd1319f825&displaylang=en#filelist
如果操作系统为Windows VISTA 的话,那么恭喜你,系统已经自带ISCSI Initiator 了。
其实不管是由任意的操作系统做 Target 还是做Initiator ,由于有规范的ISCSI 协议的约束,都是可以相互进行通信的,所以可以任意自由组合选择。
废话到此为止,赶快介绍一下Linux 下的 ISCSI Target的安装方法!
四、用Linux Red Hat Enterprise 4 + ISCSI Target 软件实现一个强大的ISCSI Target 网络存储服务器。
以下操作全部为root 权限下操作。
1.首先肯定是准备好Linux 系统环境。
操作系统我选用的是Red Hat Enterprise Linux 4 (RHEL4) ,别的我也没有时间试,这个版本历经考验比较稳定。
安装的时候,如果系统只用来做存储服务器的话,选择基本的安装就好,不用安装杂七杂八的服务。
安装完操作系统,最好配置该机上网,更新Kernel(当然需要有RedHat Network 口令),使用以下命令:
(当然如果你用的版本就是AS 4 的话,可以完全跳过这一步。)
up2date kernel
(更新完成后,要重新关闭并打开一个新的终端窗口。)
然后更新Kernel 组件
up2date kernel-devel openssl-devel gcc rpm-build
2. 下载并安装iSCSI Enterprise Target (IET) RPM 包。
我计划下载RPM 包以后 放在/usr/src/iscsitarget,然后再编译运行,当然你可以自己选择喜欢的安装位置。执行以下命令:
建立安装位置目录
mkdir /usr/src/iscsitarget
进入目录
cd /usr/src/iscsitarget
下载安装包
wget http://www.cryptoforge.net/iscsi/RPMS/iscsitarget-0.4.12-6.src.rpm
或
wget http://www.digicola.com/developer/iscsitarget-0.4.12-6.src.rpm
(当然也可以用浏览器访问http://www.cryptoforge.net/iscsi/RPMS/ 来获取其他版本或形式的安装包,保存在安装位置目录中)
3.解压RPM源文件
rpmbuild --rebuild iscsitarget-0.4.12-6.src.rpm
4.build ISCSI target 和 ISCSI Kernel 源,并进行安装
rpm -Uvh /usr/src/redhat/RPMS/i386/iscsitarget-0.4.12-6.i386.rpm /usr/src/redhat/RPMS/i386/iscsitarget-kernel-0.4.12-6_2.6.9_22.0.2.EL.i386.rpm
5.在chkconfig 中添加并启用 ISCSI target 服务。
chkconfig --add iscsi-target
chkconfig --level 2345 iscsi-target on
或
chkconfig iscsi-target on
6.配置 ISCSI Target 服务
ISCSI Target 服务的配置文件位于 /etc/ietd.conf 。可以使用vi 编辑器进行编辑,这里我准备将linux 本地的 sdb 物理盘共享出来用作 ISCSI DISK.
命令:
vi /etc/ietd.conf
内容大致如下(更改后):
# iscsi target configuration
Target iqn.2008-03.com.digicola:storage.lun1
IncomingUser iscsiuser pass123
OutgoingUser
Lun 0 Path=/dev/sdb,Type=fileio
Alias iDISK0
#MaxConnections 6
大致说明:
IncomingUser 和 OutgoingUser 表示ISCSI 客户端的用户名和密码,用户名和密码都可以为空,默认为allow权限,密码最长可为12个字符。
Target iqn.2000-12.com.digicola:storage.lun1 表示该ISCSI Target 的命名,命名在同一子网内应该是唯一的,标准命名方式为:
"Target "+ target名字 (格式如下: iqn.yyyy-mm.<reversed domain name>[:identifier] )
本次配置中 Type 的设定为"fileio",我主要用来对一个磁盘进行存储共享。
当然也可以针对需要设置为: "file" or "LVM" (稍微玩过linux 的人都能看明白吧!这里不用做过多介绍)。
7.启动 ISCSI Target 进程,并检查ISCSI Target 启动状态
使用以下命令启动ISCSI 服务:
service iscsi-target restart
如果服务启动正常,为了确认建议还是到系统日志中检查一下:
cat /var/log/messages
当然你的配置出错,有可能在服务启动的时候显示服务启动正常,但是链接不上,这时你可以在系统日志中查看到具体的错误类型。
至此,一个标准的 ISCSI Target 服务就配置完毕了,你现在就可以使用 ISCSI Initiator 链接到这个服务器的 IP:3260 就可以链接上Target 了。
链接至Target 以后,就可以在磁盘管理器中找到你共享出的硬盘了,你可以随意对其格式化,分区做本地硬盘的任何操作。
至于各系统版本 的ISCSI Initiator 的链接过程,我会另外建立一篇专门描述。
posted @
2008-03-19 16:44 李佩亮 阅读(472) |
评论 (0) |
编辑
摘要: ENTER键可以让光标移到下一个输入框<inputonkeydown='if(event.keyCode==13)event.keyCode=9'>只能是中文<inputonkeyup='value=value.replace(/[-~]/g,'')'onkeydown='if(event.keyCode==13)event.keyCode=9'>只能是英文和数字.屏蔽了输...
阅读全文
posted @
2007-11-29 16:32 李佩亮 阅读(84) |
评论 (0) |
编辑
摘要: 一直想写一个关于javascript 的服务器控件出来,先收集一些有用的脚本先!这样平日也可以用一下,免得平时需要的时候临时抱佛脚!/**//***方法名:onClickSelect*描述:点中text框的时候,选中其中的文字*输入:空*输出:空**/functiononClickSelect(){varobj=document.activeElement;if(obj.tagName=="TEX...
阅读全文
posted @
2007-11-29 16:25 李佩亮 阅读(96) |
评论 (0) |
编辑
摘要: 碰到一个项目,需要对指定的网页进行截图保存,晕死!需求永远都是怪异的.....解决是关键~遂写了以下代码,快准狠!(因为赶时间!)可以实现对指定的页面获取,按指定的大小生成缩略图,当然也可以1:1的产生图,页面上的javascript 运行对截图貌似没任何影响,相当的正常,我个人都觉得很神奇。 首先对项目添加系统引用System.Drawing;System.Drawing.Design;Syst...
阅读全文
posted @
2007-08-23 14:19 李佩亮 阅读(590) |
评论 (8) |
编辑
摘要: usingSystem;usingSystem.Web;usingSystem.Web.UI;namespaceMyLib{/**//**//**////<summary>///一些常用的Js调用///创建时间:2007-8-23///</summary>publicclassJscript{/**//**//**////<summary>///弹出JavaSc...
阅读全文
posted @
2007-08-23 12:38 李佩亮 阅读(128) |
评论 (2) |
编辑
今天拜托Google 搜索UDDI 的一些英文服务器,遂进入高级搜索
在高级搜索中,发现Google 新加入了代码搜索功能。
如下:

奇怪,Google 一直都好像把新的搜索功能都会加到首页搜索中的高级里面,最次也会加入到Google 实验室中。这次不是细心向下拉一下还完全发现不了这个代码搜索功能。我运气真好.....
打开后如下:

貌似还不错,尝试搜索一下,看样子还是可以搜索的....(不要冷汗,我比较低调...)
不过一个很重要的建议,直接搜索代码,搜出来的什么语言都有,冷汗啊,根本用不上啊,
一般咱们搜索代码都会按选择自己想要的那种语言的代码吧?目前想选择指定语言的代码还必须使用它的高级搜索,希望Google 把语言选择放在外面,好让大家有更好的使用体验....
目前搜索出来的代码,大部分都是面向公众的FTP 服务器上的一些代码文件....
强烈支持google 回头能把所有可以扒到的服务器上的网站程序窃取、反编再公布出来...(希望能实现...但愿!但愿!)
直接访问地址如下:
http://www.google.cn/codesearch?hl=zh-CN
posted @
2007-08-10 12:23 李佩亮 阅读(379) |
评论 (5) |
编辑
摘要: 因项目需要,对每一个访问网站的请求要做原始数据记录,其中要包括几个要素:1.客户端的IP2.客户端请求的页面路径3.客户端发出的请求头4.服务器返回的正文内容。在代码设计前分析了一下,前三个都很好解决,对于截获服务器返回的正文,准备用HttpResponse 对象中的Output 和 OutputStream 属性输出信息来解决。可是在正式编码的过程中,发现Output和OutputStream ...
阅读全文
posted @
2007-05-31 16:20 李佩亮 阅读(2689) |
评论 (11) |
编辑