• iSCSI配置


     

    iSCSI介绍

    几种存储的架构:

    • 直接存取 (direct-attached storage):例如本机上面的磁盘,就是直接存取设备;
    • 透过储存局域网络 (SAN):来自网络内的其他储存设备提供的磁盘(block device)
    • 网络文件系统 (NAS):来自 NAS 提供的文件系统,只能直接使用,不可进行格式化(NFS/SMB等)。

    iSCSI架构将存储和使用主机分为两个部分:

    • iSCSI target:就是储存设备端,存放磁盘或 RAID 的设备,目前也能够将 Linux 主机仿真成 iSCSI target 了!目的在提供其他主机使用的『磁盘』
    • iSCSI initiator:就是能够使用 target 的客户端,通常是服务器。 也就是说,想要连接到 iSCSI target 的服务器,也必须要安装 iSCSI initiator 的相关功能后才能够使用 iSCSI target 提供的磁盘就是了。

    iSCSI target需要安装scsi-target-utils软件包,iSCSI initiator 需要安装iscsi-initiator-utils

    iSCSI软件及软件结构:

    • scsi-target-utils:用来将 Linux 系统仿真成为 iSCSI target 的功能;
    • iscsi-initiator-utils:挂载来自 target 的磁盘到 Linux 本机上。

    iSCSI Target的iqn:

    iSCSI 有一套自己分享 target 档名的定义,基本上,由 iSCSI 分享出来的 target 檔名都是以 iqn 为开头,意思是:『iSCSI Qualified Name (iSCSI 合格名称)』的意思

      iqn.yyyy-mm.<reversed domain name>:identifier

      iqn.年年-月.域名的反转写法  :这个分享的target名称

      iqn.2011-08.com.ccie:vbirddisk

    另外,就如同一般外接式储存装置 (target 名称) 可以具有多个磁盘一样,我们的 target 也能够拥有数个磁盘装置的。 每个在同一个 target 上头的磁盘我们可以将它定义为逻辑单位编号 (Logical Unit Number, LUN)。我们的 iSCSI initiator 就是跟 target 协调后才取得 LUN 的存取权就是了 。在鸟哥的这个简单案例中,最终的结果,我们会有一个 target ,在这个 target 当中可以使用三个 LUN 的磁盘。

    iSCSI Target

    1. iSCSI Target软件结构

    /etc/tgt/targets.conf

    主要配置文件,设定要分享的磁盘格式与哪几颗;

    /usr/sbin/tgt-admin

    在线查询、删除 target 等功能的设定工具;

    /usr/sbin/tgt-setup-lun

    建立 target 以及设定分享的磁盘与可使用的客户端等工具软件。

    /usr/sbin/tgtadm

    手动直接管理的管理员工具 (可使用配置文件取代);

    /usr/sbin/tgtd

    主要提供 iSCSI target 服务的主程序;

    /usr/sbin/tgtimg

    建置预计分享的映像文件装置的工具 (以映像文件仿真磁盘);

      可以通过target进行分享的类型:

    • dd创建的仿真磁盘(无需预先格式化)
    • partition
    • 完整的磁盘
    • software raid
    • LVM中LV

    2. 创建所需的磁盘装置

    #创建dd文件
    mkdir /srv/iscsi
    dd if=/dev/zero  of=/srv/iscsi/disk1.im bs=1M count=20
    chcon -Rv -t tgtd_var_lib_t /srv/iscsi/
     
    #创建/dev/sdb1,/dev/sdb2两个分区
     fdisk /dev/sdb
     
    #/dev/sdb2创建LVM分区
    pvcreate /dev/sdb2
    vgcreate server /dev/sdb2
    lvcreate -L 300M -n iscsi01 server
     
    lvscan 
      ACTIVE            '/dev/server/iscsi01' [300.00 MiB] inherit

    3.  修改tgt配置文件/etc/tgt/target.conf

     

    vi /etc/tgt/targets.conf
    <target iqn.2011-04.com.ccie:vdisk>
        backing-store     /srv/iscsi/disk1.img
        backing-store     /dev/sdb1
        backing-store    /dev/server/iscsi01
     
        initiator-address 192.168.0.0/24
        incominguser auth authpass
        write-cache off
    </target>
     
    # 此档案的语法如下:
    <target iqn.相关装置的target名称>
        backing-store    /你的/虚拟设备/完整檔名-1
        backing-store    /你的/虚拟设备/完整檔名-2
        initiator-address   允许访问的IP地址
        incominguser      用户名和密码    
    </target>

     

    • backing-store (虚拟的装置), direct-store (实际的装置): 设定装置时,如果你的整颗磁盘是全部被拿来当 iSCSI 分享之用,那么才能够使用 direct-store 。不过,根据网络上的其他文件, 似乎说明这个设定值有点危险的样子。所以,基本上还是建议单纯使用模拟的 backing-store 较佳
    • initiator-address (用户端地址): 如果你想要限制能够使用这个 target 的客户端来源,才需要填写这个设定值。基本上,不用设定它 (代表所有人都能使用的意思), 因为我们后来会使用 iptables 来规范可以联机的客户端
    • incominguser (用户账号密码设定): 如果除了来源 IP 的限制之外,你还想要让使用者输入账密才能使用你的 iSCSI target 的话,那么就加用这个设定项目。 此设定后面接两个参数,分别是账号与密码
    • write-cache [off|on] (是否使用快取): 在预设的情况下,tgtd 会使用快取来增快速度。不过,这样可能会有遗失数据的风险。所以,如果你的数据比较重要的话, 或许不要使用快取,直接存取装置会比较妥当一些。

     

    4. 启动target服务

    service tgtd start
    chkconfig tgtd on
    netstat -anptul | grep "tgtd"
    tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      2374/tgtd           
    tcp        0      0 :::3260                     :::*                        LISTEN      2374/tgtd 
     
    tgt-admin --show
    Target 1: iqn.2017-06.com.ccie:vdisk
        System information:
            Driver: iscsi
            State: ready
        I_T nexus information:
        LUN information:
            LUN: 0                           <== LUN号码
                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: rdrw
                Backing store path: /srv/iscsi/disk1.img
                Backing store flags: 
            LUN: 1
                Type: disk
                SCSI ID: IET     00010001
                SCSI SN: beaf11
                Size: 214 MB, Block size: 512
                Online: Yes
                Removable media: No
                Prevent removal: No
                Readonly: No
                Backing store type: rdwr
                Backing store path: /dev/sdb1
                Backing store flags: 
            LUN: 2
                Type: disk
                SCSI ID: IET     00010002
                SCSI SN: beaf12
                Size: 315 MB, Block size: 512
                Online: Yes
                Removable media: No
                Prevent removal: No
                Readonly: No
                Backing store type: rdwr
                Backing store path: /dev/server/iscsi01
                Backing store flags: 
        Account information:
            auth
        ACL information:
            192.168.0.0/24
     
    防火墙设置:
    iptables -A INPUT  -p tcp -s 192.168.0.0/24 --dport 3260 -j ACCEPT
     

    iSCSI  initiator配置

     

    1.     软件结构

    /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

    2.     修改配置文件(写入target登陆的账号密码)

    [root@clientlinux ~]# vim /etc/iscsi/iscsid.conf

    node.session.auth.username = auth                       <==在 target 时设定的

    node.session.auth.password = authpass                 <==约在 53, 54 行

    discovery.sendtargets.auth.username = auth        <==约在 67, 68 行

    discovery.sendtargets.auth.password = authpass

    chkconfig iscsid on

    chkconfig iscsi  on

    由于我们尚未与 target 联机,所以 iscsi 并无法让我们顺利启动的!因此上面只要 chkconfig 即可,不需要启动他。

    3.     侦测到target的相关数据

    #检测iSCSI target设备端的数据

    iscsiadm -m discovery -t sendtargets -p 192.168.0.5

    192.168.0.5:3260,1 iqn.2017-06.com.ccie:vdisk

    #显示被检测到的结果

    ls -l /var/lib/iscsi/nodes/

    total 4

    drw-------. 3 root root 4096 Jun 29 21:31 iqn.2017-06.com.ccie:vdisk

    [root@client1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.0.5

    iscsiadm: No portals found

    可能是target端配置地址限制。可以查看/etc/tgt/targets.conf中initiator-address配置

    现在我们知道了 target 的名称,同时将所有侦测到的信息通通写入到上述 /var/lib/iscsi/nodes/中,若信息有修订过的话,那你可以到这个档案内修改,也可以透过 iscsiadm 的 update 功能处理相关参数的。

    4.     开始联机target

    #显示系统上所有target信息:

    iscsiadm -m node

    192.168.0.5:3260,1 iqn.2017-06.com.ccie:vdisk

    #启动iscsi

    /etc/init.d/iscsi restart

    Logging in to [iface: default, target: iqn.2017-06.com.ccie:vdisk, portal: 192.168.0.5,3260] (multiple)

    Login to [iface: default, target: iqn.2017-06.com.ccie:vdisk, portal: 192.168.0.5,3260] successful.

    #也可以使用手工方式进行登陆:

    iscsiadm -m node -T iqn.2017-06.com.ccie:vdisk --login

    使用fdisk -l 可以查看到新增设备信息了。

    在服务器上可以使用tgt-admin --show查看到客户端的挂在信息。

    5.     更新/删除 target的方法

    当 iSCSI target 可能因为某些原因被拿走或其他原因你需要关闭iSCSI initiator时。但是,又不能全部关掉 (/etc/init.d/iscsi stop), 因为还有其他的 iSCSI target 在使用。这个时候该如何取消不要的 target 呢?

    [root@clientlinux ~]# iscsiadm -m node -T targetname --logout

    [root@clientlinux ~]# 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 信息。

    #查看现有target信息

    iscsiadm -m node

    192.168.0.5:3260,1 iqn.2017-06.com.ccie:vdisk

    #iscsiadm -m node -T iqn.2017-06.com.ccie:vdisk --logout

    Logging out of session [sid: 15, target: iqn.2017-06.com.ccie:vdisk, portal: 192.168.0.5,3260]

    Logout of [sid: 15, target: iqn.2017-06.com.ccie:vdisk, portal: 192.168.0.5,3260] successful.

    # 这个时候的 target 连结还是存在的,虽然注销你还是看的到!

    #删除target信息

    iscsiadm -m node -o delete -T iqn.2017-06.com.ccie:vdisk

    #再次查看,target信息被删除了

     iscsiadm -m node

    iscsiadm: No records found

    #重启iscsi服务

    /etc/init.d/iscsi restart

     

  • 相关阅读:
    hdu 2089 不要62(数位dp)
    hdu 3555 Bomb(数位dp)
    hdu 4544 湫湫系列故事——消灭兔子(优先队列)
    STL Algorithms 之 unique
    hdu 1075 What Are You Talking About(map)
    hdu 4268 Alice and Bob(贪心+multiset)
    hdu 4302 Holedox Eating(优先队列/线段树)
    9-16Jenkins-4节点
    9-16Jenkins-3可用的环境变量、参数化构建和依赖
    9-16Jenkins-2定时任务
  • 原文地址:https://www.cnblogs.com/onlybobby/p/7096613.html
Copyright © 2020-2023  润新知