1、环境介绍

SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议。从根本上说,iSCSI协议是一种利用IP网络来传输潜伏时间短的SCSI数据块的方法,ISCSI使用以太网协议传送SCSI命令、响应和数据。ISCSI可以用我们已经熟悉和每天都在使用的以太网来构建IP存储局域网。通过这种方法,ISCSI克服了直接连接存储的局限性,使我们可以跨不同服务器共享存储资源,并可以在不停机状态下扩充存储容量。

所需软件与软件结构

CentOS 将 tgt 的软件名称定义为 scsi-target-utils ,因此你得要使用 yum 去安装他才行。至于用来作为 initiator 的软件则是使用 linux-iscsi 的项目,该项目所提供的软件名称则为 iscsi-initiator-utils 。所以,总的来说,你需要的软件有:

scsi-target-utils:用来将 Linux 系统仿真成为 iSCSI target 的功能;

iscsi-initiator-utils:挂载来自 target 的磁盘到 Linux 本机上。

那么 scsi-target-utils 主要提供哪些档案呢?基本上有底下几个比较重要需要注意的:

/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:建置预计分享的映像文件装置的工具 (以映像文件仿真磁盘);

这次的实验结构



(sdx1、sdy1是物理的磁盘通过lun连接到target虚拟的共享块,在客户端挂载这个块。这里我们添加一块硬盘sdb,创建sdb1(400m)和sdb2(500m))


2、server端配置

添加一块磁盘后

复查一下

[root@100 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 59.5G 0 part
├─rhel-swap 253:0 0 2G 0 lvm [SWAP]
├─rhel-root 253:1 0 38.6G 0 lvm /
└─rhel-home 253:2 0 18.9G 0 lvm /home
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 400M 0 part
└─sdb2 8:18 0 500M 0 part
sr0 11:0 1 3.6G 0 rom /dvd

安装target并加入开机自启动

yum install -y target*

systemctl start target

systemctl enable target

配置target的ctl将sdb1和sdb2共享出去

(一)、block关联磁盘

[root@100 ~]# targetcli
targetcli shell version 2.1.fb37
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'. /> /backstores/block create block1 /dev/sdb
/dev/sdb /dev/sdb1 /dev/sdb2
...................................dev
/> /backstores/block create block1 /dev/sdb1
Created block storage object block1 using /dev/sdb1.
/> /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 (400.0MiB) write-thru deactivated]#新建的block
| | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]#新建的block
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 0]
o- loopback ..................................................... [Targets: 0]
/>

(二)、创建target

/> /iscsi create iqn.2018-10.20.com:disk
Created target iqn.2018-10.20.com: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 (400.0MiB) write-thru deactivated]
| | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 1] #这里是创建tartet的目录
| o- iqn.2018-10.20.com: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]

(三)、创建lun关联block和target

/> ls
o- / ..................................................................... [...]
o- backstores .......................................................... [...]
| o- block .............................................. [Storage Objects: 2]
| | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]
| | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 1]
| o- iqn.2018-10.20.com: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]
/> iscsi/iqn.2018-10.20.com:disk/tpg1/acls create iqn.2018-10.20.com:xx
Created Node ACL for iqn.2018-10.20.com:xx
/> ls
o- / ..................................................................... [...]
o- backstores .......................................................... [...]
| o- block .............................................. [Storage Objects: 2]
| | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]
| | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 1]
| o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]
| o- tpg1 ........................................... [no-gen-acls, no-auth]
| o- acls ...................................................... [ACLs: 1]
| | o- iqn.2018-10.20.com:xx ............................ [Mapped LUNs: 0]
| o- luns ...................................................... [LUNs: 0]
| o- portals ................................................ [Portals: 1]
| o- 0.0.0.0:3260 ................................................. [OK]
o- loopback ..................................................... [Targets: 0]
/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /
/backstores/block/block1 /lib/ /sbin/
/backstores/block/block2 /lib64/ /srv/
/bin/ /media/ /sys/
/boot/ /mnt/ /tmp/
/dev/ /opt/ /usr/
/dvd/ /proc/ /var/
/etc/ /root/
/home/ /run/
..................................................storage_object
/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block
/backstores/block/block1 /backstores/block/block2
..................................................storage_object
/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2018-10.20.com:xx
/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block2
Created LUN 1.
Created LUN 1->1 mapping in node ACL iqn.2018-10.20.com:xx
/> ls
o- / ..................................................................... [...]
o- backstores .......................................................... [...]
| o- block .............................................. [Storage Objects: 2]
| | o- block1 .................... [/dev/sdb1 (400.0MiB) write-thru activated]
| | o- block2 .................... [/dev/sdb2 (500.0MiB) write-thru activated]
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 1]
| o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]
| o- tpg1 ........................................... [no-gen-acls, no-auth]
| o- acls ...................................................... [ACLs: 1] #添加了一条认证
| | o- iqn.2018-10.20.com:xx ............................ [Mapped LUNs: 2]
| | o- mapped_lun0 ............................ [lun0 block/block1 (rw)] #关联lun
| | o- mapped_lun1 ............................ [lun1 block/block2 (rw)] #关联lun | 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]
o- loopback ..................................................... [Targets: 0]
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json

至此服务器端就配置完了,详细的配置可以到/etc/target/saveconfig.json修改


3、client端配置

(一)、安装iscsi*

软件包 iscsi-initiator-utils-6.2.0.873-29.el7.x86_64

软件包 iscsi-initiator-utils-iscsiuio-6.2.0.873-29.el7.x86_64

[root@200 ~]# yum install -y iscsi*

(二)、加入开机自启

[root@200 ~]# systemctl restart iscsid.service

[root@200 ~]# systemctl enable iscsid.service

(三)、做一个发现的操作,发现服务器共享的target名字是什么

[root@200 ~]# iscsiadm -m discovery -t st -p 192.168.137.100
192.168.137.100:3260,1 iqn.2018-10.20.com:disk
m模式mode-discovery, discoverydb.
t类型type must be sendtargets (or abbreviated as st), slp, isns or fw. Currently only sendtargets, fw, and iSNS is supported, see the DISCOVERY TYPES section.
p是IP:port

(四)、查看发现的条目

[root@200 ~]# iscsiadm -m discovery -p 192.168.137.100
# BEGIN RECORD 6.2.0.873-28
discovery.startup = manual
discovery.type = sendtargets #-t st
discovery.sendtargets.address = 192.168.137.100 #target服务端
discovery.sendtargets.port = 3260 #端口
discovery.sendtargets.auth.authmethod = None #认证没有
discovery.sendtargets.auth.username = <empty>
discovery.sendtargets.auth.password = <empty>
discovery.sendtargets.auth.username_in = <empty>
discovery.sendtargets.auth.password_in = <empty>
discovery.sendtargets.timeo.login_timeout = 15 #登录超时时间
discovery.sendtargets.use_discoveryd = No #没有使用这个发现
discovery.sendtargets.discoveryd_poll_inval = 30
discovery.sendtargets.reopen_max = 5
discovery.sendtargets.timeo.auth_timeout = 45
discovery.sendtargets.timeo.active_timeout = 30
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
# END RECORD

(五)、修改客户端的acl并登录

[root@200 ~]# iscsiadm -m node -T iqn.2018-10.20.com:disk -p 192.168.137.100 -l
Logging in to [iface: default, target: iqn.2018-10.20.com:disk, portal: 192.168.137.100,3260] (multiple)
Login to [iface: default, target: iqn.2018-10.20.com:disk, portal: 192.168.137.100,3260] successful.
[root@200 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 59.5G 0 part
├─rhel-swap 253:0 0 2G 0 lvm [SWAP]
├─rhel-root 253:1 0 38.6G 0 lvm /
└─rhel-home 253:2 0 18.9G 0 lvm /home
sdb 8:16 0 400M 0 disk
sdc 8:32 0 500M 0 disk
sr0 11:0 1 3.6G 0 rom /dvd
[root@200 ~]# cat /etc/iscsi/initiatorname.iscsi
#InitiatorName=iqn.1994-05.com.redhat:949f18f9ce84
InitiatorName=iqn.2018-10.20.com:xx ##刚才设置的acl条目

注:这个自动加载过来的磁盘重启之后是自动加载过来的


4、客户端挂载iscsi的盘

格式化sdb和sdc

[root@200 ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=256 agcount=8, agsize=12800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=102400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@200 ~]# mkfs.xfs /dev/sdc
meta-data=/dev/sdc isize=256 agcount=8, agsize=16000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

创建挂载点并挂载

[root@200 ~]# mkdir /sdb

[root@200 ~]# mkdir /sdc

注:如果需要实时同步的话需要使用gfs集群文件系统

[root@200 ~]# cat /etc/fstab |tail -n 4
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/cdrom /dvd iso9660 defaults 0 0
/dev/sdb /sdb xfs _netdev 0 0 #添加的条目
/dev/sdc /sdc xfs _netdev 0 0 #添加的条目
[root@200 ~]# # mount -a
[root@200 ~]# mount |tail -n 4
gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sdb on /sdb type xfs (rw,relatime,seclabel,attr2,inode64,noquota,_netdev)
/dev/sdc on /sdc type xfs (rw,relatime,seclabel,attr2,inode64,noquota,_netdev)
[root@200 ~]#

5、总结

(一)、增加iscsi存储

(1)发现iscsi存储:iscsiadm

-m discovery -t st -p ISCSI_IP

(2)查看iscsi发现记录:iscsiadm

-m node

(3)登录iscsi存储:iscsiadm

-m node -T LUN_NAME -p ISCSI_IP -l

(4)开机自动:

iscsiadm -m node –T LUN_NAME -p ISCSI_IP --op

update -n node.startup -v

automatic

(二)、删除iscsi存储

(1)登出iscsi存储

iscsiadm -m node -T LUN_NAME -p ISCSI_IP -u

(2)对出iscsi所有登录

iscsiadm -m node --logoutall=all

(3)删除iscsi发现记录:iscsiadm

-m node -o delete -T LUN_NAME -p ISCSI_IP

简书链接

iscsi共享存储的简单配置和应用的更多相关文章

  1. 实验:iscsi共享存储

    实验名称: iscsi共享存储 实验环境: 我们需要准备一个磁盘,对于这个磁盘我们需要使用,将这个磁盘空间共享给iscsi客户端: 实验需求: 我们这里使用两台服务器来实现iscsi共享存储: 1.指 ...

  2. Linux下搭建iSCSI共享存储详细步骤(服务器模拟IPSAN存储)

    一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够 ...

  3. Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式CentOS7-1810下实现

    iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...

  4. Linux下搭建iSCSI共享存储的方法 TGT 方式 CentOS6.9系统下

    iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...

  5. Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式 Debian9.5下实现

    iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...

  6. Linux下搭建iSCSI共享存储的方法 TGT 方式 Debian9.5系统下

    iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...

  7. Linux下搭建iSCSI共享存储

    转至:https://www.linuxidc.com/Linux/2016-09/135655.htm Linux下搭建iSCSI共享存储 拓扑: 实验步骤: ------------------- ...

  8. openfiler作为文件server,实现ISCSI共享存储

    还是不能发图.这是第二篇.图文在这个地址:http://download.csdn.net/detail/weimingyu945/8089893 1      登陆 首先登陆openfiler的we ...

  9. iSCSI 共享存储

         iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于 ...

随机推荐

  1. Qt之表单布局(QFormLayout)

    简述 QFormLayout管理输入型控件和关联的标签组成的那些Form表单. QFormLayout是一个方便的布局类,其中的控件以两列的形式被布局在表单中.左列包括标签,右列包含输入控件,例如:Q ...

  2. 上传canvas图片到服务器

    canvas绘图后用 canvasDom.toDataURL()可以得到png格式图片的base64 dataURI 然后用ajax post给后台  ,后端程序把开头的data:image/png; ...

  3. android 自己定义标签的使用,实现扁平化UI设计

    2014年8月6日11:06:44 android对自己定义标签的使用.实现扁平化UI设计: 1.attrs.xml文件里自己定义标签 如: <?xml version="1.0&qu ...

  4. Java基础学习补充 -- 异常处理和log4j日志

    Java中的异常处理 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. Java中所有异常的基类Throwable:Throwable又分为Error类和Excepti ...

  5. 并查集 (Union Find ) P - The Suspects

    Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...

  6. vue 父子组件传值:props和$emit

    <!--子组件页面--> <template> <div class="hello"> <!-- 添加一个input输入框 添加keypr ...

  7. notepad++调用python3中文乱码

    使用notepad++,配置好快捷键调用python3,一切就绪,仿佛就差代码了,结果一使用, 中文乱码,一直没有好的解决办法. 最后只能在代码中增加一行重写向输出解决,示例如下: #!/usr/bi ...

  8. ActiveMQ学习总结(8)——消息队列设计精要

    消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一. 当今市面上有很多主流的消息中间件,如老牌的Activ ...

  9. 设置UITableViewCell高度的问题

    有非常多时候.UITableViewCell每行的高度是不固定的,须要动态设置. UITableView有个代理方法, -(CGFloat)tableView:(UITableView *)table ...

  10. EChart报表插件使用笔记(1)

    报表插件Echart java类 package com.spring.controller; import java.io.IOException; import java.util.Arrays; ...