您的位置:首页 > 其它

基于MVC的简单学生信息管理功能实现

2012-10-23 18:54 661 查看
1、常见的存储技术
DAS:Direct Attached Storage,直接附加存储,存储设备通过SCSI接口电缆直接连接到服务器的,存储设备不带有任何操作系统。它依赖于服务器,存储设备就是将硬件设备堆叠起来的。DAS也可称为SAS(Server Attached storage,即服务器附加存储)。
DAS具有如下特性:
1、DAS设备不带有任何操作系统,文件系统位于服务器端,因此是以块级别进行数据传输
2、它是通过SCSI接口电缆与服务器相连,因此,会增加服务器的I/O操作,占用cpu,降低网络和服务性能。
3、不支持多种系统的数据共享
DAS存储设备一般适用于中小型企业

NAS:Network Attached Storage,网络附加存储,NAS是基于IP协议的文件级数据存储,支持现有的网络技术,比如以太网,FDDI等。NAS设备完全是以数据为中心,将存储设备和服务器彻底隔离,集中管理数据,从而有效释放带宽,大大提高了网络整体性能。
NAS设备是一种特殊的数据存储服务器,它内嵌系统软件,可以提供NFS、SMB/CIFS的文件共享。

NAS设备的特点:
1、由于NAS设备内嵌系统,因此数据是以文件级别的方式进行传输
2、由于是一个单独的存储服务器,因此只负责数据的传输,减少了服务器的I/O操作,因此,大大提高了网络性能。
3、NAS支持标准的网络文件系统,支持跨平台存储。
4、服务器只存储数据,可以实现集中化的管理数据
NAS存储设备适用于中小型企业

SAN:Storage Area Network,存储区域网络,这是一个共享的高速存储网络,存储设备位于服务器的后端,且存储设备和服务器之间一般通过光钎(FC)交换机相连,因此传输速率比较快。当然也可以通过IP网络来继续传输,不过这对于网络带宽来说要求非常大的。对于SAN来说,存储设备和服务器完全分离,服务器通过光钎交换机(或IP网络)与不同地区的各个存储设备相连起来,可以实现集中化的管理。
SAN具有的特点:
1、由于文件系统位于服务器上,本身不带有任何操作系统,因此数据是以块级别的方式进行传输
2、由于存储服务器使用光接口,因此传输速率快、高
3、可以将不同区域的服务器通过光钎交换机相连起来,集中化的进行管理
4、由于存储设备位于不同区域,因此可实现大容量存储数据共享
由于组件一套SAN系统比较昂贵,因此适用于大型企业
如今我们所涉及的 SAN (Storage Area Network),其实现数据通信的主要要求是:
1. 数据存储系统的合并;
2. 数据备份;
3. 服务器群集;
4. 复制;
5. 紧急情况下的数据恢复

实现SAN有2种方式:一是称为FC-SAN,通过光钎交换机来实现SAN系统;另一种称为IP-SAN,通过现有的IP网络来实现SAN系统。
两种实现SAN的方式对比如下:




三种存储技术的对比







SCSI协议
SCSI: Small Computer System Interface,SCSI最初是一种专门为小型计算机系统设计的I/O技术,但由于其架构和协议自身的优点,后被广泛应用于实现DAS以及作为SAN的底层技术。
所有的SCSI设备是通过一根总线将其连接起来,这个线就叫做SCSI总线。SCSI总线是SCSI设备之间传输数据的通路。SCSI总线又被称作SCSI通道。SCSI总线最终会连接到SCSI控制器上,SCSI控制器也称为主机适配器(HBA),它控制着SCSI总线上所有的设备与计算器之间的通信。控制器既可以是插入可用插槽的卡,也可以内置在主板上。
因此,SCSI控制器和SCSI设备的连接方式如下图所示:




在SCSI总线末端上有一个终结器,用来减小相互影响的信号,维持SCSI链上的电压恒定。

SCSI ID
一个独立的SCSI总线按照规格不同可以支持8或16个SCSI目标设备(可以称为Target),每个SCSI目标设备都必须具有唯一的标识符(ID)才能正常工作。SCSI ID实际上就是这些目标设备的地址。
窄SCSI总线最多允许8个、宽SCSI总线最多允许16个不同的SCSI目标设备和它进行连接。但是一般SCSI控制器需要使用一个ID,因此,能使用的ID理论比实际要少一个。

LUN
在每一个SCSI目标设备(Target)下还可以连接多个逻辑设备(如磁盘,卷组等等),为了让系统区分每一个逻辑设备,因此每一个逻辑设备都有一个LUN(Logical Unit Number)来标识自己。每个SCSI ID最多有32个LUN,默认从0开始(不过0被占用了),每一个LUN对应着一个逻辑设备。

SCSI通信模型
SCSI是一个C/S架构,其中client端叫做initiator(启动器),服务器端叫做target(目标设备)。SCSI协议采用了分层的思想,SCSI协议簇从上向下可以分为四层:设备特定命令集,共享命令集,传输协议,互联网层。并且SCSI的数据传输是以块的方式进行的。

iSCSI协议
虽然SCSI控制器可以连接多个存储设备,形成自己的网络,但是它只能与直接相连的存储设备进行通信,只能在在局域网内部使用,不能再以太网上共享。因此,对于SCSI协议来说,传输数据的距离是非常有限的。因此,人们为了利用SCSI协议长距离的传输数据,于是就研发了一种新的技术,就是iSCSI协议.
iSCSI协议是一种新的存储技术,它是将SCSI接口与以太网(Ethernet)技术结合起来工作的,简单的说iSCSI协议是将用户的请求转换成SCSI规则编码,然后再将这些数据封装在IP包中以便在以太网中进行传输的协议。

iSCSI协议的功能
iSCSI:internet Small Computer System Interface的缩写,即Internet小型计算机接口。iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的
上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行 SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。它是基于TCP/IP协议的,用来建立和管理IP存储设备、主机和客户机之间的相互连接,并创建SAN。这样使得SAN利用SCSI协议应用在高速数据传输网络成为可能。不过这种传输是以块级别的方式在各个存储设备上进行的。

iSCSI的结构
由于SCSI协议是一个C/S架构,因此iSCSI协议也是一个C/S结构,其中client是initiator,server端为target。iSCSI协议的主要功能是利用TCP/IP网络,在主机系统(可称为initiator)和目标存储设备(称为target)之间进行大量的数据封装和可靠传输过程。此外,iSCSI协议还将SCSI协议封装在IP网络上,并且运行在TCP上。
因此,ISCSI协议的协议栈为下图所示:




iSCSI协议的工作原理
iSCSI协议的工作过程:当iSCSI主机发起数据读写操作后,操作系统会生成一个SCSI指令集,然后该SCSI指令集在iSCSI initiator端被封装成iSCSI消息包,并通过TCP/IP网络传输到存储区域,当存储区域的iSCSI target收到iSCSI消息包时会将其解开,读取其中的SCSI指令,然后再将其SCSI指令传送给SCSI设备执行其指令。当SCSI指令被执行后,返回的数据经过SCSI设备传送给iSCSI target时被封装为iSCSI的响应PDU,然后再通过TCP/IP网络传输给iSCSI initiator端,iSCSI initiator解开其iSCSI PDU包,读取其中的SCSI响应内容,并将其提交给操作系统进行处理,然后操作系统在将其处理后的内容返回给应用程序。

iSCSI的优点
iSCSI最大的优点就是节约成本,利用iSCSI协议构建一个存储网络,除了需要存储设备,交换机、线缆还有以太网接口以外,基本就不需要其他的设备了,只需要在现有的网络上安装iSCSI就可以实现构建一个比较大的存储网络了。对于一个企业来说,这些设备都相同廉价。因此,总体来说,其成本相对比较廉价。

iSCSI实现数据的访问需要的条件:
1、iSCSI客户端
iSCSI客户端为iSCSI initiator,这个是发起I/O操作的启动者。在RedHat Linux系统中可以通过软件来模拟,需要安装iSCSI设备驱动。如iscsi-initiator-utils.rpm
iSCSI initiator具有的特性:
a)、既然是I/O操作的发起者,需要通过发现过程请求远端快设备。
b)、它可以与target进行持久连接
c)、linux中可以通过软件方式来实现

2、iSCSI服务器端
iSCSI服务器端为iSCSI target,这个是I/O操作的执行者。在RedHat Enterprise Linux 5 中可以使用scsi-target-utils软件包来模拟实现。
iSCSI target端具有的特性:
a)、需要导出一个或多个块设备供启动者(initiator)使用
b)、可以通过硬件和软件的方式来实现

3、iSCSI target设备名称
iSCSI target名称必须是全球唯一的,其格式为:iqn.<yyyy-mm>.<tld.domain.some.host>[:<identifier>]
其中:
iqn:iSCSI target名称必须是以iqn开头的
yyyy-mm:表示的是时间
tld.domain.some.host:这个表示的是一个反过来写的域名
identifier:这个可以是任意字符串
如:iqn.2015-03.com.xsl.www:storge.disk1

