以下所使用的环境为:
虚拟化软件:VMware Workstation 17 Pro
麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64
一、网络存储结构
网络存储技术(Network Storage Technologies)是基于数据存储的一种通用术语。网络存储结构分为以下三种:
- DAS直连式存储:直接与主机系统相连接的存储设备(硬盘、光盘)
- NAS网络存储设备:直接与网络介质相连的特殊设备以实现数据存储(NFS、Samba、CIFS)
- SAN存储区域网络:存储设备相连企鹅与一台服务器或服务器群相连形成网络(FC-SAN、IP-SAN)
NAS和SAN的区别
- NAS使用TCP/IP传输数据;SAN使用SCSI或iSCSI协议传输数据
- NAS采用NFS和CIFS技术实现文件共享,基于操作系统的“文件级“读写操作
- SAN采用底层块协议,根据协议头的“块地址+偏移地址”,无需操作系统也可以正常识别
FC-SAN和IP-SNA的区别
- FC-SAN以光纤为介质构建存储网络,通过光纤通道协议转发scsi协议
- IP-SAN以IP网络构建存储网络,现对于FC-SAN更加经济实惠,通过TCP协议转发scsi协议
二、ISCSI存储概念
ISCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标志,它是一种基于IP Storage理论的新型存储技术,通过将SCSI接口和IP网络相结合,可以在IP网络上构建SAN存储区域网络。可以理解为:iSCSI=IP+SCSI。
ISCIS技术优势
- 将用于本机的SCSI通过TCP/IP网络传输,只要IP可达,可无视地域
- 连接的服务器数量不受限制(原有的SCSI-3最大连接数为15)
- 基于服务器架构,可以实现在线扩容
ISCSI Target
被用于存储数据的iscis磁盘或具有iscsi功能的设备都可以被称为“ISCSI Target”。利用ISCSI Target可以将服务器的存储空间分配给客户端使用,客户端就可以像本地磁盘一样使用iscsi磁盘。
iSCSI initiator
iSCSI initiator是一个安装在系统上的软件或硬件设备,负责与iscis存储设备进行通信。
三、targetcli服务
targetcli支持通过普通命令方式使用或交互式使用。通过targetcli可以创建、删除和配置iSCSI目标,在交互式中,可以直观呈现目标的层级树,方便浏览和配置,支持使用Linux基本命令,如cd、ls、pwd等。
安装targetcli,麒麟操作系统默认已经安装好targetcli
yum install -y targetcli
进入交互模式
targetcli
1. 目录内容解析
查看当前目录内容
ls
- backstores:存储目录
- block:块设备,如:磁盘驱动器、磁盘分区、逻辑卷(类型标识符为b的设备文件)
- fileio:文件存储,将文件模拟成磁盘,类似于虚拟机中的1个文件代表1个磁盘
- pscsi:物理SCSI
- ramdisk:内存中的1个指定大小的内存存储,也就是使用内存模拟磁盘
3. iscis目录解析
默认情况下,iscis目录为空。当我们在iscsi目录下创建iscis target时,会自动生成目录
- 在创建IQN的同时会自动创建一个默认的TPG
- iscsi:目标目录
- acls:设置允许连接的客户端,通过iqn或IP地址限定
- luns:逻辑单元号,指向物理存储
- portals:映射的IP地址和端口号
3. LUN
目标要提供客户端对存储或输出设备的访问,需要配置一个或多个逻辑单元号(LUN)。在ISCSI中,LUN显示为目标的连续编号的磁盘驱动器,一般来说,目标只有一个LUN。iSCIS通过ACL限制启动器是否可以访问LUN。
LUN的全称是Logical Unit Number(逻辑单元号),是SCSI中的概念。块存储对象只要加入target存储系统,就会分配1个代号。在区分块设备时只需要说 target 中的 LUN号码,块存储对象被指定了一个LUN后,成为了一个“逻辑”磁盘,供存储客户端使用。
通俗的理解:将后端存储设备中的设备理解为房间,LUN理解为房号。客户端如果要访问该房间,只需要知道该房号即可访问。
四、ISCSI服务部署(基于磁盘)
节点设置
主机 | 网络信息 | 说明 |
---|---|---|
Kylin-1 | 192.168.110.1/24 | 存储服务器 |
Kylin-2 | 192.168.110.2/24 | 测试客户端 |
[Step1]:
Kylin-1配置:添加3块10G硬盘
[Step2]:
Kylin-1配置:安装ISCIS存储服务器端
yum install -y targetcli
[Step3]:
Kylin-1配置:创建块存储对象
cd /backstores/block # 进入块设备存储目录
create 10G-1 /dev/sdb # 新建块设备
create 10G-2 /dev/sdc
create 10G-3 /dev/sdd
- **create:**新建块设备
- **10G-1:**块设备名称
- **/dev/sdb:**块设备路径
[Step4]:
Kylin-1配置:切换到iSCIS目录,创建ISCSI Target
cd /iscsi
create iqn.2024-09.com.meaauf # 名称可以自定义
[Step5]:
Kylin-1配置:切换到luns目录下,将block目录下的块存储加入luns目录下
cd iqn.2024-09.com.meaauf/tpg1/luns
create /backstores/block/10G-1
create /backstores/block/10G-2
create /backstores/block/10G-3
[Step6]:
Kylin-1配置:切换到acls目录下,为initator客户端创建ACL访问(客户端连接器)
cd ../acls
create iqn.2024-09.com.meaauf.Kylin-2
[Step7]:
Kylin-1配置:切换到portals目录下,指定新的监听地址和端口号
cd ../portals/
delete 0.0.0.0 3260 # 删除默认监听端口 3260
create 192.168.110.1 3260 # 添加监听端口
[Step8]:
Kylin-1配置:设置允许连接的用户和密码
cd ../acls/iqn.2024-09.com.meaauf.kylin-2/
set auth userid=admin
set auth password=kylin2024
[Step9]:
Kylin-1配置:查看当前配置
ls /
[Step10]:
Kylin-1配置:可以手动保存后退出,也可以直接退出(退出会保存当前配置)
cd /
saveconfig
[Step11]:
Kylin-1配置:启动target服务并加入到开机自启,调整防火墙策略,放行3260端口
systemctl enable --now target.service
firewall-cmd --add-port=3260/tcp --permanent
firewall-cmd --reload
[Step12]:
Kylin-2配置:配置ISCSI存储客户端
yum -y install open-iscsi
[Step13]:
Kylin-2配置:配置ISCSI Initiator客户端连接器名称
vim /etc/iscsi/initiatorname.iscsi
# 修改内容如下,InitiatorName必须和服务端acls中设置值一致
InitiatorName=iqn.2024-09.com.meaauf.Kylin-2
[Step14]:
Kylin-2配置:修改iscsid配置文件
vim /etc/iscsi/iscsid.conf
# 添加下列内容
node.session.auth.authmethod = CHAP
node.session.auth.username = admin
node.session.auth.password = kylin2024
[Step15]:
Kylin-2配置:重新启动iscsid服务
systemctl restart iscsid.service
[Step16]:
Kylin-2配置:发现远程可用的iSCSI服务器节点
iscsiadm -m discovery -t sendtargets -p 192.168.110.1
iscsiadm -m discovery -t st -p 192.168.110.1
- -m discovery:发现操作
- -t sendtargets:指定发现类型为 sendtargets
- -p 192.168.110.1:指定iSCSI目标门户地址
[Step17]:
Kylin-2配置:登录远程可用的iSCSI服务器节点
iscsiadm -m node --login
[Step18]:
Kylin-2验证:查看本地裸设备,可以看到新增了3块10G硬盘
lsblk
[Step19]:
Kylin-2验证:卸载指定的iSCSI存储设备
iscsiadm -m node -T iqn.2024-09.com.meaauf -u
五、ISCSI服务部署(基于文件)
节点设置
主机 | 网络信息 | 说明 |
---|---|---|
Kylin-1 | 192.168.110.1/24 | 存储服务器 |
Kylin-2 | 192.168.110.2/24 | 测试客户端 |
[Step1]:
Kylin-1配置:创建1个文件,模拟磁盘
dd if=/dev/zero of=/dev/file bs=1M count=2048 # 创建1个2G的文件,文件名为 /dev/file
- if=/dev/zero:指定源文件
- of=/dev/file:指定输出文件
- bs=1M:设置块大小,dd命令每次写入1M的数据
- count=2048:复制的块数为2048
[Step2]:
Kylin-1配置:创建iscis文件存储,进入fileio目录下
targetcli
> cd /backstores/fileio
> create file /dev/file
[Step3]:
Kylin-1配置:创建逻辑单元号
cd /iscsi/iqn.2024-09.com.meaauf/tpg1/luns/
create /backstores/fileio/file
[Step4]:
Kylin-1配置:创建客户端ACL,这里我们使用和上述一样的ACL规则
cd ../acls/
[Step5]:
Kylin-1配置:退出
exit
[Step6]:
Kylin-2配置:发现远程可用的iSCSI服务器节点,登录iSCSI服务器节点
iscsiadm -m discovery -t sendtargets -p 192.168.110.1
iscsiadm -m node --login
[Step7]:
Kylin-2验证:查看本地裸设备,可以看到新增了1块2G硬盘