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.mzph.cn/news/880121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光子架与电子架 -- 光子架与电子架

电子架 指插放交叉板、OTU单板、支/线路板、保护类单板的子架。 在通用型平台子架和平台子架中如果仅插放OTU单板&#xff08;非中继模式&#xff09;视为电子架。光电混合的子架视为电子架。 电子架主要实现将客户侧信号转换成标准波长的光信号&#xff0c;供光子架调度。 光子…

p18 docker镜像原理之联合文件系统,p19 docker镜像分层的理解

镜像是什么 镜像其实就是一种轻量级的&#xff0c;可执行的一种软件包&#xff0c;用来打包基于环境开发的软件&#xff0c;里面可以包括代码&#xff0c;环境&#xff0c;数据库&#xff0c;配置文件等信息 如何得到镜像&#xff1f; 可以从镜像仓库下载比方说dockerhub 比…

jenkins分布式构建

Jenkins分布式构建是一种将构建任务分散到多个机器上的方法&#xff0c;以提高构建效率和并行处理能力 1. 架构 主节点&#xff08;Master&#xff09;&#xff1a;负责管理构建任务、调度和监控所有从节点。从节点&#xff08;Slave&#xff09;&#xff1a;实际执行构建任务…

JavaEE: 深入探索TCP网络编程的奇妙世界(六)

文章目录 TCP核心机制TCP核心机制九: 面向字节流TCP核心机制十: 异常处理 小小的补充(URG 和 PSH)~TCP小结TCP/UDP 对比用UDP实现可靠传输(经典面试题) 结尾 TCP核心机制 上一篇文章JavaEE: 深入探索TCP网络编程的奇妙世界(五) 书接上文~ TCP核心机制九: 面向字节流 TCP是面…

C++vector类的模拟实现

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 模拟实现vector类 收录于专栏【C语法基础】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 前置说明 1. vecto…

密集行人数据集 CrowdHumanvoc和yolo两种格式,yolo可以直接使用train val test已经划分好有yolov8训练200轮模型

密集行人数据集 CrowdHuman voc和yolo两种格式&#xff0c;yolo可以直接使用 train val test已经划分好 有yolov8训练200轮模型。 CrowdHuman 密集行人检测数据集 数据集描述 CrowdHuman数据集是一个专为密集行人检测设计的数据集&#xff0c;旨在解决行人密集场景下的检测挑…

Redis的主从模式、哨兵模式、集群模式

最近学习了一下这三种架构模式&#xff0c;这里记录一下&#xff0c;仅供参考 目录 一、主从架构 1、搭建方式 2、同步原理 3、优化策略&#xff1a; 4、总结&#xff1a; 二、哨兵架构 1、搭建哨兵集群 2、RedisTemplate如何使用哨兵模式 三、分片集群架构 1&#…

SkyWalking 环境搭建部署

架构简介 skywalking agent : 和业务系统绑定在一起,负责收集各种监控数据skywalking oapservice : 是负责处理监控数据的,比如接受skywalking agent的监控数据,并存储在数据库中;接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalking oapserv…

19_Python中的上下文管理器

Python中的上下文管理器 在Python中&#xff0c;上下文管理器&#xff08;Context Manager&#xff09;是一种用于资源管理的技术&#xff0c;它可以确保资源在使用后被正确释放&#xff0c;例如文件、网络连接或锁。 上下文管理器&#xff08;Context Manager&#xff09;是…

计算机毕业设计 | SSM 凌云招聘平台 求职问答审批系统(附源码)

1&#xff0c;绪论 人力资源是企业产生效益、创造利润的必不可少的、最重要的资源。人作为人力资源的个体可看作是一个承载着有效知识、能力的信息单元。这样的信息单元可看作是一个为企业产生价值和利润的个体。从而使得这样的信息单元所具有的信息就是一个有价值的信息。 校…

python是什么语言写的

Python是一种计算机程序设计语言。是一种面向对象的动态类型语言。现今Python语言很火&#xff0c;可有人提问&#xff0c;这么火的语言它的底层又是什么语言编写的呢&#xff1f; python是C语言编写的&#xff0c;它有很多包也是用C语言写的。 所以说&#xff0c;C语言还是很…

中间件:maxwell、canal

文章目录 1、底层原理&#xff1a;基于mysql的bin log日志实现的&#xff1a;把自己伪装成slave2、bin log 日志有三种模式&#xff1a;2.1、statement模式&#xff1a;2.2、row模式&#xff1a;2.3、mixed模式&#xff1a; 3、maxwell只支持 row 模式&#xff1a;4、maxwell介…

全栈开发(四):使用springBoot3+mybatis-plus+mysql开发restful的增删改查接口

1.创建user文件夹 作为增删改查的根包 路径 src/main/java/com.example.demo/user 2.文件夹里文件作用介绍 1.User(实体类) package com.example.demo.user; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; impo…

Web端云剪辑解决方案,BS架构私有化部署,安全可控

传统视频制作流程繁琐、耗时&#xff0c;且对专业设备和软件的高度依赖&#xff0c;常常让企业望而却步&#xff0c;美摄科技凭借其强大的技术实力和创新能力&#xff0c;推出了面向企业用户的Web端云剪辑解决方案&#xff0c;为企业提供一站式、高效、便捷的视频生产平台。 B…

【docker】在IDEA工具内,远程操作服务器上的docker

一&#xff0c;配置 在服务器上&#xff0c;对docker配置如下内容&#xff1a; vi /usr/lib/systemd/system/docker.service添加如下&#xff1a; -H tcp://0.0.0.0:2375重新加载&#xff0c;并重启docker&#xff1a; #重新加载配置 systemctl daemon-reload# 重启docker …

使用 IntelliJ IDEA 连接到达梦数据库(DM)

前言 达梦数据库是一款国产的关系型数据库管理系统&#xff0c;因其高性能和稳定性而被广泛应用于政府、金融等多个领域。本文将详细介绍如何在 IntelliJ IDEA 中配置并连接到达梦数据库。 准备工作 获取达梦JDBC驱动&#xff1a; 访问达梦在线服务平台网站或通过其他官方渠道…

SkyWalking 持久化链路数据

默认持久化 H2 数据库config/application.yml storage:selector: ${SW_STORAGE:h2} MySQL持久化 修改配置 MySQL 数据库config/application.yml storage:selector: ${SW_STORAGE:h2}mysql:properties:jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest&q…

基于yolov8的红外小目标无人机飞鸟检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的红外小目标无人机与飞鸟检测系统是一项集成了前沿技术的创新解决方案。该系统利用YOLOv8深度学习模型的强大目标检测能力&#xff0c;结合红外成像技术&#xff0c;实现了对小型无人机和飞鸟等低空飞行目标的快速、准确检测。 YOLOv8作为YOLO系列的…

Springboot与minio

一、介绍 Minio是一个简单易用的云存储服务&#xff0c;它让你可以轻松地把文件上传到互联网上&#xff0c;这样无论你在哪里&#xff0c;只要有网络&#xff0c;就能访问或分享这些文件。如果你想要从这个仓库里取出一张图片或一段视频&#xff0c;让网站的访客能看到或者下载…

How do you send files to the OpenAI API?

题意&#xff1a;你如何向 OpenAI API 发送文件 问题背景&#xff1a; For fun I wanted to try to make a tool to ask chatgpt to document rust files. I found an issue, in that the maximum message length the API allows seems to be 2048 characters. 为了好玩&…