iscsi简介,安装,配置

常见的存储方式有das,nas,san:

das:本地存储设备,如本地的磁盘,光盘等

nas:网络附加存储服务器,其实nas就是一台已经配好的主机,只要连接上网络,那么其他主机就可以访问nas主机上的数据了。简单地说,nas就是一台网络文件共享服务器,如:ftp,nfs,samba等

san:存储局域网络,是一个外接式的共享存储设备。我们知道一台主机的磁盘接口是有限的,当我们在一台主机上需要大量的磁盘使用时,就可以使用san了。san服务器共享多个存储设备(如磁盘,分区,dd命令创建的大文件等等),其他客户端主机就可以将这个共享存储设备挂载到本地使用,而且还可以对其进行分区,格式化等操作,如:iscsi技术

iscsi:internet scsi的缩写,基于TCP/IP协议,将scsi接口技术与ip接合起来的一种网络存储技术,分为服务端和客户端,服务端需要安装scsi target,用来共享存储设备,客户端需要安装iscsi initiator,用来连接target端,将target端共享的设备挂载到本地,可以对其进行分区,格式化等操作

使用yum安装即可:

target服务端软件包:scsi-target-utils

主配置文件:/etc/tgt/targets.conf

initiator客户端软件包:iscsi-initiator-utils

主配置文件:/etc/iscsi/iscsid.conf

scsi-target监听的端口是: 3260

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

2、iSCSI服务器端
iSCSI服务器端为iSCSI target,这个是I/O操作的执行者。在系统中可以使用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.baidu.www:Zw3l4S3dgnY

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

在iSCSI通信中,都有一个发起I/O请求的启动端(Initiator)和响应请求并执行实际I/O操作的目标设备(Target),我们能够提供 BlockLevel I/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提供的密码

Initiator守护进程
      open-iscsi包括两个守护进程iscsid和iscsi,其中iscsid是主进程,iscsi进程则主要负责根据配置,在系统启动时进行发起端(Initiator)到服务端(target)的登录,建立发起端与服务端的会话,使主机在启动后即可使用通过iSCSI提供服务的存储设备。
      iscsid进程实现iSCSI协议的控制路径以及相关管理功能。例如守护进程(指iscsid)可配置为在系统启动时基于持久化的iSCSI数据库内容,自动重新开始发现(discovery)目标设备。

Initiator配置     
1> iSCSI initiator 名称设置
   initiator名称用来唯一标识一个iSCSI Initiator端。配置文件为/etc/iscsi/initiatorname.iscsi,命名规则可采用iqn-type格式,利用iscsi-iname命令可产出一个名称,将此名称输入到initiatorname.iscsi配置文件即可。
2> iSCSI Initiator配置
   iSCSI Initiator的配置文件为/etc/iscsi/iscsid.conf,在iSCSI initiator的scsid进程启动和执行iscsiadm命令时,将读取这个配置文件的内容,获取与SCSI目标进行交互的相关信息,主要的配置内容包括:
CHAP Settings 组    本组下的各个设置项主要用来指定Initiator与target验证方式及相关信息  
    设置节点会话的验证模式

node.session.auth.authmethod = CHAP
    CHAP(Challenge Handshake Authentication Protocol ),默认为不验证(none)    
    设置会话target验证initiator的CHAP用户名及对应的密码
    node.session.auth.username = scott
    node.session.auth.password = tiger  
    设置会话initiator验证target的用户名及其对应的密码
    #node.session.auth.username_in = username_in
    #node.session.auth.password_in = password_in      
    设置initiator发现target的验证模式,默认为不验证(none)
    discovery.sendtargets.auth.authmethod = CHAP         
    设置发现会话(discovery session)target验证initiator的CHAP用户名及对应的密码
    discovery.sendtargets.auth.username = scott
    discovery.sendtargets.auth.password = tiger
    设置发现会话(discovery session)initiator验证target的CHAP用户名及对应的密码
    #discovery.sendtargets.auth.username_in = username_in
    #discovery.sendtargets.auth.password_in = password_in
 通过上述配置项,可以看到iSCSI的主要验证方式是CHAP,并且验证是双方向的,在本例中,因为在目标端设置的验证帐号,所以只设定了target验证initiator所需要的用户名和密码。
    超时(Timeouts)设置组:本组设置initiator与target端交互的时间限制。
    重试(retry)设置组:本组设置iscsid重试登录节点的次数。
    会话和设备排队深度(session and device queue depth)设置组:设置session排队命令的数量,设置设备队列深度
     iSCSI设置(iSCSI settings)组:启用或禁止R2T(Ready to Transmit)流控,启用后,initiator在发送任何数据前必须等待 一个R2T命令,默认为禁止(no)。
    node.session.iscsi.InitialR2T = Yes|no
    启用或禁止立即数据(immediate data ),禁止后,initiator不随着SCSI 命令PDU发送未请求的数据。默认为启用(Yes)
     node.session.iscsi.ImmediateData = Yes|No

实例:

一、命令方式配置target

1、服务端新建一个target

tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2015-03.com.test:ocyT1fwO7Oc

2、查看创建的target

tgtadm --lld iscsi --mode target --op show

3、target中添加LUN

tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-sttore /dev/sdbore /dev/sdb

4、查看创建的target

tgtadm --lld iscsi --mode target --op show

5、设置访问target权限

tgtadm --lld iscsi --mode target --op bind -t 1 -I ALL    #所有Initiator都可以访问

tgtadm --lld iscsi --mode target --op bind -t 1 -I 10.10.0.226    #只有这一个IP可以访问

tgtadm --lld iscsi --mode target --op bind -t 1 -I 10.10.0.0/12    #这个网段内的都可以访问

6、访问控制操作

建立一个新的帐号

tgtadm --lld iscsi --mode account --op new --user test1 --password test

显示帐号信息

tgtadm --lld iscsi --mode account --op show

将帐号与target绑定

tgtadm --lld iscsi --mode account --op bind --tid 1 --user test1

查看target

tgtadm --lld iscsi --mode target --op show

Target 1: iqn.2015-03.com.test:ocyT1fwO7Oc

System information:

Driver: iscsi

State: ready

I_T nexus information:

I_T nexus: 2

Initiator: iqn.1994-05.com.redhat:248f7c44be92

Connection: 0

IP Address: 10.10.0.226

LUN information:

LUN: 0

Type: controller

SCSI ID: IET     00010000

SCSI SN: beaf10

Size: 0 MB, Block size: 1

Online: Yes

Removable media: No

Prevent removal: No

Readonly: No

Backing store type: null

Backing store path: None

Backing store flags:

LUN: 1

Type: disk

SCSI ID: IET     00010001

SCSI SN: beaf11

Size: 21475 MB, Block size: 512

Online: Yes

Removable media: No

Prevent removal: No

Readonly: No

Backing store type: rdwr

Backing store path: /dev/sdb

Backing store flags:

Account information:

test1

ACL information:

ALL

10.10.0.0/12

10.10.0.226

# 可以在Account information中看到target绑定的帐号

# 可以在ACL information中看到访问控制策略

或通过配置文件的方式配置target

通过命令方式配置的target在重启服务器后会失效,因为需要保存在配置文件中,系统开机后会自动读取。配置文件为:/etc/tgt/targets.conf

<target iqn.2015-03.com.test:ocyT1fwO7Oc>

backing-store /dev/sdb

incominguser test test1

initiator-address 10.10.0.226

initiator-address 10.10.0.0/12

</target>

backing-store: target包含的LUN对应的存储设备、分区或逻辑卷

incominguser: 定义iscsi接入认证设置,包含用户名和密码

initiator-address: 允许连接target的客户端主机或网络地址

配置完成后,重启tgtd服务,系统将会自动根基配置文件中的设置建立对应的target。可以通过

tgtadm --lld iscsi --mode target --op show进行查看。查看某个具体的target信息,可以使用

tgtadm --lld iscsi --mode target --op show --tid n

二、客户端配置

1、修改配置文件

vim /etc/iscsi/iscsi.conf    #开启chap认证

node.session.auth.authmethod = CHAP

node.session.auth.username = test1

node.session.auth.password = test

2、生成iscsi名称

iscsi-iname保存至/etc/iscsi/initiatorname.iscsi

3、发现目标设备

iscsiadm -m discovery -t sendtargets -p 10.10.0.224

# 此命令查询目标门户(Portal)为10.10.0.224:3260上的目标,查找成功后,返回相应的target ID,同时在 /var/lib/iscsi/send_targets 和 /var/lib/iscsi/nodes目录下记录相应的门户和节点信息。/var/lib/iscsi目录下的内容采用dbm数据库方式存储,所有版本的linux以及大多的unix都随系统带有一个基本的,但是却很高效的数据存储程序集合,被成为dbm数据库。适合于相对比较静态的索引化数据。其实就是一个索引化的文件存储系统。这些信息称之为initiator discoverydb,可以通过iscsiadm相关操作进行管理。使用iscsiadm -m node命令,可以查看到发现的节点记录。

4、登录节点

iscsiadm -m node -T iqn.2015-03.com.test:ocyT1fwO7Oc -l

系统启动时自动登录

iscsiadm -m node -T iqn.2015-03.com.test:ocyT1fwO7Oc -l --op update -n node.startup -v automatic

登录成功后在/sys/devices/platform/会生成一个hostX目录,包含session和connection信息。

服务器端可以查看登录情况

tgt-admin --show

客户端查看session

iscsiadm -m session -P 3

5、测试

查看目标方的存储设备

fdisk -l

格式化设备

mke2fs -j /dev/sdb

注:如果要在系统启动时自动挂接

vi/etc/fstab      #加入一行:

/dev/sdb    /mnt    ext4     default        0  0

但是,Linux系统重启后,磁盘设备的名称可能会发生飘移,从而引起文件系统不能挂载上来或者不能正确挂载,使用UUID的方式进行挂载可以解决这个问题:

使用命令“tune2fs -l /dev/sdb”可以查到文件系统的UUID:

