您的当前位置:首页正文

ISCSI简介及linux下实现

2021-11-17 来源:易榕旅网
Iscsi简介及linux下实现

信息时代的到来,给人们带来了更多的方便及享受。同时,它也成为了组成这个时代的主要元素之一,谁缺了它或离开了它,那么谁就会被这个时代所抛弃。以前照相一般使用的是胶片式相机,通过暗房冲印把照片洗出来。而现在,基本上家家户户都有了自家的数码照相机。当然,照出来的相片也是数码的了。影视行业亦是如此。时代总是随着时间在不断的向前发展着。现在,让我们站在普通公司的角度,去回顾一下他们对数据处理及存储的经历。

2003年左右,国内开始进入了全面信息化阶段。影像数据可以通过数码设备(如数码照相机、摄像机、手机等)来采集。并且,为了得到更好的效果,把数据导入到电脑上,使用位图处理软件(如photoshop等)来进行后期的修善。最后用打印机或喷绘机输出实质性的图像,至此还不算完成。为了日后的可重复利用,还需把所有数据保留下来,存放在硬盘当中。日复一日,时间过的很快,没过多长时间,80G主流配置的硬盘空间已所剩无几了。同时,市场的需求也越来越大,从原来一台计算机增加到两台、三台、四台或更多。那么这样,问题就会随之而来。 数据被分散在多个独立的机器上,像素材类的资源,每个设平面设计师都会使用到,若每台机器都存放海量的、重复的素材资源,那么在一个店中,数据的重复量有多大呢,而且每台计算机的硬盘也需要很大。这时候,NAS就随之而生了。

NAS(Network Attached Storage:网络附属存储):说起它,也许大家会比较陌生。但是我相信使用过计算机的朋友,对于它的工作原理是一点也不陌生。NAS说白了就是一台专业的数据共享服务器,它支持的协议有NFS、CIFS、FTP、HTTP等,普通的操作系统都有支持这些协议的客户端程序。可以直接映射、挂载使用。这样,重复、大量的数据就可以保存到NAS中,每个需要资源的计算机都可以共同使用这些素材。而且,客户机只需拥有原有的本地硬盘,所有的生产数据都存放到NAS中,日后存放数据的空间的增加,也只在NAS端完成便可。可是,当需要存取本地资源的时候该如何实现呢?比如数据库,它只可以存放在本地硬盘中,任何共享方式的协议它都不支持。

SAN存储域网络(Storage Area Network):当911事件发生之后,由于该事件致使很多公司宣布破产或倒闭,其多数原因是因为在该事件中,很多公司的业务数据被毁,从而一蹶不振。接着,人们就在思考,如何才能更好的保护数据。SAN存储区域网络,它刚好能解决这一问题,它的数据传输方式是以光纤为载体。由于信号传输延迟时间小、没有失真的特点,故它可以长距离传输数据,一般都在10公里以上。由于这个网络是专门用于数据存储之用,所以整个结构叫做存储区域网络。就如同把硬盘线从数米延长至数公里一样。对数据极度敏感的大企业到无所谓,可是对小点的企业来说,构建这么一个存储网络的费用是及其昂贵的。可以说公司现有的所有信息设备都需更换或整改成以光纤传输的方式。比如以前的双绞线改为现在的光纤;RJ45网卡改为光纤网卡;交换路由器都需更换为光纤交换、路由器;管理人员需专门培训等等;总之没有数百万是拿不下来的。

ISCSI:当前网速越来越快,光从家庭用户就能看的出来,从原先的512k到1M,再到2M、4M、8M等,发达国家的网络带宽会更高。ISCSI的出现,使得光纤SAN产生的费用贵的问题迎刃而解。它是基于现有的ip网络,对scsi协议进行数据封装,使得原本只能在本地传输的scsi硬盘数据,可以通过网络来传输。若存放ISCSI数据的机房为私有本地专用机房,那么,在千兆网络的环境中,其性能绝不会影响使用需求。

目前iscsi的后端存储架构一般分为三种:

一、 控制器架构:它的所有控制、转换节点,都是由硬件芯片或嵌入式设备组成,

它们都是由开发商根据iscsi协议,自己编写、设计出来的。由于各个芯片工

二、 三、

作的单一性,使得这种架构的整体数据处理性能很高,而且运行更稳定。 PC架构:由一台性能高效稳定的普通计算机(服务器),通过iSCSI Target软件实现iscsi功能。

PC+TOE架构:这种架构就是在PC架构上,加入协议卸载网卡。把原本用CPU包装、拆解iscsi数据到tcp协议包的操作,转由网卡中的专用芯片来完成,从而减轻CPU的压力。

