Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19137
  • 博文数量: 1
  • 博客积分: 51
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-04 16:18
文章分类
文章存档

2014年(1)

我的朋友

分类: LINUX

2014-02-12 21:02:27

RH436第二章笔记

概述

ISCSI : internel small system computer interface ,是基于TCP/IP网络 的存储技术,它利用TCP/IP网络来存储scsi命令,本身因为TCP/IP的特性,因此会架构便宜(IP 网络设备价格远比存储网络的价格要低),可以从LAN扩展到WAN上面


IP-SAN是作为存储区域网络的一种便宜的方案,但通常我们建议是将IP-SAN 建立在一个单独隔离的网络上,而不是和平常的业务网络一起用(存储网络与业务网络分离)

iscsi协议本身不加密,只是在发起连接的时候有CHAP认证(包括单向认证和双向认证),在互联网上传送并不安全,因此较少用在互联网上,通常是作为一个单独的存储网络使用,另外也可以使用LUKS linux unified key setup磁盘加密,这样保证数据在传送过程中加密,但协议本身是没有保护的 ,也可以让ipsec协议保护,因为ipsec本身有认证和加密的功能
冗余:
可以用网卡绑定或者多径来保证存储访问的高可用性
注意:bonding只是保证网卡到它连接的设备(通常是交换机)的高可用,但是多径技术 (multi-path)是保证端到端的冗余,因此多径技术更高级。

iscsi相对于NFS 或者DAS HDD的好处在于
1 : 对于DAS而言,服务器坏了,硬盘没坏,也不能访问了
     iscsi磁盘还是可以让其他客户端访问的
2: NFS而言,扩容不容易
   iscsi target 可以1个,2个,3个,直接扩容,创建物理卷,将物理卷加入现存卷组,扩容逻辑卷,创建文件系统,加挂,但nfs有难度
3: 要求网络存储,提供给多台主机同时访问,如集群环境


iscsi协议


理解ISCSI协议重点是理解封装的概念,SCSI命令通过 iscis协议封装后在TCP/IP网络上传送,因此需要CPU资源来处理报文头的封装与解封装(也有专用的iscsiHBA卡,不过价格较贵罢了)


iSCSI术语

IQN: iSCSI Qualified Name :用来识别iSCSI通信的服务端和客户端,格式是
iqn.yyyy-mm.com.reverse.domain:optional-extra-name
如主机名为instructor.example.com。第一个分享的LV空间可以是
iqn.2013-10.com.example.instructor:lv1-my-first-lv

可选部分(含前面的冒号)加上可以用于区分多个分享的设备,如有多个lv要分享的时候


target :iSCSI服务端叫target,target 分享LUN,logical unit ,一台服务器可以分享一个或者多个LUN

initiator:iSCSI客户端叫initiator,可以由软硬件实现,通常软件实现的较多(省钱)

node: iSCSI服务端,iSCSI客户端都叫node

Portal :在iSCSI中,Portal是一个target或者initiator的IP,用于建立连接

iSNS:  internet storage name service ,一个命名服务,用来让initiator发现target,较少使用

iscsi实验


服务器端设置
1:    安装软件包,在这里是scsi-target-utils
2:    创建共享的逻辑卷
3:    配置targets.conf文件
4:    启用tgtd服务
5:    验证

[root@desktop8 ~]# rpm -ql scsi-target-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
/usr/sbin/tgtimg
/usr/share/doc/scsi-target-utils-1.0.14
/usr/share/doc/scsi-target-utils-1.0.14/README
/usr/share/doc/scsi-target-utils-1.0.14/README.iscsi
/usr/share/doc/scsi-target-utils-1.0.14/README.iser
/usr/share/doc/scsi-target-utils-1.0.14/README.lu_configuration
/usr/share/doc/scsi-target-utils-1.0.14/README.mmc
/usr/share/man/man8/tgt-admin.8.gz
/usr/share/man/man8/tgt-setup-lun.8.gz
/usr/share/man/man8/tgtadm.8.gz
[root@desktop8 ~]#


[root@desktop8 ~]# vgs
  VG          #PV #LV #SN Attr   VSize   VFree
  vg_desktop8   1   3   0 wz--n- 464.24g 155.52g
