系列文章:
在《linux软riad配置详解》中讲解了如何在Linux中配置软raid,本文中我们将讲解如何让这个raid5可被客户端通过ISCSI服务访问。
实验平台:
Server端: Manjaro 内核4.9.214
Client端: Ubuntu18 内核 5.3.40
当然了,这里强烈推荐Server和Client端都是用CentOs,个人是因为笔记本已经装了Manjaro和Ubuntu不方便更换,所以就将就使用了。
0. 基础知识
iSCSI 的全称是: Internet 小型计算机系统接口,是一个基于 TCP/IP 的协议,主要用于通过 IP 网络仿真 SCSI,从而为远程块存储设备提供数据传输和管理。说白了,就是通过网络由专门的服务器提供存储管理,以实现数据的远程储存,便于数据的集中管理,从而简化了数据复制、迁移和容灾。
常用的基本概念
名词 | 解释 |
---|---|
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;其中的字母均应为小写,即使输入时包含大写,命令执行后,系统会自动转换成小写。
1. Server配置
安装 iSCSI 服务端程序以及其配置命令工具
1 | yay -S targetd targetcli # 这里用了aur,其余平台按各自的包管理器即可 |
启动targtd服务,并将其添加到开机自启中。
1 | systemctl start targetd |
使用 targetcli 配置命令
targetcli 是用于管理 iSCSI 服务端存储资源的专用配置命令,它能够提供类似于 fdisk 命令的交互式配置功能,将 iSCSI 共享资源的配置内容抽象成“目录”的形式,我们只需将各类配置信息填入到相应的“目录”中即可。
这里的难点主要在于认识每个“参数目录”的作用。当把配置参数正确地填写到“目录”中后,iSCSI 服务端就可以提供共享资源服务了。
配置块设配资源池
/backstores/block 是 iSCSI服务端配置共享设备的位置。在 targetcli 交互命令环境下,使用 create 命令把上述所创建的 RAID 5 磁盘阵列 /dev/md.raid5 文件加入到配置共享设备的“资源池”中,并将该文件重新命名为 disk0。
额外补充,/backstores下的四个目录的含义:
目录 | 解释 |
---|---|
block | 块设备,磁盘驱动器、磁盘分区、逻辑卷、以及服务器上定义的任何 b 类型的设备文件 |
fileio | 在服务器上生成的一个指定大小的文件,类似于虚拟机中的虚拟磁盘 |
pscsi | 物理 SCSI,通常不使用 |
ramdisk | 内存盘,其中存储的数据在服务器重启后将全部丢失 |
具体操作:
切换到root用户,执行targetcli命令,进入targetcli管理界面,help命令可显示帮助
1 | cd /backstores/block |
创建IQN:
1 | cd /iscsi/ |
设置ACL访问列表:
1 | cd /iscsi/iqn.2020-02.com.ravenxrz:server/tpg1/acls |
创建LUN:
1 | cd ../luns |
设置监听IP和端口:
如果默认可通过多个网卡访问的话,可以不修改(后文配置Multipath访问时,就可以采用默认的配置),否则:
1 | # 删除默认0.0.0.0 3260端口 |
最后,贴出完整配置:
退出,重启服务,更新配置
1 | exit |
设置防火墙,放行3260端口
如果是在个人的PC上的话,这一步应该没有。
1 | firewall-cmd --permanent --add-port=3260/tcp |
2. Client端配置
安装initiator工具包:
- CenteOs:
yum install iscsi-initiator-utils
- Ubuntu:
apt install open-iscsi
修改initiatorname,这一步很重要,就是把Server中配置的acl名字复制下来,然后修改这个文件:
vim /etc/iscsi/initiatorname.iscsi
修改后重启iscsid服务:
1 | sudo systemctl restart iscsid |
我这里是2020-02,上文中配的是2020-03,因为我之前已经配置过了,所以没有修改,如果你一直按照之前的教程配置到这里的话,把2020-02替换为2020-03才行。
查找iSCSItargets主机的targetname
1 | iscsiadm --mode discovery --type sendtargets --portal 192.168.18.130 # 替换ip |
登录iscsi
1 | iscsiadm --mode node --targetname iqn.2020-03.com.ravenxrz:server --portal 192.168.18.130:3260 --login |
如果是widnows端登录的话,将会非常简单,这里不作介绍,可参考这篇文章的末尾介绍。 https://www.jianshu.com/p/648b8be1499f
3. 验证及使用
1 | fdisk -l |
接下来可以分区,格式化,make文件系统,挂载等,就像和本地磁盘一样。
4. 退出及清除
Client端退出
取消挂在,然后退出:
1 | umount xxx |
Server清除所有配置
清楚配置和配置过程就是一个逆过程,分别删除portals、acls、luns、iSCSI Targets和后端存储即可。
5. 参考
使用 iSCSI 服务部署网络存储
Linux就该这么学 | 第17章 部署 iSCSI 网络存储