数据每每是应用程序(架构)核心,那么如何存储数据就很是重要。node
顾名思义,直接附加存储就是将存储直接附加在应用服务器中来实现数据的存储。存储设备是经过接口类型于应用程序服务器链接的。数据库
IDE (并行):数据可能有干扰 理论:133MB/s。早期是叫作ATAvim
SATA (串行)II: 3Gbps III: 6Gbps后端
IDE速度慢,出现了SCSI(Smal System System Interface)。 bash
SCSI接口:服务器
UltraSCSI-320:320MB/s网络
UltraSCSI-640:640MB/ssession
SAS: 6Gbps架构
USB,sSATA,1394dom
如今直连式存储与服务器主机之间的链接通道一般采用SCSI协议链接
通常说来,NAS是文件服务器。像NFS,Samba等。提供文件级别的共享。
SCSI之间通讯是一种C/S架构。
叫作Initator(发起者 C)
这里称之为Target:(目标 S),每一个Target可包含多个LUN(Logical Unit Number 逻辑单元)。真正提供服务的是LUN。
下图是SCSI协议之间通讯的过程:
内核空间:系统调用 --》 虚拟文件系统 --》 文件系统 --》 buffer cache --》 驱动 --》 SCSI接口
用户空间:经过GNU c library 调用内核空间的系统调用
以下图:
所谓iSCSI是利用tcp/ip协议来传输SCSI报文的一种机制。
说明:
172.166.10.16 Target端
### Target端:(172.16.10.16) 一、准备要共享的设备,这里使用本地磁盘上的新分区代替(只须要分区,不须要格式化便可) fdisk /dev/sda partx -d /dev/sda partx -a /dev/sda
准备好共享磁盘后,继续如下的操做:
二、安装iscsi服务端: yum -y install scsi-target-utils service tgtd start chkconfig tgtd on netstat -tnlp | grep 3260
服务端的配置,可使用命令方式,也可以使用配置文件的方式。
tgtadm命令的介绍:
tgtadm 是一个模式化的命令 使用格式:tgtadm --lld [driver] --op [operation] --mode [mode] [OPTION]... 常见的模式(mode):target logicalunit account ##################################################### target模式的管理命令:管理target new:建立一个新的 target show:显示target delete:删除target update:更新(修改)target bind:基于IP地址控制 unbind:解除绑定 ##################################################### logicalunit模式的管理命令:关联tid和后端磁盘 new:建立一个新的LUN deltete:删除一个已有的LUN ##################################################### account模式的管理命令:管理account CHAP(挑战式握手应用) 单向认证 new deltete bind unbid ##################################################### target和Initator之间是经过iqn名称来通讯的 iqn格式名称: iqn.yyyy-mm.reverse-domaim-name:string[.sunstring] 例如:iscsi-iname -p iqn.2014-09.com.magedu.target 也可经过命令的生成的方式:iscsi-iname -p iqn.2014-09.com.magedu ##################################################### 示例: # (1)、添加一个新的 target 且其ID为 [id], 名字为 [name]. --lld [driver] --op new --mode target --tid=[id] --targetname [name] # (2)、显示全部或某个特定的target: --lld [driver] --op show --mode target [--tid=[id]] # (3)、向某ID为[id]的设备上添加一个新的LUN,其号码为[lun],且此设备提供给initiator使用。 ## [path]是某“块设备”的路径,此块设备也能够是raid或lvm设备。lun0已经被系统预留。 --lld [driver] --op new --mode=logicalunit --tid=[id] --lun=[lun] --backing-store [path] # (4)、删除ID为[id]的target: --lld [driver] --op delete --mode target --tid=[id] # (5)、删除target [id]中的LUN [lun]: -lld [driver] --op delete --mode=logicalunit --tid=[id] --lun=[lun] # (6)、定义某target的基于主机的访问控制列表,其中,[address]表示容许访问此target的 # initiator客户端的列表: --lld [driver] --op bind --mode=target --tid=[id] --initiator-address=[address] # (7)、解除target [id]的访问控制列表中[address]的访问控制权限: --lld [driver] --op unbind --mode=target --tid=[id] --initiator-address=[address]
经过tgtadm命令提供SCSI服务:
步骤以下: # 建立一个target: tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2014-09.com.magedu:test2 # 建立LUN,号码为1: tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda5 # 开放给172.16.0.0/16网络中的主机访问: tgtadm --lld iscsi --op bind --mode target --tid 1 -I 172.16.0.0/16 其中的-I至关于--initiator-address
建立完成后,可使用如上图的命令查看,查看正确后,服务端配置完成。
在客户端:
这里使用的地址是:172.16.10.22
客户端配置(Initiator): yum install iscsi-initiator-utils # 客户端管理工具 # 如下配置是非必需的,默认状况下,会有一个默认的iqn名称 echo "InitiatorName=`iscsi-iname -p iqn.2014-09.com.magedu`" > \ /etc/iscsi/initiatorname.iscsi echo "InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi service iscsi start chkconfig iscsi on
客户端Initator使用iscsiadm命令来发现,登录设备。
iscsiadm是个模式化的工具,其模式可经过-m或--mode选项指定,常见的模式有discovery、 node、fw、session、host、iface几个。 若是没有额外指定其它选项,则discovery和node会显示其相关的全部记录; session用于显示全部的活动会话和链接 fw显示全部的启动固件值 host显示全部的iSCSI主机 iface显示/var/lib/iscsi/ifaces目录中的全部ifaces设定。 # 用法以下: iscsiadm -m discovery [ -d debug_level ] [ -P printlevel ] \ [ -I iface -t type -p ip:port [ -l ] ] iscsiadm -m node [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] \ [ -U all,manual,automatic ] [ [ -T tar-getname -p ip:port -I iface ] \ [ -l | -u | -R | -s] ] [ [ -o operation ] # 参数说明: -d, --debug=debug_level 显示debug信息,级别为0-8; -l, --login -t, --type=type 这里可使用的类型为sendtargets(可简写为st)、slp、fw和 isns, 此选项仅用于discovery模式,且目前仅支持st、fw和isns;其中st表示容许每一个iSCSI target 发送一个可用target列表给initiator; -p, --portal=ip[:port] 指定target服务的IP和端口; -m, --mode op 可用的mode有discovery, node, fw, host iface 和 session -T, --targetname=targetname 用于指定target的名字 -u, --logout -o, --op=OPEARTION:指定针对discoverydb数据库的操做,其仅能为new、delete、update、show 和nonpersistent其中之一; -I, --interface=[iface]:指定执行操做的iSCSI接口,这些接口定义在/var/lib/iscsi/ifaces中;
iscsiadm -m discovery -t sendtargets -p 172.16.10.16 iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -l
登录成功后,在客户端会发现多了一块磁盘,能够向本地磁盘同样,分区、格式化、挂载使用。
完成挂载使用。
通常状况下,在服务端是使用配置文件。使用命令式为了更好的了解Target端的工做模式。
# 配置文件/etc/tgt/targets.conf <target iqn.2014-09.com.magedu:test2> backing-store /dev/sda5 initiator-address 172.16.0.0/16 </target>
若是客户端不想使用的话,能够登出
iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -u iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -o delete # 必要的时候,使用 rm -rf -rf /var/lib/iscsi/send_targets/*
建立服务端谁所须要的账号,并实现单方向的认证: 一、在target端建立账号christina,并为其授予访问某tid的权限: # tgtadm --lld iscsi --op new --mode account --user mageedu --password 123456 接下来还要将用户与某target进行绑定: # tgtadm --lld iscsi --op bind --mode account --tid 1 --user mageedu # tgtadm --lld iscsi --op show --mode account 二、编辑initiator端主配置文件,配置客户端登陆target时使用此账号和密码: # vim /etc/iscsi/iscsid.conf 取消以下项的注释: # node.session.auth.authmethod = CHAP # node.session.auth.username = username # node.session.auth.password = password 然后,将后两项的用户名密码设置为target端设置的用户名和密码: node.session.auth.username = mageedu node.session.auth.password = 123456 哪果此前还没有登陆过此target,接下来直接发现并登入便可。不然,则须要按照下面的第三步实 现认证的启用。 三、若是initiator端已经登陆过此target,此时还须要先注销登陆后重启iscsid服务,并在删除此 前生成的database后从新发现target,并从新登入,过程以下: # iscsiadm -m session -r sid -u # iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 172.16.10.16:3260 -u # iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 172.16.10.16:3260 -o delete # rm -rf -rf /var/lib/iscsi/send_targets/172.16.10.16:3260 # service iscsid restart # iscsiadm -m discovery -t sendtargets -p 192.168.0.11 # iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -l 说明:其中的target名字和target主机地址可能须要按照您的实际状况修改。
配置完成。