由于iscsi所涉及到的内容太多,即使花三天三夜也整理不完。但是为了更好的理解,下面我们通过手头所拥有的设备,实做一下简单的iscsi实验。

服务器端:

一、安装target软件;

二、创建要输出的设备;

可输出的设备有如下几种: 1、 lvm卷设备;

2、 由文件组成的块设备(经过tgtimg工具处理过的); 3、 单一的分区; 4、 整个磁盘;

5、 RAID组成的卷设备;

这里我们只使用lvm卷来做演示。

三、修改配置文件(/etc/tgt/targets.conf);

配置文件选项可以参考:http://linux-iscsi.sourceforge.net/iscsi.conf.5.html

配置文件的语法及经常会使用到的几个选项(默认配置文件是/etc/tgt/targets.conf,也可以包含其他,如:/etc/tgt/xen/*等) 选项 …… 功能描述 Iscsi目标输出,配置域的开始及结束; iqn.yyyy-mm.com.example:storage.tape1.sys1.xyz 参考链接:http://en.wikipedia.org/wiki/ISCSI Backing-store Direct-store Initiator-address incominguser OutgoingUsername 后备存储,一般指非实际的物理盘,如lvm卷、某个分区、文件组成的块设备等; 直接存储,与backing-store想对,指实际的物理磁盘,如整个硬盘等,系统中一般表示为sdb、sdc等; 发起者地址,指定该资源只允许某些客户机使用;格式可以是ip地址,也可以为192.168.1.0/24格式来描述一个网段; 使用chap认证协议,由target来认证initiator端,格式为”incominguser username userpassword”; 使用chap认证协议,由initiator来认证target端,格式为”outgoingusername username userpassword”,较少使用; iSCSI Qualified Name (IQN) 输出的iscsi限定名称,格式为:

四、配置&重启服务;

五、查看输出状态

客户机端:

一、安装iscsi发起端套件(iscsi-initiator-utils)

二、查看服务器设备的输出

三、链接设备

四、分区并格式

五、使之开机自动挂载

六、断开链接及卸载

进阶篇: 服务器端: 一、修改配置文件

二、重启服务

三、查看输出

客户机端: 一、修改配置文件

二、查看输出及链接设备

附表: 表一:服务器端主要命令及配置文件 位置 /etc/rc.d/init.d/tgtd /etc/sysconfig/tgtd /etc/tgt/targets.conf /usr/sbin/tgt-admin /usr/sbin/tgt-setup-lun /usr/sbin/tgtadm /usr/sbin/tgtd 作用 Target服务控制脚本 可以指定target的配置文件位置 Target的配置文件 用perl语言写的脚本,主要调用tgtadm命令,简化了操作参数,使管理员用起来更为方便 设置iscsi逻辑单元号的程序 管理target的工具,通过它,可以直接修改配置文件里面的内容 Target的服务守护程序,当服务开启时,该服务的进程由它创建及提供 /usr/sbin/tgtimg Tgt-admin命令语法 -e, --execute 读取/etc/tgt/targets.conf文件中的配置信息,根据配置内容,通过tgtadmin命令来添加或删除target,若target已存在,则不处理该记录,可以参考—update; -d, --delete 可以删除所有或指定的,不被发起者(initiator)链接的target;如果想删除被使用中的target,可以加上—force参数; Example usage: --delete ALL - 删除所有targets --delete tid=4 - 删除第四个target (target with tid 4) --delete iqn.2008-08.com.example:some.target - 删除指定target 使所有的或指定的target处于离线状态;处于离线状态的target,在发起者端(initiator)是无法使用的; Example usage: --offline ALL - 使所有target离线 --offline tid=4 - 使第四个target离线 (target with tid 4) --offline iqn.2008-08.com.example:some.target - 让指定target离线 把磁带创建成target可用的镜像文件 表二:服务器端命令tgt-admin用法 --offline --ready 让所有的或指定的target处于就绪状态(即在线状态),与—offline功能相反; Example usage: --ready ALL - 让所有target处于在线状态 --ready tid=4 - 让第四个target处于在线状态(target with tid 4) --ready iqn.2008-08.com.example:some.target -让指定target处于在线状态 --update -s, --show -c, --conf --ignore-errors -f, --force -p, 更新所有的或指定的不被链接的target配置;用法与—delete相似,若想更新被链接中的target,可以加上—force参数; Example usage: --update ALL - ready all targets --update tid=4 - ready target 4 (target with tid 4) --update iqn.2008-08.com.example:some.target - update this target 查看所有target当前的状态; 指定一个备用的配置文件; 跳过所有错误,继续执行; 一般跟在操作动作后面,表示强制执行某操作; 只显示该操作后的结果信息,并不真的执行该操作,有点像-v选项; --pretend 一般在执行某个不太确定的操作前,先搭配该选项看看会输出什么样的结果; Example usage: Tgt-admin –e –p --dump 显示targets.conf文件中的有效配置信息; Example usage: Tgt-admin –dump > tgt.conf -若想转存,请使用重定向符号; -v, --verbose 显示详细信息,可以看到tgt-admin让tgtadm命令执行了什么样的操作; -h, --help 位置 /etc/iscsi/iscsid.conf /etc/rc.d/init.d/iscsi /etc/rc.d/init.d/iscsid /sbin/brcm_iscsiuio /sbin/iscsi-iname /sbin/iscsiadm /sbin/iscsid /sbin/iscsistart Iscsiadm命令语法 iscsiadm -m discoverydb [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I iface -t type –p ip:port [ -lD ] ] | [ [ -p ip:port -t type ] [ -o operation ] [ -n name ] [ -v value ] [ -lD] ] iscsiadm -m discovery [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I iface -t type –p ip:port [ -l ] ] | [ [ -p ip:port ] [ -l | -D ] ] #探测模式及可用的参数; iscsiadm -m node [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] [ -U 查看帮助信息 作用 Iscsi发起者(initiator)配置文件; 登录到target的服务控制程序; 使客户机成为发起者(initiator)的服务控制程序; Broadcom的iscsi设备驱动监测、调试器; Iscsi发起者名称生成工具 发起者端的管理控制程序; 成为发起者的守护服务程序; Iscsi会话启动程序; 表三:客户端主要命令及配置文件 表四:客户端命令iscsiadm用法 all,manual,automatic ] [ -S ] [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ] [ -n name ] [ -v value ] [ -p ip:port ] ] #节点模式及可用参数; iscsiadm -m session [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -r sessionid | sysfsdir [-R ] [ -u | -s ] ] #会话模式及可用参数; iscsiadm -m iface [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I ifacename ] [ [ -o operation ] [ -n name ] [ -v value ] ] #接口模式及可用参数; iscsiadm -m fw [-l] #固件模式; iscsiadm -m host [ -P printlevel ] [ -H hostno ] #主机模式; iscsiadm -k priority #如同”killall iscsid”命令; -d, --debug=debug_level -h, --help -I, --interface[iface] -k, --killiscsid -D, --discover -l, --login 打印调试等级,等级可从0至8; 显示帮助信息; 接口绑定操作; 如同命令\"killall iscsid\"; 只能使用在discoverydb模式下,用来探测target信息; 登录,该选择只能用在discovery和node模式,若在discovery模式使用,它将登录所有探测到的target; 参考链接 -L, --loginall==[all|manual|automatic] -m, --mode -n, --name=name -o, --op=op -p, --portal=ip[:port] -P, --print=printlevel 模式选择; 指定名称; 选项,可以是new新建、delete删除、update更新、show显示等; Target发布地址; 只能用在node模式;

-T, --targetname=targetname -r, --sid=sid | sysfsdir -R, --rescan -s, --stats Target名称; 重新扫描; 显示会话状态;

-S, --show 查看信息,可用于多种模式; -t, --type=type -u, --logout -U, 指定类型,可以是st,、slp,、isns 、fw 卸载或登出; 登出所有会话; --logoutall==[all,manual,automatic] 探测类型 iSCSI定义了三种探测类型:SendTargets, SLP,iSNS; SendTargets: 本地iscsi协议,当发起者端(initiator)向target端询问可用资源时,target端把本地可用的target资源信息发送给它; SLP: 通过服务定位协议SLP(Service Location Protocol)发现可用target资源; iSNS: 通过iSNS (Internet 存储名称服务协议)发现可用target资源; Fw: 写在固件中的程序; 参考链接:

相关指导文件请查阅如下链接——

http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/index.html23章处;

http://fedoraproject.org/wiki/Scsi-target-utils_Quickstart_Guide http://stgt.sourceforge.net/

http://www.open-iscsi.org/

http://linux-iscsi.sourceforge.net/

http://linux.vbird.org/linux_server/0460iscsi.php

http://zhumeng8337797.blog.163.com/blog/static/10076891420106643314640/

因篇幅问题不能全部显示,请点此查看更多更全内容