• 使用 iSCSI 服务部署网络存储--centos7


    之前有过在vmware esxi上面部署iscsi共享存储并安装oracle RAC的文章:多台ESXI 6.5 添加 iSCSI 共享存储 --centos 7.4 作为target

    1 iSCSI 技术概述

    当前的硬盘接口类型主要有 IDE、 SCSI 和 SATA 这 3 种

    --IDE 是一种成熟稳定、价格便宜的并行传输接口。
    --SATA 是一种传输速度更快、数据校验更完整的串行传输接口。
    --SCSI 是一种用于计算机和硬盘、光驱等设备之间系统级接口的通用标准,具有系统资源占用率低、转速高、传输速度快等优点。
    iSCSI 优缺点:
    iSCSI 存储技术非常便捷,在访问存储资源的形式上发生了很大变化,摆脱了物理环境的限制,同时还可以把存储资源分给多个服
    务器共同使用,因此是一种非常推荐使用的存储技术。
    但是, iSCSI 存储技术受到了网速的制约。因此传输速率和稳定性是 iSCSI 技术的瓶颈。
    iSCSI-HBA 卡连接的则是 SCSI 接口或 FC(光纤通道)总线和内存,专门用于在主机之间交换存储数据,其使用的协议也与一般网卡有本质的不同。
    运行 Linux 系统的服务器会基于 iSCSI 协议把硬盘设备命令与数据打包成标准的 TCP/IP 数据包,
    然后通过以太网传输到目标存储设备,而当目标存储设备接收到这些数据包后,还需要基于
    iSCSI 协议把 TCP/IP 数据包解压成硬盘设备命令与数据。

    2 创建 RAID 磁盘阵列

    首先在虚拟机中添加 4 块新硬盘,用于创建 RAID 5 磁盘阵列和备份盘
    启动虚拟机系统,使用 mdadm 命令创建 RAID 磁盘阵列。
    新建虚拟机10.15.7.23,并添加4块磁盘20g

    [root@localhost ~]# hostnamectl set-hostname iscsi
    [root@localhost ~]# lsblk
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda               8:0    0   20G  0 disk 
    ├─sda1            8:1    0    1G  0 part /boot
    └─sda2            8:2    0   19G  0 part 
      ├─centos-root 253:0    0   17G  0 lvm  /
      └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
    sdb               8:16   0   20G  0 disk 
    sdc               8:32   0   20G  0 disk 
    sdd               8:48   0   20G  0 disk 
    sde               8:64   0   20G  0 disk 
    sr0              11:0    1 1024M  0 rom 
    [root@localhost ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
    mdadm: layout defaults to left-symmetric
    mdadm: layout defaults to left-symmetric
    mdadm: chunk size defaults to 512K
    mdadm: size set to 20955136K
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    -Cv:参数为创建阵列并显示过程
    /dev/md0:为生成的阵列组名称
    -n 3:参数为创建RAID 5 磁盘阵列所需的硬盘个数
    -l 5:参数为RAID磁盘阵列的级别
    -x 1:参数为磁盘阵列的备份盘个数
    [root@localhost ~]# mdadm -D /dev/md0
    /dev/md0:
               Version : 1.2
         Creation Time : Tue Sep 15 11:51:39 2020
            Raid Level : raid5
            Array Size : 41910272 (39.97 GiB 42.92 GB)
         Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
          Raid Devices : 3
         Total Devices : 4
           Persistence : Superblock is persistent
    
           Update Time : Tue Sep 15 11:53:23 2020
                 State : clean 
        Active Devices : 3
       Working Devices : 4
        Failed Devices : 0
         Spare Devices : 1
    
                Layout : left-symmetric
            Chunk Size : 512K
    
    Consistency Policy : resync
    
                  Name : iscsi:0  (local to host iscsi)
                  UUID : 2083794c:393f7540:b44c3392:8615679b #UUID 写入fstab
                Events : 18
    
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
           4       8       48        2      active sync   /dev/sdd
    
           3       8       64        -      spare   /dev/sde

    3 配置 iSCSI 服务端
    配置:

    10.15.7.23 iscsi_server centos 7.4
    10.15.7.22 iscsi_client centos 7.4

    iSCSI 技术在工作形式上分为服务端(target)与客户端(initiator)。
    iSCSI 服务端即用于存放硬盘存储资源的服务器,它作为前面创建的 RAID 磁盘阵列的存储端,能够为用户提供可用的存储资源。
    iSCSI 客户端则是用户使用的软件,用于访问远程服务端的存储资源。
    配置yum源

    cd /etc/yum.repos.d/
    mv CentOS-Base.repo CentOS-Base.repo.bk
    yum-config-manager --add-repo=http://10.15.1.199/repo
    yum clean all
    yum makecache
    yum repolist
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    1 yum安装

    [root@localhost ~]# yum -y install targetd targetcli
    [root@localhost ~]# systemctl start targetd
    [root@localhost ~]# systemctl enable targetd
    Created symlink from /etc/systemd/system/multi-user.target.wants/targetd.service to /usr/lib/systemd/system/targetd.service.

    2 配置iSCSI 服务端共享资源

    targetcli 是用于管理 iSCSI 服务端存储资源的专用配置命令,它能够提供类似于 fdisk 命令的交互式配置功能,将 iSCSI 共享资源的配置内容抽
    象成“目录”的形式,我们只需将各类配置信息填入到相应的“目录”中即可。
    把刚刚创建的 RAID 5 磁盘阵列 md0 文件加入到配置共享设备的“资源池”中,并将该文件重新命名为 disk0,

    [root@localhost ~]# targetcli
    Warning: Could not load preferences file /root/.targetcli/prefs.bin.
    targetcli shell version 2.1.fb46
    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]
    /> cd /backstores/block 
    /backstores/block> create disk0 /dev/md0
    Created block storage object disk0 using /dev/md0.
    /backstores/block> cd /
    /> ls
    o- / ......................................................................................................................... [...]
      o- backstores .............................................................................................................. [...]
      | o- block .................................................................................................. [Storage Objects: 1]
      | | o- disk0 ......................................................................... [/dev/md0 (40.0GiB) write-thru deactivated]
      | |   o- alua ................................................................................................... [ALUA Groups: 1]
      | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
      | o- fileio ................................................................................................. [Storage Objects: 0]
      | o- pscsi .................................................................................................. [Storage Objects: 0]
      | o- ramdisk ................................................................................................ [Storage Objects: 0]
      o- iscsi ............................................................................................................ [Targets: 0]
      o- loopback ......................................................................................................... [Targets: 0]
    /> 

    3 创建 iSCSI target 名称及配置共享资源。
    iSCSI target 名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串。
    系统在生成这个 target 名称后,还会在/iscsi 参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。
    我们需要把前面加入到 iSCSI 共享资源池中的硬盘设备添加到这个新目录中,这样用户在登录 iSCSI 服务端后,即可默认使用这
    硬盘设备提供的共享存储资源了。

    /> cd iscsi 
    /iscsi> create
    Created target iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1.
    Created TPG 1.
    Global pref auto_add_default_portal=true
    Created default portal listening on all IPs (0.0.0.0), port 3260.
    /iscsi> cd iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1/
    /iscsi/iqn.20....952b63747ff1> ls
    o- iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1 ............................................................... [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]
    /iscsi/iqn.20....952b63747ff1> cd tpg1/luns 
    /iscsi/iqn.20...ff1/tpg1/luns> create /backstores/block/disk0 
    Created LUN 0.

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

    /iscsi/iqn.20...ff1/tpg1/luns> cd ..
    /iscsi/iqn.20...63747ff1/tpg1> cd acls 
    /iscsi/iqn.20...ff1/tpg1/acls> create iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1:client
    Created Node ACL for iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1:client
    Created mapped LUN 0.

    5 设置 iSCSI 服务端的监听 IP 地址和端口号。
    位于生产环境中的服务器上可能有多块网卡,那么到底是由哪个网卡或 IP 地址对外提供共享存储资源呢?
    这就需要我们在配置文件中手动定义 iSCSI 服务端的信息,即在 portals 参数目录中写上服务器的 IP 地址。

    /iscsi/iqn.20...ff1/tpg1/acls> cd ..
    /iscsi/iqn.20...63747ff1/tpg1> cd portals/
    /iscsi/iqn.20.../tpg1/portals> create 10.15.7.23
    Using default IP port 3260
    Could not create NetworkPortal in configFS
    /iscsi/iqn.20.../tpg1/portals> create 10.15.7.24
    Using default IP port 3260
    Could not create NetworkPortal in configFS
    /iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
    Deleted network portal 0.0.0.0:3260
    /iscsi/iqn.20.../tpg1/portals> create 10.15.7.23
    Using default IP port 3260
    Created network portal 10.15.7.23:3260.

    6 配置妥当后检查配置信息,重启 iSCSI 服务端程序并配置防火墙策略。
    查看配置

    /iscsi/iqn.20.../tpg1/portals> ls /
    o- / ......................................................................................................................... [...]
      o- backstores .............................................................................................................. [...]
      | o- block .................................................................................................. [Storage Objects: 1]
      | | o- disk0 ........................................................................... [/dev/md0 (40.0GiB) write-thru activated]
      | |   o- alua ................................................................................................... [ALUA Groups: 1]
      | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
      | o- fileio ................................................................................................. [Storage Objects: 0]
      | o- pscsi .................................................................................................. [Storage Objects: 0]
      | o- ramdisk ................................................................................................ [Storage Objects: 0]
      o- iscsi ............................................................................................................ [Targets: 1]
      | o- iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1 ........................................................... [TPGs: 1]
      |   o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
      |     o- acls .......................................................................................................... [ACLs: 1]
      |     | o- iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1:client ....................................... [Mapped LUNs: 1]
      |     |   o- mapped_lun0 ................................................................................. [lun0 block/disk0 (rw)]
      |     o- luns .......................................................................................................... [LUNs: 1]
      |     | o- lun0 ...................................................................... [block/disk0 (/dev/md0) (default_tg_pt_gp)]
      |     o- portals .................................................................................................... [Portals: 1]
      |       o- 10.15.7.23:3260 .................................................................................................. [OK]
      o- loopback ......................................................................................................... [Targets: 0]
    /iscsi/iqn.20.../tpg1/portals> cd /
    /> saveconfig
    Configuration saved to /etc/target/saveconfig.json
    /> exit
    Global pref auto_save_on_exit=true
    Last 10 configs saved in /etc/target/backup/.
    Configuration saved to /etc/target/saveconfig.json
    [root@localhost ~]# systemctl restart targetd
    [root@localhost ~]# firewall-cmd --permanent --add-port=3260/tcp
    success
    [root@localhost ~]# firewall-cmd --reload
    success

     

     4 配置 Linux 客户端
    1 安装客户端

    [root@zabbix yum.repos.d]# yum install iscsi-initiator-utils -y
    [root@zabbix yum.repos.d]# vim /etc/iscsi/initiatorname.iscsi
    InitiatorName=iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1:client
    [root@zabbix yum.repos.d]# systemctl restart iscsid
    [root@zabbix yum.repos.d]# systemctl enable iscsid
    Created symlink from /etc/systemd/system/multi-user.target.wants/iscsid.service to /usr/lib/systemd/system/iscsid.service.
    [root@zabbix yum.repos.d]# lsblk
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda               8:0    0   40G  0 disk 
    ├─sda1            8:1    0    1G  0 part /boot
    └─sda2            8:2    0   39G  0 part 
      ├─centos-root 253:0    0   37G  0 lvm  /
      └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
    sr0              11:0    1  4.2G  0 rom  
    [root@zabbix yum.repos.d]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   37G   17G   21G  44% /
    devtmpfs                 897M     0  897M   0% /dev
    tmpfs                    912M     0  912M   0% /dev/shm
    tmpfs                    912M  9.0M  903M   1% /run
    tmpfs                    912M     0  912M   0% /sys/fs/cgroup
    /dev/sda1               1014M  179M  836M  18% /boot
    tmpfs                    183M   12K  183M   1% /run/user/42
    tmpfs                    183M     0  183M   0% /run/user/0

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

    -m discovery 参数的目的是扫描并发现可用的存储资源
    -t st 参数为执行扫描操作的类型
    -p 10.15.7.23 参数为 iSCSI 服务端的IP地址
    [root@zabbix yum.repos.d]# iscsiadm -m discovery -t st -p 10.15.7.23
    10.15.7.23:3260,1 iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1
    在使用 iscsiadm 命令发现了远程服务器上可用的存储资源后,接下来准备登录 iSCSI 服务端
    -m node 参数为将客户端所在主机作为一台节点服务器
    -T iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1 参数为要使用的存储资源
    -p 10.15.7.23 参数为 iSCSI 服务端的IP地址
    [root@zabbix yum.repos.d]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1 -p 10.15.7.23 --login
    Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1, portal: 10.15.7.23,3260] (multiple)
    Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1, portal: 10.15.7.23,3260] successful.
    登录成功之后,会在客户端主机上多出一个dev/sdb
    [root@zabbix yum.repos.d]# lsblk
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda               8:0    0   40G  0 disk 
    ├─sda1            8:1    0    1G  0 part /boot
    └─sda2            8:2    0   39G  0 part 
      ├─centos-root 253:0    0   37G  0 lvm  /
      └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
    sdb               8:16   0   40G  0 disk 
    sr0              11:0    1  4.2G  0 rom 
    [root@zabbix yum.repos.d]# file /dev/sdb
    /dev/sdb: block special
    [root@zabbix yum.repos.d]# mkfs.xfs /dev/sdb #没有分区,直接格式化
    meta-data=/dev/sdb               isize=512    agcount=16, agsize=654720 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=10475520, imaxpct=25
             =                       sunit=128    swidth=256 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=5120, version=2
             =                       sectsz=512   sunit=8 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@zabbix yum.repos.d]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   37G   17G   21G  44% /
    devtmpfs                 897M     0  897M   0% /dev
    tmpfs                    912M     0  912M   0% /dev/shm
    tmpfs                    912M  9.0M  903M   1% /run
    tmpfs                    912M     0  912M   0% /sys/fs/cgroup
    /dev/sda1               1014M  179M  836M  18% /boot
    tmpfs                    183M   12K  183M   1% /run/user/42
    tmpfs                    183M     0  183M   0% /run/user/0
    [root@zabbix yum.repos.d]# mkdir /data
    mkdir: cannot create directory ‘/data’: File exists
    [root@zabbix yum.repos.d]# mkdir /iscsi
    [root@zabbix yum.repos.d]# mount /dev/sdb /iscsi/
    [root@zabbix yum.repos.d]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   37G   17G   21G  44% /
    devtmpfs                 897M     0  897M   0% /dev
    tmpfs                    912M     0  912M   0% /dev/shm
    tmpfs                    912M  9.0M  903M   1% /run
    tmpfs                    912M     0  912M   0% /sys/fs/cgroup
    /dev/sda1               1014M  179M  836M  18% /boot
    tmpfs                    183M   12K  183M   1% /run/user/42
    tmpfs                    183M     0  183M   0% /run/user/0
    /dev/sdb                  40G   33M   40G   1% /iscsi
    [root@zabbix yum.repos.d]# blkid | grep /dev/sdb #只显示与/dev/sdb 设备相关的信息
    /dev/sdb: UUID="7b036d5d-6e9b-497a-bfc9-fa1388eee365" TYPE="xfs"/etc/fstab 配置文件中使用设备的 UUID 唯一标识符进行挂载
    [root@zabbix yum.repos.d]# vim /etc/fstab
    UUID=7b036d5d-6e9b-497a-bfc9-fa1388eee365 /iscsi xfs defaults,_netdev 0 0 
    由于/dev/sdb 是一块网络存储设备,而 iSCSI 协议是基于
    TCP/IP 网络传输数据的,因此必须在/etc/fstab 配置文件中添加上_netdev 参数,表示当系统联网后再进行挂载操作,以免系统开机时间过长或开机失败


    如果不使用iscsi共享设备,可以用 iscsiadm 命令的-u 参数将其设备卸载:
    # iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.952b63747ff1 -u

  • 相关阅读:
    小程序导出excel
    小程序搜索框加icon
    微信小程序全局传参 app传参
    长亭安服面经
    uni关于生成支付宝小程序问题
    Echarts图表使用
    js获取url路径斜杠分开
    git---更新gitignore文件,使之生效
    常见Cpu 100%的原因
    OFFICE 2019 INSTRUCTIONS
  • 原文地址:https://www.cnblogs.com/yhq1314/p/13674173.html
Copyright © 2020-2023  润新知