一、iSCSI 简介
iSCSI 的全称是: Internet 小型计算机系统接口,是一个基于 TCP/IP 的协议,主要用于通过 IP 网络仿真 SCSI,从而为远程块存储设备提供数据传输和管理。说白了,就是通过网络由专门的服务器提供存储管理,以实现数据的远程储存,便于数据的集中管理,从而简化了数据复制、迁移和容灾。
但是出于性能的考虑,通过 iSCSI 进行的网络流量通常是未加密的,这就需要在应用服务器和存储服务器之前的布线和网络设备都是单独布线和单独使用,或者使用 VPN 进行网络数据传输。不要与其他网络进行混杂,以免造安全问题和成网络传输性能的损耗。
布线选择上,一般选用 10/40 Gb/s 以太网或者 8/10/16/20 Gb/s 光纤网络,以实现数据的高速传输。
二、常用的基本概念
名词 | 说明 |
---|---|
ACL | 访问权限控制列表,用来验证客户端启动器的访问,通常是客户端 iSCSI 启动器的 IQN 名称 |
IQN | 用于标识单个 iSCSI 目标和启动器的唯一名称(全部小写) |
WWN | 用于标识单个光纤通道端口和节点的唯一编号 |
TARGET | iSCSI 服务器上的存储资源 |
LUN | iSCSI 服务器上的块设备 |
initiator(启动器) | 以软件或硬件实施的 iSCSI 客户端 |
NODE | 单个 iSCSI 启动器或者目标 |
TPG | 启动器或者目标上的单个 IP 连接地址 |
Portal | 网络接口及端口 |
IQN 的格式为:
iqn.年份-月份.com|cn|net|org.域名:自定义标识
,如:iqn.2018-05.com.test:desktop
;其中的字母均应为小写,即使输入时包含大写,命令执行后,系统会自动转换成小写。
在 iSCSI 管理中,在根节点下有单独的 iscsi 项,其结构示例为:
o- iscsi ............................................... [Targets: 1] #iSCSI Target
| o- iqn.2018-05.com.example:server ..................... [TPGs: 1] #单个Target 显示为IQN
| o- tpg1 ................................ [no-gen-acls, no-auth] #TPG
| o- acls ........................................... [ACLs: 1] #ACL
| | o- iqn.2018-05.com.example.com:desktop ... [Mapped LUNs: 2] #启动器IQN
| | o- mapped_lun0 .................. [lun0 block/disk1 (rw)] #映射到启动器的Lun
| o- luns ........................................... [LUNs: 2] #LUN
| | o- lun0 ...... [block/disk1 (/dev/sdb1) (default_tg_pt_gp)] #已布署的Lun,其中的项目为 Backstore 中已添加的磁盘
| o- portals ..................................... [Portals: 1] #Portal
| o- 10.0.0.17:3260 .................................... [OK] #已布署的Portal
三、服务端的存储类型
可用于 iSCSI 的服务存储类型用四种:
类型 | 说明 |
---|---|
block | 块设备,磁盘驱动器、磁盘分区、逻辑卷、以及服务器上定义的任何 b 类型的设备文件 |
fileio | 在服务器上生成的一个指定大小的文件,类似于虚拟机中的虚拟磁盘 |
pscsi | 物理 SCSI,通常不使用 |
ramdisk | 内存盘,其中存储的数据在服务器重启后将全部丢失 |
以上四种类型在 iSCSI 管理中都归到 backstores 项下,其结构示例为:
o- backstores ............................................................... [...]
| o- block ................................................... [Storage Objects: 2]
| | o- disk1 ........................... [/dev/sdb1 (0 bytes) 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]
四、实验环境
- 准备二台虚拟机,系统安装
CentOS 7.5
; - 二台虚拟机的网卡设置为
桥接
; - 一台用做服务器: IP :
10.0.0.17
, 修改/etc/hostname
为Server
,另外添加一个虚拟磁盘用来布署 iSCSI; - 一台用做客户端: 修改
/etc/hostname
为Desktop
。 - 安装后使用命令
yum -y update
升级到最新; - 安装
epel
数据源yum -y install epel-release
五、实验目标
- 在服务端( Server )上创建一个新的 iSCSI Target。此 Target 的 IQN 为:
iqn.2018-05.com.test:server
- 服务端新创建的 Target 包含二个
1G
的磁盘分区做为 LUN - 服务端新创建的 Target仅应由
initiatorname
为iqn.2018-05.com.test:desktop
的客户端使用 - 在客户端发现关登录在服务端已创建好的 Target
- 在客户端新磁盘上创建
ext4
文件系统,并将其挂载到/iscsi1
/iscsi2
- 在实验结束后在客户端上卸载服务端的 iSCSI Target
- 在服务端上删除相关设置
六、服务端安装
(一)、在第二块硬盘上创建二个新的 1G 的分区作为 Backstore
[root@Server ~]# fdisk /dev/sdb
完成结果如下:
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6ab34c87
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
分区完成后,不需要进行格式化操作
强制更新磁盘分区:
[root@Server ~]# partprobe
(二)、安装 targetcli 软件包
[root@Server ~]# yum install -y targetcli
安装完成后设置target
服务开机启动,并启动服务:
[root@Server ~]# systemctl enable target
[root@Server ~]# systemctl start target
(三)、创建新的 iSCSI Target,添加已创建的磁盘分区作为 Backstore, 并且仅限于 initiname 为 iqn.2018-05.com.test:desktop 的客户端使用
1、进入 targetcli 管理界面并列出现有项目:
[root@Server ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell