ISCSI网络存储服务

news2024/9/21 19:08:34

ISCSI网络存储服务

应用场景

服务器硬盘空间不足,可能导致服务器宕机。解决方案通常有两个,一是拷贝出服务器中的部分数据,空出存储空间,但在生产环境中,数据一般会很大,拷贝时间会很长,并且只能暂时解决问题;二是通过远程存储来实现。

现在企业存储一般分类:

①DAS

Direct Attached Storage 直接附加存储,普通电脑中的硬盘,通过 RAID 磁盘阵列、LVM 等管理

DAS存储是第一代存储服务,DAS存储是一堆存储阵列组成的一块盘,这块盘可以挂在到服务器中,进行格式化以及数据存储,相当于一块外挂盘,也就是移动硬盘的概念,服务器连接这块盘需要使用SCSI总线或者FC光纤进行连接。

DAS的优点在于组网简单、成本低廉,缺点也很明显,因为是一根线连接的盘,无法多个服务器同时使用,扩展性差,并且无法共享。DAS存储现在基本不会使用了。

②SAN

Storage Area Network 存储区域网络存储,SNA 却可以透过某些特殊的接口或信道(如光纤)来提供局域网络内的所有机器进行磁盘存取,对速率、冗余性要求高,同时成本也比较高;相当于模拟 DAS

使用iSCSI存储协议,块级传输

换句话说,就是将存储设备通过网络链接起来,实现远程存储,相当于通过网络协议给你的服务器再插上一块硬盘

在这里插入图片描述

③NAS

Network Attachment Storage,网络附加存储,采用普通以太网,对速率.冗余无特别要求;

使用NFS、CIFS共享协议、文件级传输

在这里插入图片描述

  • SAN 是提供【磁盘(block device)】给主机用,而不是像 NAS 提供的是【网络协议的文件系统(NFS,SMB…)】
  • 成本 DAS > SAN > NAS

iSCSI 协议应用

1 iSCSI 概述

快速增长的存储容量使得企业需要采用网络存储解决方案。目前网络存储技术采用的连接技术主要有光纤通道和TCP/IP 。基于 IP 的网络存储能解决基于光纤通道的网络存储中存在的兼容性和传输距离问题,而且能提供相对廉价的解决方案。

iSCSI 协议是 IP 存储网络协议之一,将 SAN 的连接方式改为利用 IP 技术来处理。

iSCSI 主要是透过 TCP/IP 的技术,将存储端透过 iSCSI target 功能,做成可以提供磁盘服务的服务器端,客户端直接可以挂载使用网络磁盘。

2 iSCSI的工作方式

​ 服务(设备)端 —— target
​ 客户(应用)端 —— initiator

在这里插入图片描述

LUN (Logical Unit Number)是逻辑单元号码的简称,它是一种逻辑定义,用于标识存储设备中的逻辑单元。

它不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的LUN可能是磁盘空间,可能是磁带机,或者是media changer等等。

而操作系统的机制使然,操作系统识别的最小存储对象级别就是 LUN Device,这是一个逻辑对象,所以很多时候被称之为Logical Device。

在这里可以把它想象成一辆车,需要新建这辆车,来把硬盘送到客户机

3 配置iSCSI服务器

3.1 准备存储设备

# 方式有5种
1 可以使用dd命令建立一个仿真磁盘
dd if=/dev/zero of=/test/disk1.img bs=1M count=500
2 单独使用一个磁盘
3 单独使用现有分区
4 使用LVM的lv分区
5 使用RAID磁盘阵列

使用 RAID 磁盘阵列,提供远程磁盘

# 安装mdadm工具
yum -y install mdadm
# 使用mdadm工具,创建一个 RAID 5 磁盘阵列和一个备份盘
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[b-e] 
# 格式化文件类型为EXT4
mkfs.ext4 /dev/md0
# 创建mdadm的配置文件
touch /etc/mdadm.conf
# 生成配置文件信息后写入配置文件,永久保存策略
mdadm -Ds >> /etc/mdadm.conf
mdadm -Ds | tee -a /etc/mdadm.conf