4、逻辑单元号LUN
LUN ID由iSCSI目标设备(Target)分配。iSCSI 启动端(Initiator)设备当前支持在每个目标设备(Target)中导出最多256个LUN。即最大支持16个target。
对于LUN,比较通俗的理解就是磁盘分区、LVM卷组、RAID等等。

在iSCSI通信中,都有一个发起I/O请求的启动端(Initiator)和响应请求并执行实际I/O操作的目标设备(Target),我们能够提供 BlockLevelI/O 给 Initiator 主机,其目的不外乎是“将硬盘的排线网路化”、“把Target 主机共享磁盘幻化成Initiator 主机的磁碟”以达成更大空间、更高 I/O 速度及具有冗余与高延展度的应用。
Target 即“储存设备”(Storage Device),也就是存放数据的硬盘(以硬盘阵列居多),在使用iSCSI时,会在 iSCSI 储存设备上去建立 LUN(Logical Unit Number)来提供给具备 iSCSI Initiator 功能的主机来存取 数据的。你可以把Target主机看作是服务端,把Initiator主机看作是客户端。LUN 好比是个“逻辑单位磁碟”,为追求效率、冗余与延展性,这个 LUN 通常会是由数个实体磁碟( RAID 或 LVM 技术的技术实现)所组成。

iSCSI initiator发现iSCSI target的过程:
1、ISCSI initiator按照配置文件/etc/iscsi/iscsid.conf中配置的相应项目利用iSCSI的发现机制在网络中收索目标设备target
2、iSCSI target将返回有效的iqn名称给iSCSI initiator
3、ISCSI target按照配置的验证方式接受initiator的登录并返回目标设备target标识
4、iSCSI initiator发生查询请求给target请求查询target的相关信息
5、target响应initiator的查询请求,并将设备的有关信息返回给initiator
6、initiator创建可以的目标设备target列表

iSCSI设备具有的特性:
1. 支持报头和数据摘要
2. 支持两种挑战握手协议CHAP(ChallengeHandshake Authentication Protocol)的认证方式
3. 目标端支持R2T(ReadytoTransfer)流控制
4. 从RHEL4U2开始支持多通道(multipath)
5. 支持sendtargets发现机制
6. 支持动态目标端发现
7. 具备异步事件通知入口
8. 支持即时数据更新
9. 支持动态设备重配
10.支持自动挂接iSCSI技术
11.支持IPV6技术

iSCSI设备名称
iSCSI设备在iSCSI启动端(Initiator)导入的时候,其内核将按当前的设备情况给
iSCSI设备分配一个本地SCSI设备名(例如/dev/sda或/dev/sdb等),如果导入的iSCSI
设备已被分区,在导入iSCSI设备建立本地SCSI设备的同时也会建立相应的分区设备名
(例如/dev/sda1、/dev/sda5等等),但要主要的是此SCSI设备名并不是每次导入是都是
固定的,比如你的主机之前没有/dev/sda设备,你导入了iSCSI设备,其被内核命名
为/dev/sda;之后你将其取消了导入,并重新挂接了一个热插拔设备(如U盘或移动硬盘),
这个热插拔设备占据的/dev/sda设备;你又从新导入了iSCSI设备,此时其被内核分配的
设备名就成了 /dev/sdb。

服务器端管理配置工具tgtadm的使用
tgtadm是一个模式化的命令,其常见的模式有target、logicalunit、account
1、模式target下的语法格式:
tgtadm --lld <driver> --mode target --op {new|delete|show|update|bind|unbind} [option]
其中driver一般为iscsi --op后面的参数表示要进行的操作
new:表示增加一个target,其new的语法格式为:--tid <id> --targetname <name>
delete:表示删除一个target,其delete的语法格式为:delete --tid <id>
show:表示显示所有的target,后面可以接某个target的id,只显示某个target的信息。其show的格式为:show [--tid <id>]
update:用来修改某个特定的target的参数的。其update的格式为:update --tid <id> --name <param> --value <value>
bind:用来将某个特定的initiator和target绑定在一起,表示只接受特定的initiator的请求。其bind的语法格式为: bind --tid <id> --initiator-address <address>
unbind:表示解绑的意思。其unbind的语法格式为:unbind --tid <id> --initiator-address <address>

2、模式logicalunit下的语法格式:
tgtadm --lld <driver> --mode logicalunit --op {new|delete} [option]
其中driver一般为iscsi --op后面的参数表示要进行的操作
new:表示新建一个lun,其new的语法格式为:new --tid <id> --lun <lun> --backing-store <device-path> --bstype <type> --bsoflags
delete:表示删除一个LUN,其delete的语法格式为:delete --tid <id> --lun <lun>

3、模式account下的语法格式:
tgtadm --lld <driver> --mode account --op {new|delete|bind|unbind} [option]
其中driver一般为iscsi --op后面的参数表示要进行的操作
new:表示新建一个账号和密码,new的语法格式为:new --user <name> --password <pass>
delete:删除某个已有的账号,其格式为:delete --user <name>
bind:表示在某个特定的target上添加账号,其格式为:bind --tid <id> --user <name> [--outgoing],如果使用了--outgoing选项,将被添加作为出去的账号来使用。
unbind:表示在某个特定的target上删除某个账号。其格式为:account --op unbind --tid <id> --user <name>

在tgtadm命令中,某些长选项可以使用短选项来代理,如:
--lld=-L
--tid=-t
--lun=-l
--backing-store=-b
--initiator-address=-I
--targetname <targetname>=-T

客户端的管理工具iscsiadm
iscsiadm是个模式化的工具,其模式可通过-m或--mode选项指定,常见的模式有discovery、node、fw、session、host、iface几个。这些模式的主要功能如下:
discovery: 用于发现某服务器是否有target输出,以及输出了哪些target;
node: 管理跟某target的关联关系;
session:用于显示所有的活动会话和连接。
fw:显示所有的启动固件值。
host:显示所有的iSCSI主机。
iface:显示/var/lib/iscsi/ifaces目录中的所有ifaces设定。

1、discovery模式下的语法格式
iscsiadm -m discovery [ -d debug_level ] [ -I iface -t type -p ip:port [-l ] ]
discovery模式下可用选项:
-d, --debug 显示debug信息,级别为0-8;
-l, --login 表示登录target的意思
-t, --type 这里可以使用的类型为sendtargets(可简写为st)、slp、fw和 isns,此选项仅用于discovery模式,且目前仅支持st、fw和isns;其中st表示允许每个iSCSI target发送一个可用target列表给initiator;
-p, --portal 指定target服务的IP和端口;
-m, --mode 可用的mode有discovery, node, fw, host iface 和 session

2、node模式下的语法格式
iscsiadm -m node [ -d debug_level ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ]
node模式下可用选项:
-L ,--loginall 表示登录到所有发现的target设备上。all表示登录到所有的target设备上;manual表示手动登录;automatic表示自动登录。
-T, --targetname 用于指定target的名字
-u, --logout 从target设备上登出
-s, --stats 显示session统计信息
-o, --op:指定针对discoverydb数据库的操作,其仅能为new、delete、update、show和nonpersistent其中之一;
-I, --interface:指定执行操作的iSCSI接口,这些接口定义在/var/lib/iscsi/ifaces中;

3、session模式下的语法结构
iscsiadm -m session -s:显示会话的相关信息

客户端配置文件/etc/iscsi/iscsid.conf
这个文件中的主要参数有如下:
node.startup 设置启动方式,可选的参数有auotmatic 和manual
node.session.auth.authmethod 设置使用CHAP认证方式,默认为NONE
node.session.auth.username target端认证所需initiator提供的用户
node.session.auth.password target端认证所需initiator提供的密码
node.session.auth.username_in initiator端认证所需target提供的用户
node.session.auth.password_in initiator端认证所需target提供的密码
discovery.sendtargets.auth.authmethod 设置使用CHAP认证方式用以发现target端导出的设备,默认为NONE
discovery.sendtargets.auth.username 发现操作时target端认证所需initiator提供的用户
discovery.sendtargets.auth.passwd 发现操作时target端认证所需initiator提供的密码
discovery.sendtargets.auth.username_in 发现操作时initiator端认证所需target提供的用户
discovery.sendtargets.auth.password_in 发现操作时initiator端认证所需target提供的密码

客户端的认证方式
客户端的认证方式有2种:一种是基于ip认证的;另一种是基于用户认证的,使用的认证协议为CHAP。同时iscsi-initiator-utils不支持discovery的认证。
对于用户认证而言,必须先配置基于ip认证,然后才可以配置基于用户认证。

本文出自 “linux学习之路” 博客,请务必保留此出处http://xslwahaha.blog.51cto.com/4738972/1617781
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