首页 > 代码库 > iscsi挂载lun

iscsi挂载lun

2016-10-01/21:07:24

http://www.cnblogs.com/wuchanming/p/4019660.html
http://czmmiao.iteye.com/blog/2055805

http://lookingdream.blog.51cto.com/5177800/1825286  还有些细节要仔细看

 

iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的、可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。

iSCSI可分享的设备类型有很多,包括镜像文件(*.img)、分区(partition)、物理硬盘、raid设备、逻辑卷等,下面我们将准备其中的几种来测试,其他类型大家可以自行测试。

iSCSI 服务端和客户端的通讯就是一个在网络上封包和解包的过程,在网络的一端,数据包被封装成包括TCP/IP头、iSCSI 识别包和SCSI 数据三部分内容,传输到网络另一端时,这三部分内容分别被顺序地解开。为了保证安全,iSCSI 有约定操作顺序。在首次运行时,客户端(initiator)设备需要登录到服务端(target)中。任何一个接收到没有执行登录过程的客户端的iSCSI PDU (iSCSI rotocol Data Units,iSCSI 协议数据单元)服务端都将生成一个协议错误,并且关闭连接。在关闭会话之前,服务端可能发送回一个被驳回的iSCSI PDU。

在工作时,iSCSI使SCSI数据块由原来的SCSI总线连接扩展到internet上,这一过程有些产品通过硬件来实现,这种硬件产品被简称为TOE(TCP Offload Engine),随着近年来服务器芯片技术的不断发展,服务器处理能力日益强劲,目前更为普遍的是通过软件来实现SCSI数据块的封装过程。这种软件通常被称为iSCSI Initiator软件/驱动。Initiator软件可以将以太网卡虚拟为iSCSI卡,接受和发送iSCSI数据报文,通过普通以太网卡来进行网络连接,但是需要占用CPU资源。另外的TOE和HBA连接转换方式都需要专门的硬件设备来完成,虽然相对昂贵但执行效率高,也可以减轻主机CPU的负载。本文客户端采用Initiator驱动的连接方式。

 

open-iscsi包括两个守护进程iscsid和iscsi,其中iscsid是主进程,iscsi进程则主要负责根据配置在系统启动时进行发起端(Initiator)到服务端(target)的登录,建立发起端与服务端的会话,使主机在启动后即可使用通过iSCSI提供服务的存储设备。

iscsid进程实现iSCSI协议的控制路径以及相关管理功能。例如守护进程(指iscsid)可配置为在系统启动时基于持久化的iSCSI数据库内容,自动重新开始发现(discovery)目标设备。

Open-iSCSI是通过以下iSCSI数据库文件来实现永久配置的:

    Discovery (/var/lib/iscsi/send_targets)
    在 /var/lib/iscsi/send_targets 目录下包含iSCSI portals的配置信息,每个portal对应一个文件,文件名为“iSCSI portal IP,端口号”(例如172.29.88.61,3260)。

    Node (/var/lib/iscsi/nodes)
    在 /var/lib/iscsi/nodes 目录下,生成一个或多个以iSCSI存储服务器上的Target名命名的文件夹如iqn.2000-01.com.synology:themain-3rd.ittest,在该文件夹下有一个文件名为“iSCSI portal IP,编号” (例如172.29.88.62,3260,0)的配置参数文件default,该文件中是initiator登录target时要使用的参数,这些参数的设置是从/etc/iscsi/iscsi.conf中的参数设置继承而来的,可以通过iscsiadm对某一个参数文件进行更改(需要先注销到target的登录)。

iscsiadm是用来管理(更新、删除、插入、查询)iSCSI配置数据库文件的命令行工具,用户能够用它对iSCSI nodes、sessions、connections和discovery records进行一系列的操作。

iSCSI node是一个在网络上可用的SCSI设备标识符,在open-iscsi中利用术语node表示目标(target)上的门户(portal)。一个target可以有多个portal,portal 由IP地址和端口构成。

 

------------------------------------------------------------------

存储端:

storage storwize v3700

Machine Type and Model: 6099-12C
Machine Part Number:     6099L2C
Serial Number:         78B1633

添加主机,port,再mapping volume

主机端:

centos6.8

    4  fdisk -l
    6  yum install iscsi-initiator-utils
    7  cat /etc/iscsi/initiatorname.iscsi
    8  iscsiadm -m discovery -t sendtargets -p 192.168.40.101
    9  service iscsi status
   10  iscsiadm --mode node --targetname iqn.1986-03.com.ibm:2145.storage.node1 --portal 192.168.40.101:3260 --login
   11  fdisk -l
   12  service iscsi restart
   18  service iscsi status
   21  fdisk -l
   23  iscsiadm -m node

 

------------------------------------------------------

man iscsiadm

specify the mode. op must be one of discoverydb, node, fw, host iface or session.
for node and session mode.
for discovery mode.

iSCSI defines 3 discovery types: SendTargets, SLP, and iSNS.

iscsiadm supports the iSNS (isns) or SendTargets (st) discovery type. An SLP implementation is under development.
------------------------------------------------------

就如同一般外接式储存装置 (target 名称) 可以具有多个磁盘一样,我们的 target 也能够拥有数个磁盘装置的。 每个在同一个 target 上头的磁盘我们可以将它定义为逻辑单位编号 (Logical Unit Number, LUN)。

 

1.一般的网卡就能当作 iSCSI Target 但是缺点就是会消耗太多的 CPU 资源,针对这样的问题所以发展出另外两种的 iSCSI Target 网卡.
2.一种是软件的 iscsi + TOE (TOE:TCP/IP offload engine),它可以针对 TCP/IP 的封包直接在网络卡 上运算所以不会因此占用系统上的 CPU 的使用率,  
3.另外一种就是硬件式的 iSCSI + TOE. 它除了具有 TOE 还可以直接针对 iSCSI 的数据做运算.基本上它的使用上就像是一般存储设备 HBA.你可以直接在 BIOS 选项作 iSCSI 硬件开机的动作.

 

ISCSI Target 的标准命名方式为:
"Target "+ target名字 (格式如下: iqn.yyyy-mm.<reversed domain name>[:identifier] )

iqn.2001-04.com.example:storage.disk2.sys1.xyz

 