在这里插入图片描述

3.2 创建 iSCSI 的对象 target

3.2.1 targetcli 命令

targetcli 是用于管理 iSCSI 服务端存储资源的专用配置命令,它能够提供类似于fdisk命令的交互式配置功能,将iSCSI 共享资源的配置内容抽象成“目录”的形式,只需将各类配置信息填入到相应的“目录”中即可。这里的难点主要在于认识每个“参数目录”的作用。当把配置参数正确地填写到“目录”中后,iSCSI 服务端也可以提供共享资源服务了。

'/backstores/block’是服务器端配置共享设备的位置,需要把创建的Raid阵列加入到配置共享设备的“资源池”中,并将该文件重新命名为 ‘disk0’,这样用户就不会知道是由服务器中的哪块硬盘来提供共享存储资源,而只会看到一个名为disk0的存储设备。

3.2.2 服务端配置流程

输入targetcli,进入到命令状态中

# 安装targetcli
yum -y install targetcli

登录界面

在这里插入图片描述

在这里插入图片描述

①创建共享block
/backstores/block create block1 /dev/md0
# block1 自定义的名字
# /dev/md0 之前创建的磁盘分区
/> /backstores/block create block1 /dev/md0
Created block storage object block1 using /dev/md0.
②创建iSCSI

iSCSI target名称,是一串用于描述共享资源的唯一字符串。稍后用户端扫描 iSCSI 服务端时即可看到这个字符串,因此不需要记住它。创建一个target名称,还会在/iscsi参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加入到 iSCSI 共享资源池中的硬盘设备添加到这个新目录中,这样用户在登录 iSCSI 服务端后,即可默认使用这硬盘设备提供的共享存储资源了。

命名格式:iqn.yyyy-mm.<主机名(域名)反写>:自定义名称。自定义名称内不能有下划线

格式:iqn.2023-06.com.data:disk
注意:2022-6会失败必须是2022-06
/iscsi create iqn.2023-06.com.data:disk

在这里插入图片描述

3.2.3 为客户机分配存储空间 LUN

‘luns’ 和 ‘acls’ 都在 ‘tpg1’ 目录下,直接进入 ‘tpg1’ 目录下执行命令。

cd /iscsi/iqn.2023-06.com.data:disk/tpg1
luns/ create /backstores/block/block1  # LUN 不设置的话,默认从0开始,依次递增;也可以指定。
# 也可以使用绝对路径
/iscsi/iqn.2023-06.com.data:disk/tpg1/luns create /backstores/block/block1 

在这里插入图片描述

3.2.4 ACL配置

设置访问控制列表。iSCSI 协议是通过客户端名称进行验证的,也就是说,用户在访问存储共享资源时不需要输入密码,只要 iSCSI 客户端的名称与服务端中设置的访问控制列表中某一名称条目一致即可,因此需要在 iSCSI 服务端的配置文件中写入一串能够验证用户信息的名称。

acls 参数目录用于存放能够访问 iSCSI 服务端共享存储资源的客户端名称。iSCSI target后面可以追加上类似于’:client’的参数,这样既能保证客户端的名称具有唯一性,又非常便于管理和阅读。

acls/ create iqn.1994-05.com.redhat:6f4410dee917
# iqn.1994-05.com.redhat:82f34ed61b8 客户端的id

# 客户端ID查询命令如下,在客户端操作
cat /etc/iscsi/initiatorname.iscsi

在这里插入图片描述

在这里插入图片描述

4 客户端使用 iSCSI 存储设备

使用’initiator’连接 iSCSI 对象

# 软件包
iscsi-initiator-utils
# 安装
yum -y install iscsi-initiator-utils
# 使用iscsidm工具查找
iscsiadm -m discovery -t sendtargets -p 192.168.153.134
# 连接target
iscsiadm -m node -T iqn.2023-06.com.data:disk
# 查看
iscsiadm -m node --login

在这里插入图片描述

报错:iscsiadm: connect to 192.168.153.134 timed out

在这里插入图片描述

解决:在服务端打开3260端口

firewall-cmd --add-port=3260/tcp --zone=public

在客户端查询磁盘,客户端本身只有一个磁盘’/dev/sda’

服务端安装使用RAID 5 阵列,3块(一块20G)使用,1块备份,利用率为2/3,大概40G

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736246.html

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

相关文章

Kubernetes 的内部架构和工作机制

Kubernetes 是一个生产级别的容器编排平台和集群管理系统&#xff0c;能够创建、调度容器&#xff0c;监控、管理服务器。 操作系统的一个重要功能就是抽象&#xff0c;从繁琐的底层事务中抽象出一些简洁的概念&#xff0c;然后基于这些概念去管理系统资源。 Kubernetes 也是…

时间序列预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost时间序列预测,GWO-XGBoost时间序列预测模型,单列数据输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost时间序列预测,GWO-XGBoost时间序列预测模型,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及…

AD为什么使用不了Keepout层来画板框(技巧分享)

AD为什么使用不了Keepout层 背景&#xff1a;keepout层作为板框层&#xff0c;是以前AD10的老版本延续下来的习惯&#xff0c;在新版本上需要单独放置&#xff01; 在嘉立创平台上&#xff0c;习惯了用一个机械1层作为板框。当使用带有添加3D封装的pcb库&#xff0c;发现上面的…

Excel的技术分享

导出Excel的技术分享 Excel前置知识 首先大家就是在大学的计算机导论等课程肯定有了解过office全家桶中的工具之一Excel。在印象当中就是Excel是普遍使用的就是有03和07的两个不同的版本。请问一下大家就是能说一说就是这两个版本有什么区别吗&#xff1f; 显而易见就是从了直…

Elasticsearch【安装ES服务、安装kibana、Docker安装 、索引操作、文档操作】(二)-全面详解(学习总结---从入门到深化)

目录 Elasticsearch安装_安装ES服务 Elasticsearch安装_安装kibana Elasticsearch安装_Docker安装 Elasticsearch常用操作_索引操作 Elasticsearch常用操作_文档操作 Elasticsearch安装_安装ES服务 准备工作 1、 准备一台搭载有CentOS7系统的虚拟机&#xff0c;使用XSh…

(转载)支持向量机(SVM)的回归拟合(matlab实现)

与传统的神经网络相比&#xff0c;SVM具有以下几个优点&#xff1a; (1)SVM是专门针对小样本问题而提出的&#xff0c;可以在有限样本的情况下获得最优解。 (2)SVM算法最终将转化为一个二次规划问题&#xff0c;从理论上讲可以得到全局最优解&#xff0c;从而解决了传统神经网…

Python GUI编程利器:Tkinker中的布局管理器(10)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日目标 学习Tkinter的三个布局管理器&#xff1a; pack布局管理器 gird布局管理器 place布局管理器 啥是布局管理器&am…

TCP流套接字编程(模拟多个客户端与服务器交互)

目录 一、ServerSocket API 1.1、ServerSocket构造方法 1.2、ServerSocket方法 二、Socket API 2.1、socket构造方法 2.2、socket方法 三、TCP 中的长短连接 四、示例 实现聊天室功能 五、存在的问题 一、ServerSocket API ServerSocket 是创建TCP服务端Socket的…

500个线程运行串行原因排查

场景&#xff1a;项目中有业务需要开启500个线程执行&#xff0c;需要证明有500个线程在执行。用的是一台128核的电脑。服务用docker启动的。所以理论上应该是要有128个线程并行执行的。 目录 一.证明有500个线程在执行(会发现并行度很低) 1.用top命令监控进程内的线程运行情…