Filesystem UUID:          ff6bd4a0-6985-4c3f-9008-11f7a5ecc299

然后在/etc/fstab中添加

UUID=ff6bd4a0-6985-4c3f-9008-11f7a5ecc299    /mnt    ext4     default        0  0

替换掉原来的 /dev/sdb  /mnt    ext4     default        0  0

注:如何手动通过UUID来挂载磁盘 在/etc/fstab中添加

UUID=ff6bd4a0-6985-4c3f-9008-11f7a5ecc299       0  0

这样系统启动后是不会挂载这个磁盘的,然后执行以下命令:

mount UUID=ff6bd4a0-6985-4c3f-9008-11f7a5ecc299

这样就可以手动通过UUID来挂载磁盘了

6、登出节点

umount /mnt

iscsiadm -m node -T iqn.2015-03.com.test:ocyT1fwO7Oc -u

时间: 2024-08-05 14:43:20

iscsi简介,安装,配置的相关文章

01 Node.js简介, 安装&amp;配置

Node.js 简介 Node.js 是什么 Node.js 有着强大而灵活的包管理器(node package manager,npm) 目前, 已经有强大第三方工具模块, 例如数据库连接, 网站开发框架, CSS生成器, 操作系统API, 网络通信 等. Node.js 是什么 ? 是一个让 javascript 运行在服务器端的平台, 以前javascript只能运行在浏览器中,  node.js 可以解析 javascript. CommonJS 试图设计一套Javascript的规范.

Vsftpd 简介 安装 配置 验证

一 Vsftpd 简介 一款完全面免费,开放源代码的ftp服务器软件,小巧易用,支持虚拟用户,支持带宽限制,安全性高 二 Vsftpd 安装 配置 1.yum install vsftpd 2.创建虚拟用户目录 mkdir /home/ftpfile 3.添加匿名用户 adduser ftpuser -d /home/ftpfile 4.设置selinux vi /etc/selinux  SELINUX=disable 5.配置vsftpd 参照了链接, 下面是我自己的 1 write_ena

SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案

查看警告:show warnings:  备份库结构:mysqldump 库 -add-drop-table  >  路径 添加用户:grant select,insert on 库名 to '用户名'@'172.8.8.8' identified by '密码':flush privileges 所有权限:grant all privileges on *.* to 'name'@'%' identified by 'mima':      ---- 小 Q -----------------

iscsi的安装配置

1.测试主机IP:192.168.20.109 2.yum 升级安装iscsi所需的安装包 yum install scsi-target-utils(服务端) iscsi-initiator-utils(客户端) 3.service tgtd start 开启 tgtd 服务 端口号为3260 4.配置vim /etc/tgt/targets.conf 在末尾添加 <target iqn.2015-04.dev:server.iscsidisk> backing-store /home/is

Linux下DHCP服务安装配置

简介 安装配置 简介 DHCP (Dynamic Host Configuration Protocol,动态主机管理协议)是一种基于UDP协议且仅限用于局域网的网络协议,主要用途是为局域网内部设备或网络供应商自动分配IP地址,通常会应用在大型的局域网环境中或局域网内存在比较多的移动办公设备,DHCP协议能够实现集中的管理.分配IP地址. DHCP服务程序能够使局域网内的主机自动且动态的获取IP地址.子网掩码.网关地址以及DNS服务器地址等信息,且能够有效的提升地址使用率,提高配置效率,减少管理

Ogre简介及安装配置

Ogre简介及安装配置 关于Ogre Ogre,食人魔,兽人部落曾经的盟友,如今遍布艾泽拉斯和德拉诺.当然,这里说的Ogre不是这些梨形的胖子们,而是“Object-Oriented Graphics Rendering Engine”,面向对象的图形渲染引擎. 由于种种原因,需要用C++来做渲染,我找了很多不同游戏引擎的资料最终选定了Ogre.Ogre并不是一个完整的游戏引擎,他只能够实现图形渲染的功能,但是它能够添加很多插件,让我们开发一个完整的游戏.如果不想深入了解游戏程序开发的话,建议去

Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装

原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解. 今天我们会分析到以下内容: 1.      Linux体系结构简介 2.      Linux内核源码简介 3.      Linux内核配置.编译.安装 l  Linux体系结构简介 1.       Linux体系结构(linux系统构成)

zookeeper工作原理、安装配置、工具命令简介

1 Zookeeper简介Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等.2 zookeeper基本概念2.1角色Zookeeper中的角色主要有以下三类,如下表所示: 系统模型如图所示: 2.2设计目的1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能.2 .可靠性:具有简单.健壮.良好的性能,如果消息m被到一台服务器

马哥学习笔记二十五——ISCSI协议,架构及其安装配置

ISCSI监听在tcp/3260端口 iSCSI Target:iscsi-target-utils 客户端认正方式: 1.基于IP 2.基于用户,CHAP tgtadm:命令行工具,模式化命令 --mode 常用模式:target,logicalunit,account target --op new.delete.show.update.bind.unbind logicalunit --op new.delete account --op new.delete.bind.unbind --