RHCE之iSCSI

本秂侑毒 提交于 2019-11-26 14:24:29
iSCSI:
 internet SCSI(iSCSI):iSCSI主要是通过TCP/IP 的技术,将存储设备通过iSCSI target(iSCSI标的)功能,做成可以提供磁盘的服务器端,再通过iSCSI initiator(iSCSI 初始化用户)功能,做成能够挂载使用iSCSI target的客户端,如此便能通过iSCSI协议来进行磁盘的应用了。

 iSCSI 是IETF制定的一项标准,它是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集和
 用于将SCSI数据块映射为以太网数据包,以此来实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择.

从根本上说,iSCSI是一种基于IP Storage理论的新型存储技术,该技术将广泛使用的SCSI接口技术与IP网络技术相结合,可以在IP
网络上构建SAN。简单的说,iSCSI就是在IP网络上运行SCSI协议的一种网络存储技术。

 iSCSI这个架构主要将存储设备与使用的主机分为俩个部分,分别是:

    iSCSI target:就是存储设备端,存放磁盘RAID的设备,目前也能够将Linux主机仿真成iSCSI target,目的在于提供其他主机使用的磁盘。

    iSCSI initiator:就是能够使用target的客户端,通常是服务器,想要连接到iSCSI target的服务器,也必须要安装iSCSI initiator的相关功能后才能使用iSCSI target提供的磁盘。

 iSCSI的优势:
    iSCSI沿用TCP/IP协议,而TCP/IP是在网络方面最通用、最成熟的协议,且IP网络的基础建非常完善,同时SCSI技术是被磁盘和磁带等设备
    广泛采用的存储标准,这俩点是iSCSI的建设费用和维护成本非常低廉。

    iSCSI支持一般的以太网交换机而不是特殊的光线通道交换机,从而减少了异构网络带来的风险。
    iSCSI是通过IP封包传输存储命令,因此可以在整个Internet上传输数据,没有距离的限制。

iSCSI target(iSCSI标的)设置:(也就是服务端)
    所需程序:RHEL7使用targetcli,targetd(RHEL6使用:scsi-target-utils(tgt) )

    启动targetcli
    systemctl start target

iSCSI target(iSCSI标的)的实际设置:
    iSCSI就是通过一个网络接口,将既有的磁盘共享出去。
    那么那些类型的磁盘可以共享呢,这包括:
        使用dd命令所建立的大型文件可供仿真为磁盘(无须预先格式化)
        使用单一分区(partition)共享为磁盘
        使用单一完整的磁盘(无须预先分区)
        使用磁盘整列共享(其实与单一磁盘相同方式)
        使用软件磁盘阵列(software RAID)共享成单一磁盘
        使用LVM的LV设备共享为磁盘

ISCSI服务端配置:

ISCSI配置范例:(使用硬盘做存储端)
iSCSI target(iSCSI标的)的配置:(服务器端ip:192.168.1.118)

    1.创建2个4GB的分区/dev/sdb1,/dev/sdb1 

    2. yum install target* -y 

    3. systemctl start target ; systemctl enable target

    targetcli是用于管理iSCSI服务端存储的资源的专用配置命令,它能够提供类似于fdsik命令的交互式配置功能,
    将iSCSI共享资源的配置内容抽象成"目录"的形式,我们只需将各类配置信息填入到相应的"目录"中既可。
    /backstores/block是iSCSI服务端配置共享设备的位置。

    4.进入target子系统:
        [root@localhost ~]# targetcli  
        Warning: Could not load preferences file /root/.targetcli/prefs.bin.
        targetcli shell version 2.1.fb37
        Copyright 2011-2013 by Datera, Inc and others.
        For help on commands, type 'help'.

        /> 

    5.  创建block1,block2,分别对应/dev/sdb1,/dev/sdb2

        [root@localhost ~]# targetcli
        Warning: Could not load preferences file /root/.targetcli/prefs.bin.
        targetcli shell version 2.1.fb37
        Copyright 2011-2013 by Datera, Inc and others.
        For help on commands, type 'help'.

        /> ls
        o- / ......................................................................................................................... [...]
          o- backstores .............................................................................................................. [...]
          | o- block .................................................................................................. [Storage Objects: 0]
          | o- fileio ................................................................................................. [Storage Objects: 0]
          | o- pscsi .................................................................................................. [Storage Objects: 0]
          | o- ramdisk ................................................................................................ [Storage Objects: 0]
          o- iscsi ............................................................................................................ [Targets: 0]
          o- loopback ......................................................................................................... [Targets: 0]
        /> /backstores/block create block1 /dev/sdb1
        Created block storage object block1 using /dev/sdb1.
        /> ls
        o- / ......................................................................................................................... [...]
          o- backstores .............................................................................................................. [...]
          | o- block .................................................................................................. [Storage Objects: 1]
          | | o- block1 ........................................................................ [/dev/sdb1 (3.7GiB) write-thru deactivated]
          | o- fileio ................................................................................................. [Storage Objects: 0]
          | o- pscsi .................................................................................................. [Storage Objects: 0]
          | o- ramdisk ................................................................................................ [Storage Objects: 0]
          o- iscsi ............................................................................................................ [Targets: 0]
          o- loopback ......................................................................................................... [Targets: 0]
        /> /backstores/block create block2 /dev/sdb2
        Created block storage object block2 using /dev/sdb2.
        /> ls
        o- / ......................................................................................................................... [...]
          o- backstores .............................................................................................................. [...]
          | o- block .................................................................................................. [Storage Objects: 2]
          | | o- block1 ........................................................................ [/dev/sdb1 (3.7GiB) write-thru deactivated]
          | | o- block2 ........................................................................ [/dev/sdb2 (3.7GiB) write-thru deactivated]
          | o- fileio ................................................................................................. [Storage Objects: 0]
          | o- pscsi .................................................................................................. [Storage Objects: 0]
          | o- ramdisk ................................................................................................ [Storage Objects: 0]
          o- iscsi ............................................................................................................ [Targets: 0]
          o- loopback ......................................................................................................... [Targets: 0]
        /> 

   6. 创建target iqn.2019-04.com.test.www:disk
        /> /iscsi create iqn.2019-04.com.test.www:disk
        Created target iqn.2019-04.com.test.www:disk.
        Created TPG 1.
        Global pref auto_add_default_portal=true
        Created default portal listening on all IPs (0.0.0.0), port 3260.
        /> 
        /> ls
        o- / ......................................................................................................................... [...]
          o- backstores .............................................................................................................. [...]
          | o- block .................................................................................................. [Storage Objects: 2]
          | | o- block1 ........................................................................ [/dev/sdb1 (3.7GiB) write-thru deactivated]
          | | o- block2 ........................................................................ [/dev/sdb2 (3.7GiB) write-thru deactivated]
          | o- fileio ................................................................................................. [Storage Objects: 0]
          | o- pscsi .................................................................................................. [Storage Objects: 0]
          | o- ramdisk ................................................................................................ [Storage Objects: 0]
          o- iscsi ............................................................................................................ [Targets: 1]
          | o- iqn.2019-04.com.test.www:disk ..................................................................................... [TPGs: 1]
          |   o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
          |     o- acls .......................................................................................................... [ACLs: 0]
          |     o- luns .......................................................................................................... [LUNs: 0]
          |     o- portals .................................................................................................... [Portals: 1]
          |       o- 0.0.0.0:3260 ..................................................................................................... [OK]
          o- loopback ......................................................................................................... [Targets: 0]
        /> 

    7.配置target iqn.2019-04.com.test.www:disk
    (iSCSI协议是通过客户端名称进行验证的,也就是说用户在访问存储共享资源时不需要输入密码,只要iSCSI客户端的名称与服务端中
    设置的访问控制列表中某一项名称条目既可,因此需要在iSCSI服务端的配置文件中写入一串能够验证用户信息的名称。acls参数目录用于存放能够访问iSCSI服务端共享存储资源的客户端名称)

    /> cd /iscsi/iqn.2019-04.com.test.www:disk/tpg1/
    /iscsi/iqn.20...www:disk/tpg1> ls
    o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
      o- acls ................................................................................................................ [ACLs: 0]
      o- luns ................................................................................................................ [LUNs: 0]
      o- portals .......................................................................................................... [Portals: 1]
        o- 0.0.0.0:3260 ........................................................................................................... [OK]
    /iscsi/iqn.20...www:disk/tpg1> acls/ create iqn.2019-04.com.test.www:xx  (创建acls)
    Created Node ACL for iqn.2019-04.com.test.www:xx
    /iscsi/iqn.20...www:disk/tpg1> ls
    o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
      o- acls ................................................................................................................ [ACLs: 1]
      | o- iqn.2019-04.com.test.www:xx ................................................................................ [Mapped LUNs: 0]
      o- luns ................................................................................................................ [LUNs: 0]
      o- portals .......................................................................................................... [Portals: 1]
        o- 0.0.0.0:3260 ........................................................................................................... [OK]
    /iscsi/iqn.20...www:disk/tpg1> 

    /iscsi/iqn.20...www:disk/tpg1> ls
    o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
      o- acls ................................................................................................................ [ACLs: 1]
      | o- iqn.2019-04.com.test.www:xx ................................................................................ [Mapped LUNs: 0]
      o- luns ................................................................................................................ [LUNs: 0]
      o- portals .......................................................................................................... [Portals: 1]
        o- 0.0.0.0:3260 ........................................................................................................... [OK]
    /iscsi/iqn.20...www:disk/tpg1> luns/ create /backstores/block/block1
    Created LUN 0.
    Created LUN 0->0 mapping in node ACL iqn.2019-04.com.test.www:xx
    /iscsi/iqn.20...www:disk/tpg1> luns/ create /backstores/block/block2       (使block与lun关联)
    Created LUN 1.
    Created LUN 1->1 mapping in node ACL iqn.2019-04.com.test.www:xx
    /iscsi/iqn.20...www:disk/tpg1> 

    /iscsi/iqn.20...www:disk/tpg1> ls
    o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
      o- acls ................................................................................................................ [ACLs: 1]
      | o- iqn.2019-04.com.test.www:xx ................................................................................ [Mapped LUNs: 2]
      |   o- mapped_lun0 ...................................................................................... [lun0 block/block1 (rw)]
      |   o- mapped_lun1 ...................................................................................... [lun1 block/block2 (rw)]
      o- luns ................................................................................................................ [LUNs: 2]
      | o- lun0 ............................................................................................. [block/block1 (/dev/sdb1)]
      | o- lun1 ............................................................................................. [block/block2 (/dev/sdb2)]
      o- portals .......................................................................................................... [Portals: 1]
        o- 0.0.0.0:3260 ........................................................................................................... [OK]

    /iscsi/iqn.20...www:disk/tpg1> ls
    o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
      o- acls ................................................................................................................ [ACLs: 1]
      | o- iqn.2019-04.com.test.www:xx ................................................................................ [Mapped LUNs: 2]
      |   o- mapped_lun0 ...................................................................................... [lun0 block/block1 (rw)]
      |   o- mapped_lun1 ...................................................................................... [lun1 block/block2 (rw)]
      o- luns ................................................................................................................ [LUNs: 2]
      | o- lun0 ............................................................................................. [block/block1 (/dev/sdb1)]
      | o- lun1 ............................................................................................. [block/block2 (/dev/sdb2)]
      o- portals .......................................................................................................... [Portals: 1]
        o- 0.0.0.0:3260 ........................................................................................................... [OK]
    /iscsi/iqn.20...www:disk/tpg1> portals/ delete 0.0.0.0 3260       (删除默认的监听地址)
    Deleted network portal 0.0.0.0:3260
    /iscsi/iqn.20...www:disk/tpg1> portals/ create 192.168.1.118 3260   (创建新的监听地址)
    Using default IP port 3260
    Created network portal 192.168.1.118:3260.
    /iscsi/iqn.20...www:disk/tpg1> ls
    o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
      o- acls ................................................................................................................ [ACLs: 1]
      | o- iqn.2019-04.com.test.www:xx ................................................................................ [Mapped LUNs: 2]
      |   o- mapped_lun0 ...................................................................................... [lun0 block/block1 (rw)]
      |   o- mapped_lun1 ...................................................................................... [lun1 block/block2 (rw)]
      o- luns ................................................................................................................ [LUNs: 2]
      | o- lun0 ............................................................................................. [block/block1 (/dev/sdb1)]
      | o- lun1 ............................................................................................. [block/block2 (/dev/sdb2)]
      o- portals .......................................................................................................... [Portals: 1]
        o- 192.168.1.118:3260 ..................................................................................................... [OK]
    /iscsi/iqn.20...www:disk/tpg1> 

    /iscsi/iqn.20...www:disk/tpg1> exit   (退出target子系统)
    Global pref auto_save_on_exit=true
    Last 10 configs saved in /etc/target/backup.
    Configuration saved to /etc/target/saveconfig.json    (刚才做到配置的保持位置,修改此配置文件的相关值,重启target服务后,既可修改target的配置)
    [root@localhost ~]# 

iSCSI initiator(客户端)配置:

    1.yum install iscsi* -y

    iscsiadm是用于管理,查询,插入,更新或删除iSCSI数据库配置文件的命令行工具,用户需要先使用这个工具
    扫描发现远程iSCSI服务端,然后查看找到的服务器上有哪些可用的共享存储资源。

    2.  发现操作
        [root@rhel002 ~]# iscsiadm -m discovery -t st -p 192.168.1.118
        192.168.1.118:3260,1 iqn.2019-04.com.test.www:xx                 #服务端iscsi ACLS名称
        [root@rhel002 ~]# 

            # -m discovery: 扫描并发现可用的存储资源
            # -t st参数为执行扫描操作的类型
            # -p xxx iSCSI服务端的IP地址

    3.编辑/etc/iscsi/initiatorname.iscsi 文件,修改InitiatorName值

    InitiatorName=iqn.2019-04.com.test.www:xx       #注意此处应该设置的值为ISCSI服务端的 acls值

    4.重启服务
        [root@rhel002 ~]# systemctl restart iscsid
        [root@rhel002 ~]# systemctl enable iscsid

    5.登录服务端:

    [root@rhel002 ~]# iscsiadm -m node -T iqn.2019-04.com.test.www:disk -p 192.168.1.118 -l
    Logging in to [iface: default, target: iqn.2019-04.com.test.www:disk, portal: 192.168.1.118,3260] (multiple)
    Login to [iface: default, target: iqn.2019-04.com.test.www:disk, portal: 192.168.1.118,3260] successful.
    [root@rhel002 ~]# 

            # -m node :将客户端所在主机作为一台节点服务器
            # -T xxxx :指定要使用的存储资源
            # -l:进行登录验证

    6.

    [root@rhel002 ~]# lsblk
    NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda             8:0    0   20G  0 disk 
    ├─sda1          8:1    0  500M  0 part /boot
    └─sda2          8:2    0 19.5G  0 part 
      ├─rhel-swap 253:0    0    2G  0 lvm  [SWAP]
      └─rhel-root 253:1    0 17.5G  0 lvm  /
    sdb             8:16   0  3.7G  0 disk 
    sdc             8:32   0  3.7G  0 disk 
    sr0            11:0    1  3.6G  0 rom  /mnt/cdrom
    [root@rhel002 ~]# 

    这里的sdb,sdc 就是服务端的分区,对应服务端的luno,lun1
    sdb,sdc可以当做本地的分区来使用,再对sdb,sdc进行分区格式化后,需要永久挂载时需注意,
    /etc/fstab中相应的配置行的挂载参数需写成defaults,_netdev,范例如下;

    /dev/sdb1              /mnt/netdisk   xfs          defaults,_netdev 0 0

    如缺少_netdev值,则重启时,系统将无法成功启动

    可以使用 lsscsi命令查看SCSI控制器设备的信息:

    [root@rhel002 ~]# lsscsi
    [2:0:0:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sda 
    [4:0:0:0]    cd/dvd  NECVMWar VMware SATA CD01 1.00  /dev/sr0 
    [34:0:0:0]   disk    LIO-ORG  block1           4.0   /dev/sdb 
    [34:0:0:1]   disk    LIO-ORG  block2           4.0   /dev/sdc 
    [root@rhel002 ~]# 

        iscsiadm -m session [-P #] 命令可以查看与服务端的连接属性,#取值范围为0-3,表示显示信息的详细程度,不带-P 选项的话默认为-P 0

    [root@rhel002 ~]# iscsiadm -m session 
    tcp: [2] 192.168.1.118:3260,1 iqn.2019-04.com.test.www:disk (non-flash)
    [root@rhel002 ~]# iscsiadm -m session -P 1
    Target: iqn.2019-04.com.test.www:disk (non-flash)
        Current Portal: 192.168.1.118:3260,1
        Persistent Portal: 192.168.1.118:3260,1
            **********
            Interface:
            **********
            Iface Name: default
            Iface Transport: tcp
            Iface Initiatorname: iqn.2019-04.com.test.www:xx
            Iface IPaddress: 192.168.1.117
            Iface HWaddress: <empty>
            Iface Netdev: <empty>
            SID: 2
            iSCSI Connection State: LOGGED IN
            iSCSI Session State: LOGGED_IN
            Internal iscsid Session State: NO CHANGE
    [root@rhel002 ~]# 

    7.如何临时断开与服务端的指定连接 :(重启客户端后还会连接)
        iscsiadm -m node -T iqn.2019-04.com.test.www:disk -p 192.168.1.118 -u

            # -u :卸载

        [root@rhel002 ~]# lsblk
        NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
        sda             8:0    0   20G  0 disk 
        ├─sda1          8:1    0  500M  0 part /boot
        └─sda2          8:2    0 19.5G  0 part 
          ├─rhel-swap 253:0    0    2G  0 lvm  [SWAP]
          └─rhel-root 253:1    0 17.5G  0 lvm  /
        sr0            11:0    1  3.6G  0 rom  /mnt/cdrom
        [root@rhel002 ~]# 

    8.删除与服务端的指定连接:(彻底与服务端断开连接,重启也不会再连接服务端)
        iscsiadm -m node -T iqn.2019-04.com.test.www:disk -p 192.168.1.118 -o delete

        (删除连接后如想再连接服务端,需先重新发现一下(iscsiadm -m discovery -t st -p 192.168.1.118),然后再重新登录服务端)

    9.如何断开与服务端的所有连接:
        iscsiadm -m node -u ALL 

    10.如何删除与服务端的所有连接:
        iscsiadm -m node -o delete
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!