[root@desktop8 ~]# lvcreate -n myiscsi -L 4G vg_desktop8
  Logical volume "myiscsi" created


[root@desktop8 ~]# grep -v '#' /etc/tgt/targets.conf  | grep -v ^$
default-driver iscsi

    backing-store /dev/mapper/vg_desktop8-myiscsi
    scsi_sn desktop8_iscsi_share_myiscsi
    scsi_id 20130212000001
    initiator-address 172.18.8.0/24
    initiator-address 172.19.8.0/24





[root@desktop8 ~]# chkconfig tgtd on
[root@desktop8 ~]# service tgtd start
Starting SCSI target daemon:                               [  OK  ]
[root@desktop8 ~]#
[root@desktop8 ~]# chkconfig tgtd --list
tgtd            0:off   1:off   2:on    3:on    4:on    5:on    6:off



[root@desktop8 ~]# tgt-admin -s
Target 1: iqn.2014-02.com.example:server.myiscsi
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: disk
            SCSI ID: 20130212000001
            SCSI SN: desktop8_iscsi_share_myiscsi
            Size: 4295 MB, Block size: 512
            Online: Yes
            Removable media: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/mapper/vg_desktop8-myiscsi
            Backing store flags:
    Account information:
    ACL information:
        172.18.8.0/24
        172.19.8.0/24
[root@desktop8 ~]#



iscsi 客户端配置

1:    安装iscsi客户端 iscsi-initiator-utils
2:    配置iscsi的客户端IQN名称
3:    发现targets
4:    连接targets
5:    检查 iscsi/iscsid服务


[root@node2 ~]# rpm -qa | grep iscsi
iscsi-initiator-utils-6.2.0.872-34.el6.x86_64

[root@node2 ~]# echo "InitiatorName=iqn.2014-02.com.example.node1:node1" >/etc/iscsi/initiatorname.iscsi

