当前位置: 首页 > news >正文

Linux下搭建iSCSI共享存储-(Linux-IO Target)

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中,按照以下步骤操作:

  1. 创建一个后端存储块设备(可以是物理磁盘或一个文件映像):
/> /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性能,建议使用物理磁盘作为存储。

  1. 创建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名称,根据自己的需要进行自定义。

  1. 将创建的后端存储与目标关联:

通过如下命令创建一个LUN:

/> /iscsi/iqn.2023-09.com.example:mytarget/tpg1/luns create /backstores/block/mydisk
Created LUN 0.
  1. 配置网络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
  1. 查看当前配置信息以及退出targetcli:
/> ls /
o- / ......................................................................................................................... [...]o- backstores .............................................................................................................. [...]| o- block .................................................................................................. [Storage Objects: 1]| | o- mydisk ......................................................................... [/dev/vdb (200.0GiB) write-thru activated]| |   o- alua ................................................................................................... [ALUA Groups: 1]| |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]| o- fileio ................................................................................................. [Storage Objects: 1]| | o- mydisk ................................................. [/var/lib/iscsi_disks/mydisk.img (10.0GiB) write-back deactivated]| |   o- alua ................................................................................................... [ALUA Groups: 1]| |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]| o- pscsi .................................................................................................. [Storage Objects: 0]| o- ramdisk ................................................................................................ [Storage Objects: 0]o- iscsi ............................................................................................................ [Targets: 1]| o- iqn.2023-09.com.example:mytarget .................................................................................. [TPGs: 1]|   o- tpg1 ............................................................................................... [no-gen-acls, no-auth]|     o- acls .......................................................................................................... [ACLs: 2]|     | o- iqn.1994-05.com.redhat:d68f277777 .................................................................... [Mapped LUNs: 1]|     | | o- mapped_lun0 ................................................................................ [lun0 block/mydisk (rw)]|     | o- iqn.1994-05.com.redhat:dd7e92f1d16e .................................................................. [Mapped LUNs: 1]|     |   o- mapped_lun0 ................................................................................ [lun0 block/mydisk (rw)]|     o- luns .......................................................................................................... [LUNs: 1]|     | o- lun0 ..................................................................... [block/mydisk (/dev/vdb) (default_tg_pt_gp)]|     o- portals .................................................................................................... [Portals: 1]|       o- 0.0.0.0: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

3.3 配置防火墙规则

在目标端(Target)上,需要确保允许iSCSI端口3260的流量:

sudo firewall-cmd --add-port=3260/tcp --permanent
sudo firewall-cmd --reload

4. 配置发起端(Initiator)

4.1 发现iSCSI target端

在发起端,首先使用以下命令发现目标端上的iSCSI目标:

sudo iscsiadm -m discovery -t st -p <目标端IP地址>

输出类似于:

<目标端IP地址>:3260,1 iqn.2023-09.com.example:mytarget

4.2 登录到目标端

sudo iscsiadm -m node --targetname iqn.2023-09.com.example:mytarget --portal <目标端IP地址> --login

输出类似于:

Logging in to [iface: default, target: iqn.2023-09.com.example:mytarget, portal: <目标端IP地址>,3260] (multiple)
Login to [iface: default, target: iqn.2023-09.com.example:mytarget, portal: <目标端IP地址>,3260] successful.

登录成功后,发起端的系统会检测到一个新的磁盘设备,可以通过lsblkfdisk -l查看。

5. 自动登录并挂载iSCSI存储

5.1 配置开机自动登录

sudo iscsiadm -m node --targetname iqn.2023-09.com.example:mytarget --portal <目标端IP地址> --op update -n node.startup -v automatic

5.2 挂载iSCSI存储

创建文件系统并挂载新磁盘,例如:

sudo mkfs.ext4 /dev/sdX
sudo mkdir /mnt/iscsi_disk
sudo mount /dev/sdX /mnt/iscsi_disk

说明

如果是多个发起端挂载同一个LUN,需要配置共享集群文件系统,而ext4等linux常用的文件系统用于单机环境。

6. 测试

在发起端上,您可以向挂载的iSCSI存储中写入数据,并通过目标端验证存储是否正常工作。

7. 退出iSCSI会话

如果需要断开连接,可以使用以下命令:

sudo iscsiadm -m node --targetname iqn.2023-09.com.example:mytarget --portal <目标端IP地址> --logout

http://www.mrgr.cn/news/34483.html

相关文章:

  • 【链表操作】链表长度
  • 分享5款全能AI论文写作工具,一键生成万字论文
  • 在线文档搜索服务测试报告
  • 机械快门,电子快门,电子前帘快门 的原理
  • 基于微信小程序的商品展示+ssm(lw+演示+源码+运行)
  • 【计算机网络篇】计算机网络概述
  • 室内院内常见的不知名蚊虫(昆虫)图鉴和防治方法
  • 【初阶数据结构】详解二叉树 - 树和二叉树(三)(递归的魅力时刻)
  • 初学者怎么入门大语言模型(LLM)?看完这篇你就懂了!
  • yolov8 下载及使用
  • 7、论文阅读:20 年来的物体检测:一个调查
  • 颍川陈氏——平民崛起的典范
  • C++封装
  • SpringBoot 整合 apache fileupload 轻松实现文件上传与下载(通用版)
  • 设计模式的六大原则
  • 【HarmonyOS】应用权限原理和封装
  • QT设计中文输入法软键盘DLL给到C#开发步骤
  • 常见框架漏洞
  • JBoss EJBInvokerServlet CVE-2013-4810 反序列化漏洞
  • 线程同步:消费者模型(非常重要的模型)