zoukankan      html  css  js  c++  java
  • Linux iSCSI 磁盘共享管理

    Linux iSCSI 磁盘共享管理

      iSCSI 服务是通过服务端(target)与客户端(initiator)的形式来提供服务。iSCSI 服务端用于存放存储源的服务器,将磁盘空间共享给客户使用,客户端可以再不充气的情况下扩容磁盘空间。iSCSI 服务端通过已终端的形式配置存储共享过程,每一个目录的含义都不同,下面会详细讲到。iSCSI 协议是通过客户端名称进行验证的,也就是说,用户在访问存储共享资源时不需要输入密码,只要 iSCSI 客户端的名称与服务端中设置的访问控制列表中某一名称条目一致即可,因此需要在 iSCSI 服务端的配置文件中写入一串能够验证用户信息的名称。


    Linux iSCSI 结构介绍

    目录介绍

    • # iSCSI服务端存放本地共享设备的位置。
    • /backstores/block 
    • # SCSI服务端管理target。
    • /iscsi
    • # SCSI服务端共享资源设备加入到target。
    • /iscsi/target名称目录/tpg1/luns
    • SCSI服务端目录用于存放能够访问共享存储资源的客户端名称。
    • /iscsi/target名称目录/tpg1/acls
    • SCSI服务端目录用于指定客户端可被访问的监听IP地址及端口
    • /iscsi/target名称目录/tpg1/portals

    Linux iSCSI 服务端配置

    • 需求:共享服务端的 /dev/sdb4 设备
    • 版本:targetd-0.8.6
    • 版本:targetcli-2.1

    1、服务端安装iSCSI

    yum -y install targetd targetcli

    2、启动服务并设置开机自启动

    systemctl start targetd
    systemctl enable targetd

    3、进入iSCSI服务终端、ls查看目录、服务端终端命令: targetcli

    [root@linuxprobe ~]# targetcli
    Warning: Could not load preferences file /root/.targetcli/prefs.bin.
    targetcli shell version 2.1.fb34
    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
    View Code

    4、进入 /backstores/block 目录下、指定共享磁盘设备,命名磁盘设备

    # 进入指定目录下
    /> cd /backstores/block
    # 创建共享设备,命名为 “disk0” /backstores/block> create disk0 /dev/sdb4
    Created block storage object disk0 using /dev/sdb4.
    查看输出

    5、进入 /iscsi 目录下创建iSCSI target 名称

    # 进入指定目录
    cd /iscsi
    #
    创建新的 target 名称 /iscsi> create
    Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.a52e09c8e24f.
    Created TPG 1.
    Global pref auto_add_default_portal=true
    Created default portal listening on all IPs (0.0.0.0), port 3260.
    输出

    6、进入 /iscsi/target名称目录/tpg1/luns 目录下创建共享资源加入到target

    # 进入指定目录
    /iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d/tpg1/luns 
    # 创建共享设备到 target
    /iscsi/iqn.20...f2d/tpg1/luns> create /backstores/block/disk0 
    Created LUN 0.
    Created LUN 0->0 mapping in node ACL iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d:client
    输出

    7、进入 /iscsi/target名称目录/tpg1/acls 设置访问控制,创建存入客户端可访问名称

    # 进入指定目录
    /iscsi/iqn.20...f2d/tpg1/luns> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d/tpg1/acls/
    # 创建存入客户端可访问名称
    /iscsi/iqn.20...f2d/tpg1/acls> create iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d:xsk
    Created Node ACL for iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d:xsk
    Created mapped LUN 0.
    输出

    8、进入 /iscsi/target名称目录/tpg1/portals 设置服务端共享设备的网卡IP地址及端口

    # 进入指定目录
    /iscsi/iqn.20...f2d/tpg1/acls> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d/tpg1/portals/
    # 添加IP及端口、端口可以不填默认3260
    /iscsi/iqn.20.../tpg1/portals> create 192.168.1.17 3260
    报错:Could not create NetworkPortal in configFS
    
    # 报错可以删除 0.0.0.0
    delete 0.0.0.0 3260
    
    注:继续添加IP即可
    报错

    9、保存退出并重启服务

    # 保存设置
    /> saveconfig
    #
    退出 /> exit # 重启服务 systemctl restart targetd
    firewall-cmd --permanent --add-port=3260/tcp
    firewall-cmd --reload
    开放防火墙

    其他操作

    # 该 tgp 关闭账号验证
    /iscsi/../tpg1> set attribute authentication=0
    关闭账号验证
    # 该 tgp 使用自定义ad实现节点访问限制
    /iscsi/.../tpg1> set attribute generate_node_acls=0
    使用自定义ad实现节点访问限制

    Linux iSCSI 客户端配置

    • 需求:使用服务端共享设备并挂载使用
    • 版本:iscsi-initiator-utils-6.2.0.874
    • 版本:iscsi-initiator-utils-iscsiuio-6.2.0.874

    1、安装iscsi客户端

    yum install iscsi-initiator-utils

    2、将服务端访问控制表中的共享名称加入到客户端配置文件

    vim /etc/iscsi/initiatorname.iscsi

    iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d:xsk

    3、启动iscsi客户端并设置开机自启

    systemctl restart iscsid
    systemctl enable iscsid

    4、通过 iscsiadm 工具扫描发现 服务端共享的存储设备

    # 其中,-m discovery 参数的目的是扫描并发现可用的存储资源,-t st 参数为执行扫描操作的类型,-p 192.168.10.17 数为 iSCSI 服务端的IP 地址
    iscsiadm -m discovery -t st -p 192.168.1.17
    192.168.1.17:3260,1 iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d
    输出

    5、登录 iSCSI 指定共享服务端

    # 其中,-m node 参数为将客户端所在主机作为一台节点服务器,-T iqn.20.... 参为要使用的存储资源,-p 192.168.10.17 参数依然为对方iSCSI 服务端的 IP 地址。最后使用--login 或-l 参数进行登录验证。
    iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d -p 192.168.1.17 --login
    Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d, portal: 192.168.1.17,3260] (multiple)
    Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d, portal: 192.168.1.17,3260] successful.
    输出

    6、查看共享到客户端的磁盘设备

    # 已共享到客户端本地
    命令:file /dev/sdb
    输出:/dev/sdb: block special

    7、格式化共享设备

    # 格式化格式为xfs
    mkfs.xfs /dev/sdb

    8、临时挂载设备

    # 创建挂载目录
    mkdir /iscsi
    # 临时挂载设备
    mount /dev/sdb /iscsi

    9、永久挂载共享设备

    vim /etc/fstab

    UUID=eb9cbf2f-fce8-413a-b770-8b0f243e8ad6 /iscsi xfs defaults,_netdev 0 0
    命令:blkid | grep /dev/sdb
    输出:/dev/sdb: UUID="eb9cbf2f-fce8-413a-b770-8b0f243e8ad6" TYPE="xfs"
    查看设备UUID

    注:_netdev 参数含义为在有网络传输时使用。

    10、删除iSCSI共享资源

    # 其中,-u 参数将其设备卸载
    iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d -u

  • 相关阅读:
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xb0 in position 279: illegal multibyte sequence
    fish-redux快速创建文件夹模板 FishReduxTemplate
    一个很好的banner组件
    Class类的特性(上)
    兼容安卓和ios实现一键复制内容到剪切板
    React组件,React和生命周期
    vue数据双向绑定原理
    javascript的Object对象的defineProperty和defineProperties
    javascript 判断数据类型
    原生http模块与使用express框架对比
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/10876534.html
Copyright © 2011-2022 走看看