initiator名称用来唯一标识一个iSCSI Initiator端。保存此名称的配置文件为/etc/iscsi/initiatorname.iscsi
[root@rac2 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:f7977cdb666

 

 

target概念

portal概念

 

[root@www ~]# vi /etc/sysconfig/iptables
iptables -A INPUT -p tcp -s 192.168.100.0/24 --dport 3260 -j ACCEPT

yum install iscsi-initiator-utils
service iscsi start
cat /etc/iscsi/initiatorname.iscsi
/var/lib/iscsi/目录下记录着相关信息
/etc/iscsi/iscsid.conf:主要的配置文件,用来连结到 iSCSI target 的设定;
/sbin/iscsid:启动 iSCSI initiator 的主要服务程序;
/sbin/iscsiadm:用来管理 iSCSI initiator 的主要设定程序;
/etc/init.d/iscsid:让本机模拟成为 iSCSI initiater 的主要服务;
/etc/init.d/iscsi:在本机成为 iSCSI initiator 之后,启动此脚本,让我们可以登入 iSCSI target。所以 iscsid 先启动后,才能启动这个服务。为了防呆,所以 /etc/init.d/iscsi 已经写了一个启动指令, 启动 iscsi 前尚未启动 iscsid ,则会先呼叫 iscsid 才继续处理 iscsi 喔!

老实说,因为 /etc/init.d/iscsi 脚本已经包含了启动 /etc/init.d/iscsid 的步骤在里面,所以,理论上, 你只要启动 iscsi 就好啦!
[root@clientlinux ~]# chkconfig iscsid on
[root@clientlinux ~]# chkconfig iscsi on

service iscsid [status|start]
service iscsi status 查看iscisi的信息,只有在连接成功后才输出
这里可能遇到start始终没有启动成功的信息输出,请继续往下执行discovery,一般会启动iscsid。

 

 

1.发现target
iscsiadm -m discovery -t st -p ISCSI_IP
iscsiadm -m discovery -t sendtargets -p 192.168.3.16

2.查看iscsi发现记录:
iscsiadm -m node

-m node:找出目前本机上面所有侦测到的 target 信息,可能并未登入喔

3.登陆与登出target
iscsiadm -m node -T LUN_NAME -p ISCSI_IP -l

加-p或--portal与不加是有所区别的,参看target与portal的概念。一个target上有两个portal
iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node1 -p 192.168.40.101:3260 --login

iscsiadm -m node --targetname iqn.1986-03.com.ibm:2145.storage.node1 --portal 192.168.40.101:3260 --login

iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logout

仅登入某部 target ,不要重新启动 iscsi 服务

-T target名称

-l  --login

[root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --loginLogging in to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] (multiple)Logging in to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] (multiple)Login to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] successful.Login to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] successful.[root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logoutLogging out of session [sid: 6, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260]Logging out of session [sid: 7, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260]Logout of [sid: 6, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] successful.Logout of [sid: 7, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] successful.[root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 -p 192.168.40.104 -lLogging in to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] (multiple)Login to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] successful.[root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logoutLogging out of session [sid: 8, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260]Logout of [sid: 8, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] successful.[root@rac2 ~]# 

 

iscsiadm -m node -T targetname --logout   这个时候的 target 连结还是存在的,虽然注销你还是看的到!
iscsiadm -m node -o [delete|new|update] -T targetname
选项与参数:
--logout :就是注销 target,但是并没有删除 /var/lib/iscsi/nodes/ 内的数据
-o delete:删除后面接的那部 target 链接信息 (/var/lib/iscsi/nodes/*)
-o update:更新相关的信息
-o new :增加一个新的 target 信息。

[root@rac1 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node1 --logout
Logging out of session [sid: 6, target: iqn.1986-03.com.ibm:2145.storage.node1, portal: 192.168.40.101,3260]
Logout of [sid: 6, target: iqn.1986-03.com.ibm:2145.storage.node1, portal: 192.168.40.101,3260] successful.

[root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logout
Logging out of session [sid: 5, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260]
Logout of [sid: 5, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] successful.

[root@rac1 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node1 --logout
iscsiadm: No matching sessions found
[root@rac1 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logout
iscsiadm: No matching sessions found

[root@rac1 ~]# iscsiadm -m node
192.168.40.104:3260,1 iqn.1986-03.com.ibm:2145.storage.node2
192.168.40.102:3260,1 iqn.1986-03.com.ibm:2145.storage.node2
192.168.40.103:3260,1 iqn.1986-03.com.ibm:2145.storage.node1
192.168.40.101:3260,1 iqn.1986-03.com.ibm:2145.storage.node1

[root@rac1 ~]# iscsiadm -m node -o delete -T iqn.1986-03.com.ibm:2145.storage.node1
[root@rac1 ~]# iscsiadm -m node -o delete -T iqn.1986-03.com.ibm:2145.storage.node2
[root@rac1 ~]# iscsiadm -m node
iscsiadm: No records found

4.开机自动:
iscsiadm -m node –T LUN_NAME -p ISCSI_IP --op update -n node.startup -v automatic

5.查看存储是否挂载上
fdisk -l

6.用parted进行分区
parted /dev/sdb
mklabel gpt     设置分区为gpt
mkpart primary 0% 100% 将空间划分为一个分区
print
quit
注:fdisk支持小于2TB的磁盘,大于2TB的磁盘需要用parted

7.格式化分区
mkfs.ext4 -T largefile /dev/sdb1
注:-T largefile对格式化大文件速度要快很多
查看磁盘的uuid
blkid /dev/sdb1
/dev/sdb1: UUID="27f0ec37-d7ab-4c93-b9e3-cd09ddd9e340" TYPE="ext4"

8.挂载硬盘
mount  -t ext4 /dev/sdb1 /data

9.开机自动挂载
先在/etc/rc.local进行登陆
vim /etc/rc.lcoal
iscsiadm -m node -T iqn.2001-05.com.equallogic:0-af1ff6-dce2985d0-95e004e6a155508d-bak-disk01 -p 192.168.3.16:3260 --login
vim /etc/fstab
UUID=27f0ec37-d7ab-4c93-b9e3-cd09ddd9e340 /data  ext4  defaults        0 0
注:default后面的一定要注意,第一个0为是否之处dump,第二个0问支持fsck,这个在启动后会fsck /dev/sdb1,而此时没有挂载导致启动失败。

 

chap认证

-------------------------------------------------------------------------------

本组下的各个设置项主要用来指定Initiator与target验证方式。

vi /etc/iscsi/iscsid.conf
# To enable CHAP authentication set node.session.auth.authmethod
node.session.auth.authmethod = CHAP        去掉注释
# To set a CHAP username and password for initiator
node.session.auth.username = ittest              修改为网管提供的认证username/passwordnode.session.auth.password = Storageittest

上面是在我的环境中最为简单的一种CHAP(Challenge Handshake Authentication Protocol)认证方式,而且只验证的节点会话initiator端。其实iSCSI验证可以是双向的,根据服务端的设置,可以验证节点会话的target端(username_in),验证发现会话的CHAP initiator,验证发现会话的CHAP target。(节点会话node.session即登录认证,发现会话discovery.sendtargets即查看)

 

登入需验证码的节点
(1)开启认证
iscsiadm -m node -T LUN_NAME -o update --name node.session.auth.authmethod --value=http://www.mamicode.com/CHAP
*.使用-o同--op
(2)添加用户
iscsiadm -m node -T LUN_NAME --op update --name node.session.auth.username --value=http://www.mamicode.com/[用户名]
(3)添加密码
iscsiadm –m node –T LUN_NAME –op update –name node.session.auth.password –value=http://www.mamicode.com/[密码]

 

 

 

[root@rac1 iscsi]# iscsiadm -m discovery -P 0192.168.40.103:3260 via sendtargets192.168.40.102:3260 via sendtargets192.168.40.101:3260 via sendtargets[root@rac1 iscsi]# iscsiadm -m discovery -P 1SENDTARGETS:DiscoveryAddress: 192.168.40.103,3260DiscoveryAddress: 192.168.40.102,3260Target: iqn.1986-03.com.ibm:2145.storage.node2	Portal: 192.168.40.104:3260,1		Iface Name: default	Portal: 192.168.40.102:3260,1		Iface Name: defaultDiscoveryAddress: 192.168.40.101,3260iSNS:No targets found.STATIC:No targets found.FIRMWARE:No targets found.[root@rac1 iscsi]# iscsiadm -m node -P 0192.168.40.104:3260,1 iqn.1986-03.com.ibm:2145.storage.node2192.168.40.102:3260,1 iqn.1986-03.com.ibm:2145.storage.node2[root@rac1 iscsi]# iscsiadm -m node -P 1Target: iqn.1986-03.com.ibm:2145.storage.node2	Portal: 192.168.40.104:3260,1		Iface Name: default	Portal: 192.168.40.102:3260,1		Iface Name: default[root@rac2 ~]# iscsiadm -m sessiontcp: [3] 192.168.40.103:3260,2 iqn.1986-03.com.ibm:2145.storage.node1 (non-flash)tcp: [4] 192.168.40.101:3260,1 iqn.1986-03.com.ibm:2145.storage.node1 (non-flash)[root@rac2 ~]# [root@rac1 ~]# iscsiadm -m sessiontcp: [7] 192.168.40.102:3260,1 iqn.1986-03.com.ibm:2145.storage.node2 (non-flash)tcp: [8] 192.168.40.104:3260,2 iqn.1986-03.com.ibm:2145.storage.node2 (non-flash)[root@rac2 ~]# iscsiadm -m session -P 0tcp: [3] 192.168.40.103:3260,2 iqn.1986-03.com.ibm:2145.storage.node1 (non-flash)tcp: [4] 192.168.40.101:3260,1 iqn.1986-03.com.ibm:2145.storage.node1 (non-flash)[root@rac2 ~]# iscsiadm -m session -P 1Target: iqn.1986-03.com.ibm:2145.storage.node1 (non-flash)	Current Portal: 192.168.40.103:3260,2	Persistent Portal: 192.168.40.103:3260,2		**********		Interface:		**********		Iface Name: default		Iface Transport: tcp		Iface Initiatorname: iqn.1994-05.com.redhat:f7977cdb666		Iface IPaddress: 192.168.30.32		Iface HWaddress: <empty>		Iface Netdev: <empty>		SID: 3		iSCSI Connection State: LOGGED IN		iSCSI Session State: LOGGED_IN		Internal iscsid Session State: NO CHANGE	Current Portal: 192.168.40.101:3260,1	Persistent Portal: 192.168.40.101:3260,1		**********		Interface:		**********		Iface Name: default		Iface Transport: tcp		Iface Initiatorname: iqn.1994-05.com.redhat:f7977cdb666		Iface IPaddress: 192.168.30.32		Iface HWaddress: <empty>		Iface Netdev: <empty>		SID: 4		iSCSI Connection State: LOGGED IN		iSCSI Session State: LOGGED_IN		Internal iscsid Session State: NO CHANGE

 

iscsi挂载lun