ISCSI网络存储技术

简介

iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:

1 把原来只用于本机的SCSI协义透过TCP/IP网络发送,使连接距离可作无限的地域延伸;
2 连接的服务器数量无限(原来的SCSI-3的上限是15);
3 由于是服务器架构,因此也可以实现在线扩容以至动态部署。

作为对比:我们之前学习的共享出来的文件系统叫做nfs,现在共享出来的设备(磁盘)叫iscsi。

基本概念

名词说明
ACL访问权限控制列表,用来验证客户端启动器的访问,通常是客户端 iSCSI 启动器的 IQN 名称
IQN用于标识单个 iSCSI 目标和启动器的唯一名称(全部小写)
WWN用于标识单个光纤通道端口和节点的唯一编号
TARGETiSCSI 服务器上的存储资源
LUNiSCSI 服务器上的块设备
initiator(启动器)以软件或硬件实施的 iSCSI 客户端
NODE单个 iSCSI 启动器或者目标
TPG启动器或者目标上的单个 IP 连接地址
Portal网络接口及端口

注意:IQN 的格式为:iqn.年份-月份.com|cn|net|org.域名:自定义标识,如:iqn.2018-05.com.test:desktop;其中的字母均应为小写,即使输入时包含大写,命令执行后,系统会自动转换成小写。

服务端的存储类型

类型说明
block块设备,磁盘驱动器、磁盘分区、逻辑卷、以及服务器上定义的任何 b 类型的设备文件
fileio在服务器上生成的一个指定大小的文件,类似于虚拟机中的虚拟磁盘
pscsi物理 SCSI,通常不使用
ramdisk内存盘,其中存储的数据在服务器重启后将全部丢失

以上四种类型在 iSCSI 管理中都归到 backstores 项下,其结构示例为:

  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]

如何配置iscsi共享存储服务

在服务端:

  • 第一步:安装targetcli划分磁盘用于iscsi服务,并开启服务。
yum  install  targetcli -y
systemctl start target
  • 第二步:在磁盘划分设备用于共享
fdisk -l						##查看可以进行划分的设备
fdisk /dev/vdb					##在设备上面划分一个分区,划分一个500M的设备/dev/vdb1 准备将这个设备共享出去
partprobe						##同步分区表
targetcli 						##开始划分准备共享出去的设备
  • 第三步:创建新的 iSCSI Target,添加已创建的磁盘分区作为 Backstore, 并且仅限于 initiname 为 iqn.2018-05.com.test:desktop 的客户端使用。

1、进入 targetcli 管理界面并列出现有项目:

[root@server ~]# targetcli 
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]

2、添加已创建的二个磁盘分区到 Backstores 项下:

/> /backstores/block create westos:storage1 /dev/vdb1 
Created block storage object westos:storage1 using /dev/vdb1.

3、创建新的 Target:

/> /iscsi create iqn.2019-05.com.westos:storage1
Created target iqn.2019-05.com.westos:storage1.
Created TPG 1.

4、添加 Backstores 磁盘到 LUN 项下,用于将共享target与真实设备相关联

/> /iscsi/iqn.2019-05.com.westos:storage1/tpg1/luns create /backstores/block/westos:storage1 
Created LUN 0.

5、设置共享设备target密码:(访问权限控制列表,用来验证客户端启动器的访问)

/> /iscsi/iqn.2019-05.com.westos:storage1/tpg1/acls create iqn.2019-05.com.westos:key1
Created Node ACL for iqn.2019-05.com.westos:key1
Created mapped LUN 0.

6、添加本机 IP ,用于开启网络共享,默认开启的端口是:3260

/> /iscsi/iqn.2019-05.com.westos:storage1/tpg1/portals create 172.25.254.125
Using default IP port 3260
Created network portal 172.25.254.125:3260.

7、查看刚刚的所有设置,完成后退出:

