您的位置:首页 > 运维架构 > Linux

linux系统之iscsi存储服务

2017-12-12 11:12 726 查看

一.ISCSI概述

  iscsi是直接对设备进行共享的服务。
  SCSI(Internet SCSI) 支持从客户端 ( 发起端 ) 通过 IP 向远程服务器上的 iSCSI 存储设备 ( 目标 ) 发送 SCSI 命令。
  iSCSI限定名称用于确定发起端和目标 , 并采用 iqn.yyyy-mm.{reverse domain}:label 的格式
  默认情况下 , 网络通信是至 iSCSI 目标上的端口 3260/tcp 的明文端口。
  iSCSI发起端:需要访问原始SAN存储的客户端。
  iSCSI目标:从iSCSI服务器提供的远程硬盘磁盘,或“目标门户”
  iSCSI目标门户:通过网络向发起端提供目标的服务器。
  IQN:“iSCSI限定名称”。每个发起端和目标需要唯一名称进行标识,最好的做法是使用一个在Internet上可能独一无二的名称。

iscsi示意图:






使用场景:



二.配置iscsi


1.服务端
    yum install targetcli -y

    fdisk /dev/vdb
                ####创建分区+2G
    partprob    ####同步分区表

    targetcli
    ls
    /> /backstores/block create wrh:storage1 /dev/vdb1
    Created block storage object wrh:storage1 using /dev/vdb1.
    /> /iscsi create iqn.2017-12.com.example:storage1
                   ###iscsi节点名称格式:iqn-type
                   ###linux上格式:iqn.yyyy-mm.com.example:有意义的名称如主机名
    Created target iqn.2017-12.com.example:storage1.
    Created TPG 1.
    /> /iscsi/iqn.2017-12.com.example:storage1/tpg1/acls create iqn.2017-12.com.example:wrhkey
    Created Node ACL for iqn.2017-12.com.example:wrhkey
                     ###创建key文件
    /> /iscsi/iqn.2017-12.com.example:storage1/tpg1/luns create /backstores/block/wrh:storage1  
                      ###luns连接 共享名称和设备名称
    Created LUN 0.
    Created LUN 0->0 mapping in node ACL iqn.2017-12.com.example:wrhkey
    /> /iscsi/iqn.2017-12.com.example:storage1/tpg1/portals create 172.25.254.150
                     ###node节点
    Using default IP port 3260
    Created network portal 172.25.254.150:3260.
   ls
   exit

    ####火墙策略加端口
    firewall-cmd --permanent --add-port=3260/tcp
    firewall-cmd --reload

2.客户端
    yum search iscsi
    yum install iscsi-initiator-utils.x86_64
    systemctl start iscsi

    vim /etc/iscsi/initiatorname.iscsi
    #InitiatorName=iqn.2017-12.com.example:wrhkey  #复制在服务端建的key
    systemctl restart iscsi

    iscsiadm -m discovery -t st -p 172.25.254.150  #-m动作 -t类型 st
    iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.150 -l #-l登陆

    fdisk -l
    fdisk /dev/vdb
    partprobe
    mkfs.xfs /dev/vdb2
    mount /dev/vdb2 /mnt/
    df
    cd /mnt/
    touch textfile

测试:

三.开机自动挂载网络设备/dev/vdb2

   blkid
   /dev/vdb2: UUID="37e8b451-5840-49ab-8218-9d267dc398b3" TYPE="xfs"
   vim /etc/fstab
    #UUID="37e8b451-5840-49ab-8218-9d267dc398b3" /mnt  xfs defaults,_netdev 0 0

    #用id是为了避免使用设备名发生漂移,_netdev是开机先开网络而不是先读此文件内容
   #先poweroff然后再启动

 四.删除iscsi设备

 1.删除网络设备/dev/vdb2
  iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.150 -u
    #-u 退出登陆 暂时断开连接  
  iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.150 -o delete  
    #删除iscsi目标的本地记录,永久断开连接
  fdisk -l

  2.服务端:
  #删除共享设备
  targetcli
  /> clearconfig confirm=true

 

四.建立lvm设备(动态分配空间)

服务端:
    创建逻辑卷lvm

    
pvcreate /dev/vdb1   #共享一个lv
    vgcreate iscsi_vg /dev/vdb1  #共享一个vg
    vgdisplay           #查看vg中的所有数据

    lvcreate -l 511 -n iscsi_lv0 iscsi_vg
    lvs
   

targetcli       ###进入iscsi目标交互式配置模式
 /> /backstores/block create wrh:storage2 /dev/iscsi_vg/iscsi_lv0  
       #[code]##和逻辑卷建立联系,把/dev/vg0/iscsi_storage用server1storage表示

 /> /iscsi create iqn.2017-12.com.example:storage2       
       ##创建iqn服务的名称(每个发起端和目标需要唯一名称进行标识)
 /> /iscsi/iqn.2017-12.com.example:storage2/tpg1/acls create iqn.2017-12.com.example:key1
 /> /iscsi/iqn.2017-12.com.example:storage2/tpg1/luns create /backstores/block/wrh:storage2     
       ##加密(默认情况下,网络通信是至iSCSI目标上的端口3260/tcp的明文)
 /> iscsi/iqn.2017-12.com.example:storage2/tpg1/portals create 172.25.254.150
 /> exit
     firewall-cmd --list-all

   #客户端:
    systemctl restart iscsid.service
    systemctl restart iscsi
    iscsiadm -m discovery -t st -p 172.25.254.150
    iscsiadm -m node -T iqn.2017-12.com.example:storage2 -p 172.25.254.150 -l
    fdisk -l
#如果需要增大
   在服务端再增加一块lvm分区/dev/vdb2
   pvcreate /dev/vdb2
   vgextend iscsi_vg /dev/vdb2
   lvextend -L 1500M /dev/iscsi_vg/iscsi_lv0
   lvs

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: