Linux下搭建iSCSI共享存储-(Linux-IO Target)
相比昂贵的商业用的ipsan存储,软件实现的ipsan方案更加经济实惠,适用于一般的测试环境。Linux-IO Target是Linux内核中的一个软件,用于实现各种SCSI Target。它支持的SAN技术包括Fibre Channel、FCoE、iSCSI等,同时还能为本机生成模拟的SCSI设备,以及为虚拟机提供基于virtio的SCSI设备。Linux-IO Target在Linux内核中的版本为linux 2.6.38及以后的版本1。
下面以CentOS7为例,介绍如何基于Linux-IO Targe搭建iSCSI共享存储:
1. 环境准备
- iSCSI目标端(Target):提供存储设备,类似于存储服务器。
本文使用一台centos7机器作为iSCSI目标端,分配一个200G磁盘用作iSCSI存储设备,盘符为/dev/vdb
。
- iSCSI发起端(Initiator):需要访问存储设备的客户端。
可以是其他网络可达支持iscsi协议的客户端,如Windows、Linux等。
2. 安装iSCSI软件包
在目标端和发起端都需要安装相关的iSCSI软件包。
2.1 目标端(Target)上安装
CentOS 7/8可以使用targetcli
来管理iSCSI。
sudo yum install targetcli -y
2.2发起端(Initiator)上安装
发起端(即客户端)需要安装iscsi-initiator-utils
。
sudo yum install iscsi-initiator-utils -y
3. 在目标端配置iSCSI存储
3.1 启动并启用targetcli
sudo systemctl start target
sudo systemctl enable target
3.2 使用targetcli配置iSCSI目标
进入targetcli
命令行界面:
sudo targetcli
在targetcli中,按照以下步骤操作:
- 创建一个后端存储块设备(可以是物理磁盘或一个文件映像):
/> /backstores/block create name=mydisk dev=/dev/vdb
Created block storage object mydisk using /dev/vdb.
或者使用一个文件作为存储:
# 提前创建好对应目录: mkdir -p /var/lib/iscsi_disks
/> /backstores/fileio create name=mydisk file_or_dev=/var/lib/iscsi_disks/mydisk.img size=10G
注意:如果为追求IO性能,建议使用物理磁盘作为存储。
- 创建iSCSI目标端:
/> /iscsi create iqn.2023-09.com.example:mytarget
Created target iqn.2023-09.com.example:mytarget.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
说明:
iqn.2023-09.com.example:mytarget
为iSCSI目标端iqn名称,根据自己的需要进行自定义。
- 将创建的后端存储与目标关联:
通过如下命令创建一个LUN:
/> /iscsi/iqn.2023-09.com.example:mytarget/tpg1/luns create /backstores/block/mydisk
Created LUN 0.
- 配置网络ACL以允许发起端连接:
/> /iscsi/iqn.2023-09.com.example:mytarget/tpg1/acls create iqn.1994-05.com.redhat:dd7e92f1d16e
Created Node ACL for iqn.1994-05.com.redhat:dd7e92f1d16e
Created mapped LUN 0
注意:
上述ACL中添加客户端的iqn,需要在客户端通过命令
cat /etc/iscsi/initiatorname.iscsi
查看。
如果是单个LUnch映射多个发起端,配置相应的发起端即可:
/> /iscsi/iqn.2023-09.com.example:mytarget/tpg1/acls create iqn.1994-05.com.redhat:d68f277777
- 查看当前配置信息以及退出targetcli:
/> ls /
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block ................................................................................................