[root@node2 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 172.18.8.254 --discover
Starting iscsid:                                           [  OK  ]
172.18.8.254:3260,1 iqn.2014-02.com.example:server.myiscsi

[root@node2 ~]# iscsiadm --mode node --targetname iqn.2014-02.com.example:server.myiscsi  --portal 172.18.8.254:3260 --login
Logging in to [iface: default, target: iqn.2014-02.com.example:server.myiscsi, portal: 172.18.8.254,3260] (multiple)
Login to [iface: default, target: iqn.2014-02.com.example:server.myiscsi, portal: 172.18.8.254,3260] successful.

[root@node2 ~]# chkconfig --list iscsi
iscsi           0:off   1:off   2:off   3:on    4:on    5:on    6:off
[root@node2 ~]# chkconfig --list iscsid
iscsid          0:off   1:off   2:off   3:on    4:on    5:on    6:off
[root@node2 ~]#


 其他内容补充

tgtadm是一个低层与tgtd服务交互的接口,使用可能没有这么方便
tgt-admin是一个加了売的,更加友好的工具
注意:tgtadm/tgt-admin是与tgtd交互的工具,因此运行这两个命令的前提是让tgtd 先跑起来

tgtd在启动的时候会读取/etc/tgt/targets.conf文件,因此以后的改动需要重启这个tgtd服务

tgt-admin --dump >/root/mytarget.conf
上面的命令将导出当前的运行配置文件(如果/etc/tgt/targets.conf文件有改动,则会与运行的配置不一样),同时这个命令会将额外的注释去掉呵!(通常是个人在共享LUN中注明的一些辅助信息,如共享给谁,大小,等注释信息)

要让target永久生效,要写入配置文件 /etc/tgt/targets.conf文件

很多时候,直接参考默认配置文件,再将里面的内容复制,修改即可

修改后需要重启tgtd服务才能生效,但是如果这个时候有target是在使用的,这个时候重启会失败,

重启失败可以用force-restart参数,但会导致断开原来的iscsi连接

也可以用tgt-admin -e来命令来使用新的target生效,但不是针对原有的target更新生效
更新需要用 tgt-admin -u  来执行,target可以用ALL代替,如果有client连接的话可以加force参数,但可能会导致末知行为


[root@instructor436 ~]# rpm --scripts -q  iscsi-initiator-utils
postinstall scriptlet (using /bin/sh):
/sbin/ldconfig

if [ "$1" -eq "1" ]; then
        if [ ! -f /etc/iscsi/initiatorname.iscsi ]; then
                echo "InitiatorName=`/sbin/iscsi-iname`" > /etc/iscsi/initiatorname.iscsi
        fi
        /sbin/chkconfig --add iscsid
        /sbin/chkconfig --add iscsi
fi
preuninstall scriptlet (using /bin/sh):
if [ "$1" = "0" ]; then
        # stop iscsi
        /sbin/service iscsi stop > /dev/null 2>&1
        # delete service
        /sbin/chkconfig --del iscsi
        # stop iscsid
        /sbin/service iscsid stop > /dev/null 2>&1
        # delete service
        /sbin/chkconfig --del iscsid
fi
postuninstall program: /sbin/ldconfig


首先要改IQN 名称,/etc/iscsi/initiatorname.iscsi中修改

修改/etc/iscsi/iscsid.conf文件,修改里面的超时参数,自动登录login与否,数据块大小等,这些参数作为默认会在 discovery阶段用到

重启iscsi服务 (注意应该是开机启动的服务呵)

target的发现,发现的信息会保存在/var/lib/iscsi/nodes中

三条用来诊断的命令
[root@instructor436 ~]# iscsiadm -m discovery
[root@instructor436 ~]# iscsiadm -m node
[root@instructor436 ~]# iscsiadm -m session

tcpdump -i eth1 tcp port 3260 and src 10.10.213.6    ===过滤ISCSI报文

man iscsiadm可以查看下面的常用命令,不需要背这些命令呵
       Discover targets at a given IP address:

            iscsiadm --mode discoverydb --type sendtargets --portal 192.168.1.10 --discover

       Login, must use a node record id found by the discovery:

            iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --login

       Logout:

            iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --logout

       List node records:

            iscsiadm --mode node

       Display all data for a given node record:

            iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260







常见的问题

1: 要看/var/log/message信息

[root@node1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 172.18.8.254 --discover
172.18.8.254:3260,1 iqn.2014-02.com.example:server.myiscsi

Feb 12 07:17:33 node1 iscsid: Warning: InitiatorName file /etc/iscsi/initiatorname.iscsi does not exist or does not contain a properly formated InitiatorName. If using software iscsi (iscsi_tcp or ib_iser) or partial offload (bnx2i or cxgbi iscsi), you may not be able to log into or d
[root@node1 ~]#

2: 提示非法iqn名称,但是iqn名称正常是什么原因,请尝试手动打开iscsi/iscsid服务,可以解决

[root@node1 ~]#  iscsiadm --mode discovery --type sendtargets --portal 172.18.8.254
iscsiadm: Cannot perform discovery. Invalid Initiatorname.
iscsiadm: Could not perform SendTargets discovery: invalid parameter
[root@node1 ~]#  iscsiadm -m discovery -t st -p 172.18.8.254
iscsiadm: Cannot perform discovery. Invalid Initiatorname.
iscsiadm: Could not perform SendTargets discovery: invalid parameter
[root@node1 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:af4e17c14493
[root@node1 ~]# service  iscsi stop
Stopping iscsi:                                            [  OK  ]
[root@node1 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:af4e17c14493
[root@node1 ~]#  iscsiadm -m discovery -t st -p 172.18.8.254
iscsiadm: Cannot perform discovery. Invalid Initiatorname.
iscsiadm: Could not perform SendTargets discovery: invalid parameter
[root@node1 ~]# service  iscsid restart
Stopping iscsid:
Starting iscsid:                                           [  OK  ]
[root@node1 ~]#  iscsiadm -m discovery -t st -p 172.18.8.254
172.18.8.254:3260,1 iqn.2014-02.com.example:server.myiscsi
[root@node1 ~]# service  iscsid stop
Stopping iscsid:
[root@node1 ~]#                                            [  OK  ]
[root@node1 ~]#
[root@node1 ~]# service  iscsi stop
Stopping iscsi:                                            [  OK  ]
[root@node1 ~]#  iscsiadm -m discovery -t st -p 172.18.8.254
Starting iscsid:                                           [  OK  ]
172.18.8.254:3260,1 iqn.2014-02.com.example:server.myiscsi
[root@node1 ~]#

















阅读(5832) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~