zoukankan      html  css  js  c++  java
  • HOWTO For iSCSI-SCST && Gentoo HOWTO For iSCSI-SCST

    前言:SCST是一个老版本的linux target实现了,现在基本已经被LIO取代
     
     
    这是一个非常快速的HOWTO,旨在提供有关如何设置和配置iSCSI-SCST的快速参考。有关更深入的信息,请参阅SCST和iSCSI-SCST README文件。
     
     
    使用scstadmin安装和使用iSCSI-SCST
    ==============================================
     
    1.下载,构建和安装iSCSI-SCST。
     
    首先下载iSCSI-SCST源代码。您可以从以下URL下载已发布的版本:
     
     
    或者您可以通过在shell中运行以下命令来下载最新的开发版本:
     
     
    虽然SCST和iSCSI-SCST与未修补的Linux内核一样可以与其他开源iSCSI目标具有相同或更快的速度,但如果您想获得更好的性能,则需要修补和重建内核。根据内核版本选择补丁(下例中为2.6.38.x):
     
      cd /usr/src/kernels/linux-2.6.38.8
      patch -p1 <$ HOME / scst / iscsi-scst / kernel / patches / put_page_callback-2.6.38.patch
      make clean
     
    如果你的内核找不到put_page_callback,那么就不需要修补了,所以你可以跳过这个和下一个(内核重建和重启)步骤。
     
    接下来,构建并安装内核:
     
      make && make modules
      make modules_install && make install
     
    对于某些Linux发行版(例如Ubuntu),上述步骤不会重建初始RAM磁盘。确保在重新引导之前重新生成RAM磁盘。请查看随发行版提供的update-initrd,update-initramfs或mkinitrd命令的文档。
     
    现在重新启动系统,以便加载新构建的内核。
     
    一旦系统再次启动并运行,下一步就是构建并安装SCST,iSCSI-SCST和scstadmin。对于大多数发行版(包括RHEL 6),您可以通过从SCST目录运行以下命令来执行此操作:
     
      make 2release
      make scst scst_install iscsi iscsi_install scstadm scstadm_install
     
    使用RHEL 5或CentOS 5时,请改用以下命令:
     
      make 2release
      make enable_proc
      make scst scst_install iscsi iscsi_install scstadm scstadm_install
     
    iSCSI-SCST包括以下组件:
       *内核模块:iscsi-scst.ko scst.ko scst_vdisk.ko
       * iscsi-scstd - 守护进程
       *手册
       *删除位于 iscsi-scst/etc/obsolete下的配置文件,如果你想使用它们需要复制到/etc。在iSCSI-SCST 2.0中,建议使用scstadmin和SCST sysfs接口:
          * initiators.allow - 用于为目标分配特定的启动器
          * initiators.deny - 用于为目标分配特定的启动器
          * iscsi-scstd.conf - 目标及其属性列表
     
    2.设置/etc/scst.conf
     
    scst.conf配置文件由系统引导时由shell脚本/etc/init.d/scst通过scstadmin加载。target,device 和LUN配置在此文件中定义。
     
    通常,SCST及其组件(包括iSCSI-SCST)是内核模块,因此它们使用内核接口来配置sysfs。但是,直接使用sysfs接口很麻烦。 Scstadmin实用程序允许使用常规纯文本界面。您可以使用“scstadmin -config”将配置文件加载到SCST sysfs中,并使用“scstadmin -write_config”将当前运行的配置保存到scst.conf中。
    如果要直接使用SCST sysfs接口,请参见下面的第二部分。
     
    这是示例配置文件。将其复制到/etc/scst.conf中
     
    HANDLER vdisk_fileio {
        DEVICE disk01 {
            filename / dev / ram0
            nv_cache 1
        }
    DEVICE disk02 {
            filename / dev / ram1
            nv_cache 1
        }
    }
     
    TARGET_DRIVER iscsi {
        enabled 1
     
        TARGET iqn.2006-10.net.vlnb:tgt {
            LUN 0 disk01
            LUN 1 disk02
     
            enabled 1
        }
    }
     
    请注意,对于每个启动器,LUN 0必须存在,因此您无法在没有LUN 0的情况下创建目标和启动程序组。这是SCSI协议所必需的,并且还记录在SCST的README文件中。
     
    然后启动scst和iscsi-scst服务运行以下命令:
     
      /etc/init.d/scst start
     
    您现在应该拥有可用的iSCSI-SCST。如果以后需要更改scst.conf并重新加载它,可以直接运行scstadmin:
     
      scstadmin -config /etc/scst.conf
     
    或重新启动SCST:
     
      /etc/init.d/scst restart
     
    如果需要在重新引导时自动配置SCST,请执行以下步骤。
     
    3.在/etc/init.d中创建软链接
     
    这将使SCST在系统引导时自动启动。使用chkconfig或update-rc.d,具体取决于您使用的Linux发行版。对于Debian系统(如Ubuntu)的示例:
     
      update-rc.d scst默认值
     
    在openSUSE上,您可以通过以下命令让SCST自动启动:
     
      insserv scst
     
    4.重新启动SCST和iSCSI-SCST
     
    如果您现在不想重新启动,可以通过以下命令使上述设置生效:
     
      /etc/init.d/scst restart
     
     
     
    不使用scstadmin via / sys接口安装和使用iSCSI-SCST
    ================================================== ========================
     
    Scstadmin 应该足够您做基础的操作。仅当您需要为scstadmin执行过于高级的操作时才使用这些步骤。例如,保持配置是数据库而不是普通文件。
     
    在iSCSI-SCST系统中,三个组件进行交互以将设备和文件系统导出到远程主机上的iSCSI启动器:Target,LUN和设备。 Target表示主机,并充当LUN的容器。 LUN(逻辑单元号)表示设备的地址,并为启动器提供访问控制,以及充当设备的容器。设备表示您希望提供给启动器的实际块设备或文件系统。您必须先创建目标,然后创建LUN,然后将LUN分配给目标,然后定义设备并将其分配给LUN。最后,您必须启用目标和SCST系统。完成步骤(如下)后,您应该能够从授权的远程启动器中查找和访问导出的设备。
     
    首先在第一部分重复步骤1,但在步骤1中从make命令中省略“scstadm scstadm_install”。
     
    接下来加载所需的内核模块,如下所示:
     
    modprobe scst_disk
    modprobe scst_vdisk
    modprobe iscsi-scst
     
    模块scst_disk允许以直通模式导出本地SCSI(SAS等)设备,scst_vdisk允许基于文件和块设备创建虚拟LUN,模块iscsi-scst是主要的iSCSI-SCST模块。
     
    然后运行iSCSI-SCST用户空间服务:iSCSI的scstd
     
     
    创建目标
    ----------------
     
    echo“add_target iqn.2007-05.com.example:storage.iscsi-scst-1”> / sys / kernel / scst_tgt / targets / iscsi / mgmt
     
    这将添加目标iqn.2007-05.com.example:storage.iscsi-scst-1。
     
     
    改变目标的参数
    ----------------------------
     
    echo“8192”> /sys/kernel/scst_tgt/targets/iscsi/iqn.2007-05.com.example:storage.iscsi-scst-1/MaxRecvDataSegmentLength
     
    这会将目标iqn.2007-05.com.example:storage.iscsi-scst-1的MaxRecvDataSegmentLength参数更改为8192。
     
    您可以通过以下方式阅读:
     
    #cat /sys/kernel/scst_tgt/targets/iscsi/iqn.2007-05.com.example:storage.iscsi-scst-1/MaxRecvDataSegmentLength
    8192
    [key]
     
    标记“[key]”显示高级管理工具,如scstadmin,该属性没有默认值。你可以忽略它。
     
     
    添加虚拟磁盘设备
    -----------------
     
    dd if = / dev / zero of = / disk1 bs = 1M count = 1024
     
    这将为我们未来的虚拟设备disk1创建后端文件/ disk1。
     
    echo“add_device disk1 filename = / disk1; nv_cache = 1”> / sys / kernel / scst_tgt / handlers / vdisk_fileio / mgmt
     
    这将添加新的FILEIO设备disk1,其中启用了后端文件/ disk1和NV_CACHE选项。
     
    对于块设备,通常使用BLOCKIO处理程序更有效:
     
    echo“add_device dev1 filename = / dev / dev1”> / sys / kernel / scst_tgt / handlers / vdisk_blockio / mgmt
     
     
    列出当前注册的SCST设备
    -----------------------------------------
     
    您可以看到可用设备列表:
    # ls -1 /sys/kernel/scst_tgt/devices
    0:0:0:0
    1:0:0:0
    3:0:0:0
    3:0:0:1
    3:0:0:2
    3:0:0:3
    3:0:0:4
    3:0:0:5
    3:0:0:6
    3:0:0:7
    2:0:0:0
    4:0:0:0
    4:0:0:5
    4:0:0:6
    4:0:0:7
    4:0:0:8
    4:0:0:9
    4:0:1:0
    4:0:1:1
    4:0:1:2
    4:0:1:3
    4:0:1:4
    5:0:0:0
    5:0:0:5
    5:0:0:6
    5:0:0:7
    5:0:0:8
    5:0:0:9
    5:0:1:0
    5:0:1:1
    5:0:1:2
    5:0:1:3
    5:0:1:4
    disk1
     
    定义LUN掩码
    --------------------
     
    LUN掩码定义了哪个启动器可以看到哪些LUN。
     
    要将特定LUN与目标iqn.2007-05.com.example:storage.iscsi-scst-1关联,请执行以下操作:
     
    echo“add 4:0:0:8 0”> /sys/kernel/scst_tgt/targets/iscsi/iqn.2007-05.com.example:storage.iscsi-scst-1/luns/mgmt
     
    这将为pass-through设备4:0:0:8分配LUN 0到目标iqn.2007-05.com.example:storage.iscsi-scst-1。
     
    请注意,每个组必须具有LUN 0。这是SCSI要求(在SCST的自述文件中有记录)。
     
    echo“add disk1 1 read_only = 1”> /sys/kernel/scst_tgt/targets/iscsi/iqn.2007-05.com.example:storage.iscsi-scst-1/luns/mgmt
     
    这会将虚拟设备disk1的只读LUN 1分配给目标iqn.2007-05.com.example:storage.iscsi-scst-1。
     
     
    从组中删除LUN
    ---------------------------
     
    运行以下命令:
     
    echo“del X”> /sys/kernel/scst_tgt/targets/iscsi/iqn.2007-05.com.example:storage.iscsi-scst-1/luns/mgmt
     
    这将从目标iqn.2007-05.com.example:storage.iscsi-scst-1中删除LUN X.
     
    有关LUN屏蔽的更多信息,请参阅SCST README,“访问和设备可见性管理(LUN屏蔽)”部分。
     
     
    启用目标
    ----------------
     
    创建并配置目标后,应启用它:
     
    echo 1> /sys/kernel/scst_tgt/targets/iscsi/iqn.2007-05.com.example:storage.iscsi-scst-1/enabled
     
    然后启用iSCSI-SCST驱动程序:
     
    echo 1> / sys / kernel / scst_tgt / targets / iscsi / enabled
     
     
    将目标分配给特定的启动器
    ----------------------------------------
     
    为了将目标分配给特定的启动器,您应该使用上面定义的LUN掩码。如果将启动器分配给目标的空安全组,则启动器将不会在SendTargets发现中看到此目标,并且将无法连接到该目标。
     
    此外,您可以使用allowed_portal sysfs属性仅通过选定的门户网站使目标可见。阅读iSCSI-SCST的README文件,了解有关此工具的更多详细信息。
     
     
    不使用scstadmin via / proc接口安装和使用iSCSI-SCST
    ================================================== =========================
     
    首先重复上一节中的步骤1和2,但在步骤1中从make命令中省略“scstadm scstadm_install”。
     
    接下来设置/etc/iscsi-scstd.conf
     
    你可以这样做,例如运行以下shell命令:
     
      echo“Target $(sed -n's / InitiatorName = // p'/etc/iscsi/initiatorname.iscsi):storage”> /etc/iscsi-scstd.conf
      cat /etc/iscsi-scstd.conf
     
    接下来加载scst_disk内核模块,如下所示:
     
      modprobe scst_disk
     
    shell脚本/etc/init.d/iscsi-scst现在可用于启动/停止/重新启动或检查iSCSI-SCST的状态。
     
     
    选择SCST使用的设备
    ------------------------------------
     
    您可以看到可用设备列表:
    # cat /proc/scsi_tgt/scsi_tgt
    Device (host:ch:id:lun or name) Device handler
    0:0:0:0 dev_disk
    1:0:0:0 dev_disk
    3:0:0:0 dev_disk
    3:0:0:1 dev_disk
    3:0:0:2 dev_disk
    3:0:0:3 dev_disk
    3:0:0:4 dev_disk
    3:0:0:5 dev_disk
    3:0:0:6 dev_disk
    3:0:0:7 dev_disk
    2:0:0:0 none
    4:0:0:0 none
    4:0:0:5 dev_disk
    4:0:0:6 dev_disk
    4:0:0:7 dev_disk
    4:0:0:8 dev_disk
    4:0:0:9 dev_disk
    4:0:1:0 dev_disk
    4:0:1:1 dev_disk
    4:0:1:2 dev_disk
    4:0:1:3 dev_disk
    4:0:1:4 dev_disk
    5:0:0:0 none
    5:0:0:5 dev_disk
    5:0:0:6 dev_disk
    5:0:0:7 dev_disk
    5:0:0:8 dev_disk
    5:0:0:9 dev_disk
    5:0:1:0 dev_disk
    5:0:1:1 dev_disk
    5:0:1:2 dev_disk
    5:0:1:3 dev_disk
    5:0:1:4 dev_disk
     
    LUN屏蔽
    -----------
     
    SCST定义安全组。对于每个组,您可以添加LUN。
     
    如果要将所有LUN都可用于所有目标,只需将它们添加到“默认”组:
     
    # echo "add 5:0:0:8 0" >/proc/scsi_tgt/groups/Default/devices
    # cat /proc/scsi_tgt/groups/Default/devices
    Device (host:ch:id:lun or name)     Virtual lun Options
    5:0:0:8                                              0
     
    现在,LUN“5:0:0:8”被添加到“默认”组作为LUN#0。
     
    请注意,您必须具有LUN 0.这是SCSI要求(在SCST的README中记录)。
     
     
    定义LUN掩码
    --------------------
     
    要将特定LUN与特定目标关联,请执行以下操作:
     
       *为目标创建一个组:
     
    echo“add_group Default_iqn.2007-05.com.example:storage.iscsi-scst-1”> / proc / scsi_tgt / scsi_tgt
     
       *将LUN添加到组:
     
    echo“add 4:0:0:8 0”> /proc/scsi_tgt/groups/Default_iqn.2007-05.com.example:storage.iscsi-scst-1/devices
     
    这会将LUN“4:0:0:8”分配给目标iqn.2007-05.com.example:storage.iscsi-scst-1。同样,每个组必须具有LUN 0。
     
     
    从组中删除LUN
    ---------------------------
     
    运行以下命令:
     
    echo“del 4:0:0:8 0”> /proc/scsi_tgt/groups/Default_iqn.2007-05.com.example:storage.iscsi-scst-1/devices
     
    这将从目标iqn.2007-05.com.example:storage.iscsi-scst-1中删除LUN“4:0:0:8”。
     
     
    删除组
    ----------------
     
    运行以下命令:
     
    echo“del_group Default_iqn.2007-05.com.example:storage.iscsi-scst-1”> / proc / scsi_tgt / scsi_tgt
     
    有关LUN屏蔽的更多信息,请参阅SCST README,“访问和设备可见性管理(LUN屏蔽)”部分。
     
     
    使用iscsi-scstd.conf创建目标
    ---------------------------------------
     
    创建目标的最简单方法是在/etc/iscsi-scstd.conf中定义它们。可以在etc/ iscsi-scstd.conf中找到一个示例。在启动iSCSI-SCST之前,您需要在/ etc /下使用此文件。
     
     
    将目标分配给特定的启动器
    ----------------------------------------
     
    为了将目标分配给特定的启动器,您需要使用/etc/initiators.allow和/etc/initiators.deny。您可以在etc / initiators.allow和etc / initiators.deny中找到示例文件。
     
    请注意,默认情况下所有目标都允许使用所有目标,因此如果要使用/etc/initiators.allow,则需要使用/etc/initiators.deny,如下所示:
     
    ALL ALL
     
    这将拒绝所有启动器对/etc/initiators.allow中定义的启动器的期望。
     
    iscsi-scst-adm的有用示例:
     
    显示特定目标:
     
    # iscsi-scst-adm --op show --tid=1
    QueuedCommands=0
     
    显示特定目标的已配置参数:
     
    # iscsi-scst-adm --op show --tid=1 --sid=0
    InitialR2T=No
    ImmediateData=Yes
    MaxConnections=1
    MaxRecvDataSegmentLength=2097152
    MaxXmitDataSegmentLength=131072
    MaxBurstLength=2097152
    FirstBurstLength=262144
    DefaultTime2Wait=2
    DefaultTime2Retain=0
    MaxOutstandingR2T=1
    DataPDUInOrder=Yes
    DataSequenceInOrder=Yes
    ErrorRecoveryLevel=0
    HeaderDigest=None
    DataDigest=None
    OFMarker=No
    IFMarker=No
    OFMarkInt=Reject
    IFMarkInt=Reject
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    c语言 malloc和free的实现
    gdb调试命令总结
    pycharm使用教程
    flask--relationship
    安装部署问题
    Flask的request.form和request.data有什么区别
    装饰器
    flask 权限
    flask--session
    数据库-触发器
  • 原文地址:https://www.cnblogs.com/luxiaodai/p/9851370.html
Copyright © 2011-2022 走看看