netty学习(5):netty实现注册中心和发送JSON数据到指定的客户端

1. 实现&#xff1a;在netty客户端实现netty客户端注册功能&#xff0c;netty客户端需要发送注册消息到netty服务端。 2. 在父工程创建Message类&#xff0c;定义消息格式和消息类型 定义消息类型&#xff1a; package message;public enum MessageType {RegisterRequest,Re…

函数重载与函数递归

一、函数重载 定义&#xff1a;两个函数的函数名称相同&#xff0c;但是参数的个数或者类型不同 参考以下代码&#xff1a; //1.public static int add(int x,int y){return x y;}//2.与1构成重载public static int add(byte a,int b){return a b;}//3.与1构成重载public s…

文件上传漏洞总结

文件上传 文件上传漏洞产生的原理 文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件&#xff0c;而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。 文件上传漏洞的危害 1、由于是上传的文件&#xff0c;所以文件由用户决定&#xff0c;上传we…

交换机架构整理

网口的基本结构 网口扫盲三:以太网芯片MAC和PHY的关系 问:如何实现单片以太网微控制器? 问:以太网MAC是什么? 问:什么是MII? 问:以太网PHY是什么? 问:造成以太网MAC和PHY单片整合难度高的原因是什么? 问: 网卡上除RJ-45接口外,还需要其它元件吗? 问:10BaseT和100BaseTX…

LeetCode[面试题17.14]最小的K个数

难度&#xff1a;中等 题目&#xff1a; 设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例&#xff1a; 输入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出&#xff1a; [1,2,3,4]提示&#xff1a; 0 < len(arr) < 1000000 <…

Java设计模式之创建型-建造者模式(UML类图+案例分析)

目录 一、基本概念 二、UML类图 三、角色设计 四、案例分析 五、总结 一、基本概念 建造者模式是一种创建型设计模式&#xff0c;它使我们将一个复杂对象的构建步骤分离出来&#xff0c;使得同样的构建过程可以创建不同的表示。该模式的目的是将构建复杂对象的过程抽象化…

JavaScrpt_13 Web API 正则表达式

JavaScrpt_13 Web API 正则表达式 一、 正则表达式1. 正则基本使用2. 元字符边界符量词范围字符类 3. 替换和修饰符4. change 事件5. 判断是否有类 一、 正则表达式 正则表达式&#xff08;Regular Expression&#xff09;是一种字符串匹配的模式&#xff08;规则&#xff09;…

12_Linux异步通知

目录 异步通知简介 驱动中的信号处理 应用程序对异步通知的处理 驱动程序编写 编写测试APP 运行测试 异步通知简介 在使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过poll函数不断的轮询。最好的方式就是驱动…

【Python爬虫与数据分析】时间、日期、随机数标准库

目录 一、模块化概述 二、time库 1. 时间获取 2. 时间格式化 3. 程序计时 三、datetime库 1. datetime.datetime类 2. datetime.timedelta类 四、random库 1. 基本随机函数 2. 扩展随机函数 3. 随机时间的生成 一、模块化概述 Python程序由模块组成&#xff0c;一个…

MySQL基础篇第4章(运算符)

文章目录 1、算术运算符1.1 加法与减法运算符1.2 乘法与除法运算符1.3 求模&#xff08;求余&#xff09;运算符 2、比较运算符2.1 等号运算符2.2 安全等于<>2.3 不等于运算符2.4 空运算符2.5 非空运算符2.6 最小值运算符2.7 最大值运算符2.8 BETWEEN AND运算符2.9 IN运算…

typeScript(持续吐血版)

typeScript-02-进阶(TSVue3) 结合vue3来使用TypeScript 使用vite来创建vue3TS的项目 使用vite创建项目&#xff0c;并选择带ts的版本 npm create vitelatest my-vue-ts-app – --template vue-ts 参考链接&#xff1a;https://vuejs.org/guide/typescript/composition-api…