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

33.Linux iCSCI 服务

文章目录

  • Linux iSCSI 服务
    • iSCSI 服务介绍
    • iSCSI 架构
      • 模型
      • 流程
    • iSCSI 服务的作用
    • iSCSI 服务配置
      • 配置服务端target
      • 配置客户端Initiator
    • 多路径访问
      • 实践
        • server配置网络
        • client配置网络
        • 验证

Linux iSCSI 服务

iSCSI 服务介绍

SCSI(小型计算机系统接口),一种用于计算机和智能设备之间(硬盘,软驱,光驱,打印机,扫描仪等)连接标准

iSCSI(Internet 小型计算机系统接口),又称IP-SAN,该技术是将现有SCSI接口与以太网技术结合,基于TCP/IP的协议连接iSCSI服务端(target)和客户端(initiator),使得封装后的SCSI数据包可以在互联网传输,最终实现iSCSI服务端提供存储给客户端。简单来说就是:iSCSI提供了一个标准的、软件层面的通道,让操作系统(比如 Linux)能够和服务器底层的硬件管理控制器(叫做 BMC)进行“对话”

iSCSI 架构

模型

在这里插入图片描述

角色官方名称比喻功能
客户端iSCSI Initiator(启动器)你的笔记本电脑它发起连接请求,将远程存储“映射”到本地,使其看起来像一块本地硬盘。
存储端iSCSI Target(目标器)机房的大容量存储柜它提供存储空间(硬盘、LUN),等待客户端的连接。它“暴露”存储资源给网络。
网络标准以太网那根超长的虚拟硬盘线在 Initiator 和 Target 之间传输 SCSI 命令和数据。

Initiator(客户端)通过网络(IP)去访问 Target(服务器端)提供的存储块。

流程

  1. 封装: Initiator 将本地的 SCSI 硬盘读写命令和数据,按照 iSCSI 协议打包成标准的 TCP/IP 数据包。
  2. 传输: 这些数据包通过普通的以太网进行传输。
  3. 解封装: Target 接收到数据包后,将其拆解,还原出原始的 SCSI 命令,然后执行对后端物理硬盘的读写操作。
  4. 返回: 操作结果(如读取的数据)再按照同样的流程封装、传回给 Initiator。

iSCSI 服务的作用

  1. 硬件健康监控: 查看 CPU 温度、风扇转速、电源状态、硬盘健康状况等。这是最主要的功能。
  2. 远程管理: 在系统层面触发硬件的远程控制,比如远程开机、关机、重启(即使系统已崩溃)。
  3. 系统日志访问: 读取 BMC 记录的硬件事件日志,帮助诊断死机、重启等硬件相关的问题。
  4. 传感器数据读取: 获取所有传感器上报的实时数据。

iSCSI 服务配置

配置服务端target

安装软件包

[root@server ~ 11:25:55]# yum install -y targetcli targetd

启用并启动服务

[root@server ~ 11:25:55]# systemctl enable target --now

准备共享块设备
server端添加一个200G SATA接口硬盘
创建分区1将100G 空间分享给客户端

[root@server ~ 11:28:12]# parted /dev/sdb mklabel gpt
[root@server ~ 11:29:15]# parted /dev/sdb unit MiB mkpart dbapp 1 102401  
[root@server ~ 11:29:53]# lsblk /dev/sdb                                  
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  200G  0 disk 
└─sdb1   8:17   0  100G  0 part 

配置共享块存储

[root@server ~ 11:29:56]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'./> ls
o- / ................................................................................... [...]o- backstores ........................................................................ [...]| o- block ............................................................ [Storage Objects: 0]| o- fileio ........................................................... [Storage Objects: 0]| o- pscsi ............................................................ [Storage Objects: 0]| o- ramdisk .......................................................... [Storage Objects: 0]o- iscsi ...................................................................... [Targets: 0]o- loopback ................................................................... [Targets: 0

/backstores 提供后端存储
/iscsi 配置如何共享后端存储

后端存储添加块设备

/> /backstores/block create dev=/dev/sdb1 name=db01
Created block storage object db01 using /dev/sdb1.
/> ls /backstores/block/
o- block ................................................................ [Storage Objects: 1]o- db01 ...................................... [/dev/sdb1 (100.0GiB) write-thru deactivated]o- alua ................................................................. [ALUA Groups: 1]o- default_tg_pt_gp ..................................... [ALUA state: Active/optimized

配置如何共享后端存储

创建target,后续客户端 会扫描 target
target名称使用IQN来表示
不管是客户端还是服务端都通过IQN来表示自己。

/> /iscsi/ create iqn.2025-09.cloud.hxl.server.x8664:db
Created target iqn.2025-09.cloud.hxl.server.x8664:db.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> ls /iscsi/
o- iscsi ........................................................................ [Targets: 1]o- iqn.2025-09.cloud.hxl.server.x8664:db ....................................... [TPGs: 1]o- tpg1 ........................................................... [no-gen-acls, no-auth]o- acls ...................................................................... [ACLs: 0]o- luns ...................................................................... [LUNs: 0]o- portals ................................................................ [Portals: 1]o- 0.0.0.0:3260 ................................................................. [OK

切换相应目录

/> cd /iscsi/iqn.2025-09.cloud.hxl.server.x8664:db/tpg1/
/iscsi/iqn.20...x8664:db/tpg1> ls
o- tpg1 ............................................................... [no-gen-acls, no-auth]o- acls .......................................................................... [ACLs: 0]o- luns .......................................................................... [LUNs: 0]o- portals .................................................................... [Portals: 1]o- 0.0.0.0:3260 ..................................................................... [OK

配置放行客户端(iqn.2025-09.cloud.hxl.server.x8664:webapp)

/iscsi/iqn.20...x8664:db/tpg1> acls/ create iqn.2025-09.cloud.hxl.server.x8664:webapp
Created Node ACL for iqn.2025-09.cloud.hxl.server.x8664:webapp
Created mapped LUN 0.

配置客户端可以访问的设备

/iscsi/iqn.20...x8664:db/tpg1> luns/ create /backstores/block/db01 
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2025-09.cloud.hxl.server.x8664:webapp

验证配置

/iscsi/iqn.20...x8664:db/tpg1> ls
o- tpg1 ............................................................... [no-gen-acls, no-auth]o- acls .......................................................................... [ACLs: 1]| o- iqn.2025-09.cloud.hxl.server.x8664:webapp .............................. [Mapped LUNs: 1]|   o- mapped_lun0 .................................................. [lun0 block/db01 (rw)]o- luns .......................................................................... [LUNs: 1]| o- lun0 ...................................... [block/db01 (/dev/sdb1) (default_tg_pt_gp)]o- portals .................................................................... [Portals: 1]o- 0.0.0.0:3260 ..................................................................... [OK

退出配置

/iscsi/iqn.20...x8664:db/tpg1> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json

配置客户端Initiator

安装软件包

[root@web ~ 13:52:37]# yum install -y iscsi-initiator-utils

设置客户端的IQN

[root@web ~ 13:43:33]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2025-09.cloud.hxl.server.x8664:webapp

扫描目标

[root@web ~ 13:54:10]# iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2025-09.cloud.hxl.server.x8664:db

选项说明:
-m discovery 发现模式
-t st 找target(sendtarget)
-p 10.1.8.10 服务地址

挂载设备

[root@web ~ 13:45:50]# iscsiadm -m node -T iqn.2025-09.cloud.hxl.server.x8664:db -l
Logging in to [iface: default, target: iqn.2025-09.cloud.hxl.server.x8664:db, portal: 10.1.8.10,3260] (multiple)
Login to [iface: default, target: iqn.2025-09.cloud.hxl.server.x8664:db, portal: 10.1.8.10,3260] successful.

选项说明:
-m node 登录模式
-T iqn.2025-09.cloud.hxl.server.x8664:db 服务器IQN
-l login

识别为本地硬盘 sdb

[root@web ~ 13:47:31]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part ├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0    2G  0 lvm  [SWAP]└─centos-home 253:2    0   47G  0 lvm  /home
sdb               8:16   0  100G  0 disk 
sr0              11:0    1  4.4G  0 rom 

使用存储

[root@web ~ 14:16:53]# mkfs.xfs /dev/sdb
[root@web ~ 14:18:38]# vim /etc/fstab
最后添加一条记录
将相同挂载点的记录注释掉,避免挂载冲突
/dev/sdb /usr/share/nginx/html xfs defaults        0 0
[root@web ~ 14:18:36]# mount -a
[root@web ~ 14:18:43]# df /usr/share/nginx/html/
文件系统           1K-块  已用      可用 已用% 挂载点
/dev/sdb       104806400 32992 104773408    1% /usr/share/nginx/html
[root@web ~ 14:19:30]# echo Hello data From iSCSI for nginx > /usr/share/nginx/html/index.html
[root@server ~ 14:20:47]# curl http://10.1.8.11/
Hello data From iSCSI for nginx

重启系统验证
问题: /dev/sdb 挂载超时,系统启动失败。
原因: 操作系统启动,首先挂载设备,然后启动服务。这里sdb设备是如何识别到的呢? 是因为我们启动了iscsi服务,通过网络识别的吧。
解决方法:

  1. 在紧急模式下,先注释/dev/sdb挂载条目,确保进入系统
  2. 进入系统后,设置挂载选项_netdev,表明设备是网络设备。操作系统在启动时候,会等网络相关服务启动完成后再挂载。
    defaults 修改为 _netdev
  3. 重启验证

思考题:

  1. 如何存储服务器target服务未启动,客户端系统重启,能正常启动吗?
    答案:由于客户端无法扫描到该设备,所以挂载失败,进一步到只系统启动失败。

  2. 服务端还可以共享哪些块存储?
    raid,lv

  3. 如何控制给多个客户端分享不同的块存储?
    使用不同的tpg分组

多路径访问

这里提个问题:如果单个网线断掉之后,还能不能继续呢?

回答:用两个网线。 客户端识别设备,有两个路径。

多路径是指服务器和存储阵列存在多个物理连接方式使用虚拟设备,这种方式可以提供更加弹性的存储连接(一个路径down掉不会影响连接性),也可以聚合存储带宽提供性能。

在这里插入图片描述

实践

server配置网络

给server端添加一张新的网卡

在这里插入图片描述

[root@server ~ 15:32:15]# nmcli connection modify 有线连接\ 1 con-name ens37 ipv4.method manual ipv4.addresses 10.1.1.10/24
[root@server ~ 15:32:51]# nmcli connection up ens37
client配置网络

给client端也添加一张新的网卡

在这里插入图片描述

[root@web ~ 15:33:19]# nmcli connection modify 有线连接\ 1 con-name ens37 ipv4.method manual ipv4.addresses 10.1.1.11/24
[root@web ~ 15:33:29]# nmcli connection up ens37

客户端卸载占用的文件系统,避免冲突

[root@web ~ 15:39:32]# umount /usr/share/nginx/html

通过10.1.1.10扫描,并登录

[root@web ~ 15:39:40]# iscsiadm -m discovery -t st -p 10.1.1.10
10.1.1.10:3260,1 iqn.2025-09.cloud.laoma.server.x8664:db
[root@web ~ 15:58:12]# iscsiadm -m node -T iqn.2025-09.cloud.hxl.server.x8664:db -l

本机额外出现一块硬盘 sdc

[root@web ~ 15:41:03]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part ├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0    2G  0 lvm  [SWAP]└─centos-home 253:2    0   47G  0 lvm  /home
sdb               8:16   0  100G  0 disk 
sdc               8:32   0  100G  0 disk 
sr0              11:0    1  4.4G  0 rom 

使用多路径软件识别,安装多路径软件

[root@web ~ 16:41:29]# yum -y install device-mapper-multipath

生成多路径配置文件

[root@web ~ 16:41:51]# mpathconf --enable

启动服务

[root@web ~ 16:42:26]# systemctl start multipathd.service

识别设备

[root@web ~ 16:12:47]# multipath -ll
mpatha (360014053ca8b473ca334210ad17ac1ea) dm-3 LIO-ORG ,db01            
size=100G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 32:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=1 status=enabled`- 33:0:0:0 sdc 8:32 active ready running

如果客户端没有识别两个设备为同一个设备,
需要使用iscsiadm登出 (-u选项),然后再次iscsiadm登入(-l选项)

修改 fstab,并挂载

[root@web ~ 16:48:47]# vim /etc/fstab
/dev/mapper/mpatha /usr/share/nginx/html xfs _netdev        0 0
[root@web ~ 16:52:02]# mount -a
[root@web ~ 16:52:42]# df /usr/share/nginx/html/
文件系统               1K-块  已用      可用 已用% 挂载点
/dev/mapper/mpatha 104806400 32996 104773404    1% /usr/share/nginx/html
验证

监视web服务是否正常

[root@server ~ 16:04:13]# watch -n1 'date;curl -s http://10.1.8.11/'

在这里插入图片描述

http://www.dtcms.com/a/414876.html

相关文章:

  • 国内优秀网页设计网站网站建设流程共有几个阶段
  • 基于物联网的个人健康管理系统(论文+源码)
  • 一个网站可以做几个关键词网站建设济南
  • Linux日志分析入门:使用grep和awk发现服务器异常访问
  • 435. 无重叠区间
  • 2025制造业研发流程提效指南:从审批卡顿到协同闭环,3类系统选型全解析
  • 文件夹随机分配 把文件夹随机分配到指定的文件夹中
  • 104.二叉树的最大深度(二叉树算法题)
  • 宿迁做网站的怎样制作h5
  • 电子商务网站建设结业论文seo教程seo官网优化详细方法
  • 使用 Three.js 和本地 Draco Loader 高效加载压缩 GLB 模型
  • Nginx-Proxy-Manager配置SSL泛域名证书教程
  • 图的遍历:从深度优先到广度优先
  • Java数据结构:ArrayList与顺序表1
  • C语言实战项目:贪吃蛇(1)
  • 鸿蒙应用开发之ArkTs集成AI大模型与Markdown流式渲染教程(API 20)
  • 网站建设服务器环境配置关于网站开发的网店计划书范文
  • LeetCode-hot100——将有序数组转换为二叉搜索树
  • 网站速度对seo的影响修改wordpress登录背景图片
  • Kimi 灰度测试 OK Computer,AI 从 “问答” 迈入 “执行” 新阶段​
  • 什么是 mmap?
  • 民宿客用网络升级方案:从传统到现代化的跃迁
  • 湖南省住房和城乡建设厅老网站做网站分为竞价和优化
  • 品牌创意网站建设韩国手机网站模板
  • 力扣3679. 使库存平衡的最少丢弃次数
  • LeetCode:75.前K个高频元素
  • MySQL 基础指令全解析:从入门到熟练操作
  • 南华 NHZ-03/10/13 型滚筒反力式制动检验台:传统制动检测的核心设备
  • 企业网站开发注册网站开发目录结构
  • 做网站哪个公司好 快选宁陵建站宝互联网行业简介