zoukankan      html  css  js  c++  java
  • Linux下iscsi的使用

    查看是否已安装了iscsi-initiator:
      
    [root@test ~]# rpm -qa |grep iscsi

    iscsi-initiator-utils-6.2.0.868-0.18.el5

    如果没有安装,则安装:

    yum install iscsi-initiator

    ++ iscsi initator的配置++
    iscsi initiator的配置文件主要是:

    /etc/ iscsi/iscsid.conf和/etc/iscsi/ initiatorname.iscsi。

    而/etc/iscsi/ initiatorname.iscsi里面只是一个iscsi的名字,一般保持默认就可以了。

    主要是配置/etc/ iscsi/iscsid.conf文件。

    一般应用中没有使用iSNS Server,所以iscsid.conf中的“iSNS settings”的内容不需要关注。
    1. node.startup = automatic是表示当iscsi initator启动时就会自动登陆到target。
    2. “CHAP Settings”主要是一些安全设置。
    3. “Timeouts”部分是我们重点关注的地方:
      node.session.timeo.replacement_timeout指网络出现问题,多长时间通知上层:

      node.session.timeo.replacement_timeout = 120 

      一般我们可以把这个时间改小,防止IO被hang太长时间,如:

      node.session.timeo.replacement_timeout = 3

      下面两个时间是sessison登录和登出Target的超时时间,也可以适当减少。

      node.conn[0].timeo.login_timeout = 15

      node.conn[0].timeo.logout_timeout = 15

      node.conn[0].timeo.noop_out_interval指发ping包的时间间隔,
      
      node.conn[0].timeo.noop_out_timeout为接收心跳包的超时时间

      node.conn[0].timeo.noop_out_interval = 5
      
      node.conn[0].timeo.noop_out_timeout = 5
      
      这两个时间根据需要减少,如:
      
      node.conn[0].timeo.noop_out_interval = 1
      
      node.conn[0].timeo.noop_out_timeout = 1
      
      node.session.initial_login_retry_max为登录的重试次数:
      
      node.session.initial_login_retry_max = 4
      
      可以适当减少到  2:
      
      node.session.initial_login_retry_max = 4

    ++ iscsi initator的使用++
    iscsi initator是做为一个系统服务在运行,启动iscsi initator的方法如下:

    service iscsi start

    iscsi initator主要通过iscsiadm命令管理,我们先查看提供服务的iscsi target机器上有哪些target:

    iscsiadm --mode discovery  --type sendtargets --portal 192.168.5.1

    然后就可以登陆某个target了,登陆成功某个target后,这个target下的硬盘也就都共享过来了:

    iscsiadm --mode node --targetname iqn.2008-10.com.dc9.storage.disk3.sys1.xyz --portal 192.168.5.1:3260 --login

    完成这些命令后,iscsi initator会把这些信息记录到/var/lib/iscsi目录下:

    /var/lib/iscsi/send_targets记录了各个target的情况,/var/lib/iscsi/nodes记录了各个target下的nodes情况。

    下次再启动iscsi initator时(service iscsi start),就会自动登陆各个target上。如果想让重新手工登陆各个target,需要把/var/lib/iscsi/send_targets目录下的内容和/var/lib/iscsi/nodes下的内容全部删除掉。

    要查看各个iscsi的信息:

    iscsiadm -m session -P 3

    [root@ctr_db3 nodes]# iscsiadm -m session -P 3iSCSI Transport Class version 1.1-646

    iscsiadm version 2.0-868

    Target: iqn.2001-04.com.data_node2:storage.23

            Current Portal: 192.168.173.129:3260,1

            Persistent Portal: 192.168.173.129:3260,1

            **********

            Interface:

            **********

            Iface Name: default

            Iface Transport: tcp

            Iface Initiatorname: unknown

            Iface IPaddress: default

            Iface HWaddress: default

            Iface Netdev: default

            SID: 0

            iSCSI Connection State: LOGGED IN

            iSCSI Session State: Unknown

            Internal iscsid Session State: NO CHANGE
    ++ iscsi initator的安装++
            ************************

            Negotiated iSCSI params:

            ************************

            HeaderDigest: None

            DataDigest: None

            MaxRecvDataSegmentLength: 131072

            MaxXmitDataSegmentLength: 8192

            FirstBurstLength: 65536

            MaxBurstLength: 262144

            ImmediateData: Yes

            InitialR2T: Yes

            MaxOutstandingR2T: 1

            ************************

            Attached SCSI devices:

            ************************

            Host Number: 1  State: running

            scsi1 Channel 00 Id 0 Lun: 1

            Attached scsi disk sde          State: running

    Target: iqn.2001-04.com.data_node1:storage.08

            Current Portal: 192.168.172.128:3260,1

            Persistent Portal: 192.168.172.128:3260,1

            **********

            Interface:

            **********

            Iface Name: default

            Iface Transport: tcp

            Iface Initiatorname: unknown

            Iface IPaddress: default

            Iface HWaddress: default

            Iface Netdev: default

            SID: 1

            iSCSI Connection State: LOGGED IN

            iSCSI Session State: Unknown

            Internal iscsid Session State: NO CHANGE

            ************************

            Negotiated iSCSI params:

            ************************

            HeaderDigest: None

            DataDigest: None

            MaxRecvDataSegmentLength: 131072

            MaxXmitDataSegmentLength: 8192

            FirstBurstLength: 65536

            MaxBurstLength: 262144

            ImmediateData: Yes

            InitialR2T: Yes

            MaxOutstandingR2T: 1

            ************************

            Attached SCSI devices:

            ************************

            Host Number: 2  State: running

            scsi2 Channel 00 Id 0 Lun: 1

            Attached scsi disk sdf          State: running


    + iscsi target的使用+
    ++ iscsi target的安装++
    可以从源码编译安装,从http://sourceforge.net/projects/iscsitarget/下载源码包iscsitarget-0.4.17.tar.gz:

    tar zxvf iscsitarget-0.4.17.tar.gz

    cd iscsitarget-0.4.17

    make

    make install

    如果想把 iscsi target 加入开机自动启动:

    chkconfig --add iscsi-target

    ++ iscsi target的管理++
    target端的配置文件主要为:/etc/ietd.conf文件,内容大致如下:

    Target iqn.2001-04.com.data_node1:storage.01

        Lun 1  Path=/dev/sda,Type=blockio,ScsiId=IETDSK-sda

    其中内容中的Target后面是Target的名称,一般名称为:iqn.<yyyy-mm>.com.<hostname>:<storarge_name>,

    其中<yyyy-mm>为年月,<hostname>为主机名,<<storarge_name>为存储的名称,可以随便起一个名字。

    Lun 1是指这个设备共享出去的Lun Id,同一个Target Lun Id不能重复。Type=blockio是指定使用blockio的方式,

    也可以使用fileio,如果使用了fileio,会使用操作系统的文件缓存,如果出现掉电,可能会丢数据。使用blockio则没有这个问题。

    IscsiId是这个Lun的名字,随便起一个名字就可以了。

    配置好/etc/ietd.conf文件后,就可以启动iscsi-target了:

    service iscsi-target start

    查看iscsi-target共享出去的硬盘:

    cat /proc/net/iet/volume

    查看客户端登陆到iscsi-target的情况:

    cat /proc/net/iet/session

    + 日常维护+
    ++ 在iscsi中增加新硬盘++
    +++ 如果能停止iscsi服务增加硬盘 +++
       1.在/etc/ietd.conf文件中增加新硬盘的配置;
       2.重新启动iscsi-target 服务:
         service iscsi-target restart
       3.在target增加的新硬盘在iscsi initator端不会被自动识别,需要到iscsi客户端机器上重新识别新加的新硬盘:
         iscsiadm -m discovery -t sendtargets -p 192.168.30.51 -l
    +++ 如果不能停止iscsi服务 +++
      1.先查看现有的iscsi target的tid是多少:

       cat /proc/net/iet/volume

        tid:19 name:iqn.2001-04.com.bops_pri:storage.19

            lun:0 state:0 iotype:blockio iomode:wt path:/dev/sds
        
        tid:18 name:iqn.2001-04.com.bops_pri:storage.18
            
            lun:0 state:0 iotype:blockio iomode:wt path:/dev/sdr

      2.使用ietadm命令动态增加硬盘:
       - 假设我们现在要往tid=19,target name是iqn.2001-04.com.bops_pri:storage.19增加硬盘/dev/sdv,
         
         则执行如下命令:
         
         ietadm --op new --tid=19 --lun=1  --params Type=blockio,Path=/dev/sdv
         
         然后再用cat /proc/net/iet/volume检查硬盘是否被加入到iscsi-target中。
       
       - 如果想把硬盘加到一个新建的target中,则需要先新建target,
         
         新建target执行如下命令:
         
         ietadm --op new --tid=20 --params Name=iqn.2001-04.com.bops_pri:storage.20
         
         命令中的tid是比以前的最大tid值大1的值。
         
         然后再把硬盘加到这个新建的target中:
         
         ietadm --op new --tid=20 --lun=0  --params Type=blockio,Path=/dev/sdv
         
         最后不要忘记在/etc/ietd.conf文件中增加新硬盘的配置。

       - 如果这些命令执行失败可以使用dmesg看其它输出的错误信息:
         
         #dmesg
         
         ....................
         
         ....................
         
         iscsi_trgt: ioctl(250) can't find the target 20
         
         iscsi_trgt: ioctl(250) can't find the target 20
         
         iscsi_trgt: iscsi_volume_del(163) 13 1
         
         iscsi_trgt: ioctl(250) can't find the target 20
         
         iscsi_trgt: ioctl(250) can't find the target 20
         
         iscsi_trgt: ioctl(250) can't find the target 20
         
         iscsi_trgt: ioctl(250) can't find the target 20


    ++ 让iscsi服务随机器启动而自动启动 ++

    方法:

    chkconfig --add iscsi-target

    chkconfig iscsi-target on


    chkconfig --add iscsi

    chkconfig iscsi on

  • 相关阅读:
    无法往u盘里边复制超过4G的单个文件解决方法
    vue 自定义属性判断点击每个item 显示隐藏
    前端小组分享会之异步回调函数中的上下文
    git 的一些命令
    ES学习之promise
    mac找到占用端口号的进程ID
    meta link
    webpack学习笔记--安装
    css样式之 direction
    日常积累之JSON.stringify和JSON.parse substr
  • 原文地址:https://www.cnblogs.com/zwl715/p/3638559.html
Copyright © 2011-2022 走看看