/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 1]
  | | o- westos:storage1 ........... [/dev/vdb1 (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.2019-05.com.westos:storage1 ............................... [TPGs: 1]
  |   o- tpg1 ........................................... [no-gen-acls, no-auth]
  |     o- acls ...................................................... [ACLs: 1]
  |     | o- iqn.2019-05.com.westos:key1 ...................... [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ................... [lun0 block/westos:storage1 (rw)]
  |     o- luns ...................................................... [LUNs: 1]
  |     | o- lun0 .......................... [block/westos:storage1 (/dev/vdb1)]
  |     o- portals ................................................ [Portals: 1]
  |       o- 172.25.254.125: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

8、注意关闭火墙。
在客户端:

  • 第一步:安装使用共享磁盘的服务,才可以使用别人的磁盘,这里安装iscsi启动器
yum install iscsi-initiator-utils.x86_64 -y
systecmtl start iscsid.service
  • 第二步:查看服务端是否开启iscsi共享服务:
[root@client ~]# iscsiadm -m discovery -t st -p 172.25.254.125
172.25.254.125:3260,1 iqn.2019-05.com.westos:storage1

说明已经开启成功

  • 第三步:编辑配置文件 vim /etc/iscsi/initiatorname.iscsi
    写入刚刚设置的密码:InitiatorName=iqn.2019-05.com.westos:key1
  • 第四步:重启服务systecmtl restart iscsid.service
  • 第五步:登录iscsi共享服务
[root@client ~]# iscsiadm -m node -T iqn.2019-05.com.westos:storage1 -p 172.25.254.125 -l
Logging in to [iface: default, target: iqn.2019-05.com.westos:storage1, portal: 172.25.254.125,3260] (multiple)
Login to [iface: default, target: iqn.2019-05.com.westos:storage1, portal: 172.25.254.125,3260] successful.
  • 第六步:查看本地磁盘,可以看到/dev/sda 其实是服务器上面共享出来的/dev/vdb1
[root@client ~]# fdisk -l

Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00013f3e

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    20970332    10484142+  83  Linux

Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 524 MB, 524288000 bytes, 1024000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes

在这里插入图片描述

  • 第七步:此时可以在客户端使用该设备进行划分并挂载文件系统。
fdisk /dev/sda 				#对共享设备进行划分
mkfs.xfs /dev/sda1 			#格式化文件系统
mount /dev/sda1 /mnt/			#进行挂载设备,有可能挂载不上,因为autofs的影响
systemctl stop autofs.service			#关闭autofs服务
mount /dev/sda1 /mnt/			#重新挂载成功
df							##查看成功
  • 第八步:进入对应的挂载目录,就可以创建文件了
[root@client mnt]# ls
[root@client mnt]# touch iscsifile
[root@client mnt]# ls
iscsifile

在另一台客户端(真机)
既然是共享设备,那么我们肯定需要多台客户端可以对iscsi共享设备进行操作。我们想实现在另外的客户端,也可以看到共享设备里的文件。

  • 第一步: 修改配置文件vim /etc/iscsi/initiatorname.iscsi,写入acl认证密码:
InitiatorName=iqn.2019-05.com.westos:key1
  • 第二步:查看iscsi服务是否共享,并登录iscsi共享设备。
iscsiadm -m discovery -t st -p 172.25.254.125
iscsiadm -m node -T iqn.2019-05.com.westos:storage1 -p 172.25.254.125 -l
  • 第三步:查看设备列表fdisk -l,发现多了一个设备。并进行挂载mount /dev/sdd1 /mnt/
  • 第四步:进入对应的挂载目录,发现刚刚别的客户端共享的文件iscsifile。
[root@foundation2 ~]# cd /mnt/
[root@foundation2 mnt]# ls
iscsifile

客户端实现持久挂载

  • 第一步:查看 UUID (因为共享设备的名字会变,不稳定,因此用uuid)
[root@client mnt]# blkid 
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs" 
/dev/sr0: UUID="2016-10-19-18-32-06-00" LABEL="RHEL-7.3 Server.x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="6d296a81-2baa-4b65-8eb0-c159bd9a7fa4" TYPE="xfs"
  • 第二步:编辑配置文件vim /etc/fstab
UUID=6d296a81-2baa-4b65-8eb0-c159bd9a7fa4	 /mnt          xfs     defaults,_netdev       0 0
##_netdev(网络设备,启动网络才挂载,不然可能开不了机)
  • 第三步:reboot 重启,存在bug,可能需要强制关机再重启。
  • 第四步:df 查看 又可能受之前的autofs影响,所以可以关闭autofs,umount -a ,mount -a 成功。
[root@client ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       10473900 3223136   7250764  31% /
devtmpfs          927060       0    927060   0% /dev
tmpfs             942648      80    942568   1% /dev/shm
tmpfs             942648   17028    925620   2% /run
tmpfs             942648       0    942648   0% /sys/fs/cgroup
/dev/sda1          98988    5280     93708   6% /mnt

成功!

客户端卸载 iSCSI Target

出于种种目的,如:磁盘扩容、客户端不再使用 iSCSI 进行数据存储、客户端布署其他应用而不再使用原应用等等,就需要将已经挂载的 iSCSI Target 进行卸载,并出于信息安全的目的,删除已经保存的服务端的相关信息,这时就需要进行下面的操作。

  • 第一步:yum install tree 安装树形查看目录的软件
  • 第二步:tree /var/lib/iscsi/树形查看目录
[root@client mnt]# tree /var/lib/iscsi/
/var/lib/iscsi/
├── ifaces
├── isns
├── nodes
│   └── iqn.2019-05.com.westos:storage1
│       └── 172.25.254.125,3260,1
│           └── default
├── send_targets
│   └── 172.25.254.125,3260
│       ├── iqn.2019-05.com.westos:storage1,172.25.254.125,3260,1,default -> /var/lib/iscsi/nodes/iqn.2019-05.com.westos:storage1/172.25.254.125,3260,1
│       └── st_config
├── slp
└── static

10 directories, 2 files
  • 第三步:彻底删除相关信息
iscsiadm -m node -T iqn.2019-05.com.westos:storage1 -p 172.25.254.125 -u 
 ##取消登陆
Logging out of session [sid: 1, target: iqn.2019-05.com.westos:storage1, portal: 172.25.254.125,3260]
Logout of [sid: 1, target: iqn.2019-05.com.westos:storage1, portal: 172.25.254.125,3260] successful.

fdisk -l 		发现设备不见了
tree /var/lib/iscsi 	但信息依然在
systemctl restart iscsi  重启服务
fdisk -l 		设备又出现了


iscsiadm -m node -T iqn.2019-05.com.westos:storage1 -p 172.25.254.125 -o delete 
##彻底删除,否则重启服务,iscsi 会再次自动登陆设备 

服务端删除 iSCSI Target 及 Backstores

  • targetcli 进入iscsi,进行清除配置。
/> clearconfig
As a precaution, confirm=True needs to be set
/> clearconfig confirm=True
All configuration cleared
/> 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]
/> 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值