Kylin麒麟操作系统服务部署 | ISCSI存储服务
以下所使用的环境为:
虚拟化软件:VMware Workstation 17 Pro
麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64
一、网络存储结构
网络存储技术(Network Storage Technologies)是基于数据存储的一种通用术语。网络存储结构分为以下三种:
- DAS直连式存储:直接与主机系统相连接的存储设备(硬盘、光盘)
- NAS网络存储设备:直接与网络介质相连的特殊设备以实现数据存储(NFS、Samba、CIFS)
- SAN存储区域网络:存储设备相连企鹅与一台服务器或服务器群相连形成网络(FC-SAN、IP-SAN)
NAS和SAN的区别
- NAS使用TCP/IP传输数据;SAN使用SCSI或iSCSI协议传输数据
- NAS采用NFS和CIFS技术实现文件共享,基于操作系统的“文件级“读写操作
- SAN采用底层块协议,根据协议头的“块地址+偏移地址”,无需操作系统也可以正常识别
FC-SAN和IP-SNA的区别
- FC-SAN以光纤为介质构建存储网络,通过光纤通道协议转发scsi协议
- IP-SAN以IP网络构建存储网络,现对于FC-SAN更加经济实惠,通过TCP协议转发scsi协议
二、ISCSI存储概念
ISCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标志,它是一种基于IP Storage理论的新型存储技术,通过将SCSI接口和IP网络相结合,可以在IP网络上构建SAN存储区域网络。可以理解为:iSCSI=IP+SCSI。
ISCIS技术优势
- 将用于本机的SCSI通过TCP/IP网络传输,只要IP可达,可无视地域
- 连接的服务器数量不受限制(原有的SCSI-3最大连接数为15)
- 基于服务器架构,可以实现在线扩容
ISCSI Target
被用于存储数据的iscis磁盘或具有iscsi功能的设备都可以被称为“ISCSI Target”。利用ISCSI Target可以将服务器的存储空间分配给客户端使用,客户端就可以像本地磁盘一样使用iscsi磁盘。
iSCSI initiator
iSCSI initiator是一个安装在系统上的软件或硬件设备,负责与iscis存储设备进行通信。

三、targetcli服务
targetcli支持通过普通命令方式使用或交互式使用。通过targetcli可以创建、删除和配置iSCSI目标,在交互式中,可以直观呈现目标的层级树,方便浏览和配置,支持使用Linux基本命令,如cd、ls、pwd等。
安装targetcli,麒麟操作系统默认已经安装好targetcli
yum install -y targetcli

进入交互模式
targetcli

1. 目录内容解析
查看当前目录内容
ls

- backstores:存储目录
- block:块设备,如:磁盘驱动器、磁盘分区、逻辑卷(类型标识符为b的设备文件)
- fileio:文件存储,将文件模拟成磁盘,类似于虚拟机中的1个文件代表1个磁盘
- pscsi:物理SCSI
- ramdisk:内存中的1个指定大小的内存存储,也就是使用内存模拟磁盘
3. iscis目录解析
默认情况下,iscis目录为空。当我们在iscsi目录下创建iscis target时,会自动生成目录
- 在创建IQN的同时会自动创建一个默认的TPG
- iscsi:目标目录
- acls:设置允许连接的客户端,通过iqn或IP地址限定
- luns:逻辑单元号,指向物理存储
- portals:映射的IP地址和端口号

3. LUN
目标要提供客户端对存储或输出设备的访问,需要配置一个或多个逻辑单元号(LUN)。在ISCSI中,LUN显示为目标的连续编号的磁盘驱动器,一般来说,目标只有一个LUN。iSCIS通过ACL限制启动器是否可以访问LUN。
LUN的全称是Logical Unit Number(逻辑单元号),是SCSI中的概念。块存储对象只要加入target存储系统,就会分配1个代号。在区分块设备时只需要说 target 中的 LUN号码,块存储对象被指定了一个LUN后,成为了一个“逻辑”磁盘,供存储客户端使用。
通俗的理解:将后端存储设备中的设备理解为房间,LUN理解为房号。客户端如果要访问该房间,只需要知道该房号即可访问。
四、ISCSI服务部署(基于磁盘)
节点设置
| 主机 | 网络信息 | 说明 |
|---|---|---|
| Kylin-1 | 192.168.110.1/24 | 存储服务器 |
| Kylin-2 | 192.168.110.2/24 | 测试客户端 |
[Step1]: Kylin-1配置:添加3块10G硬盘

[Step2]: Kylin-1配置:安装ISCIS存储服务器端
yum install -y targetcli
[Step3]: Kylin-1配置:创建块存储对象
cd /backstores/block # 进入块设备存储目录
create 10G-1 /dev/sdb # 新建块设备
create 10G-2 /dev/sdc
create 10G-3 /dev/sdd
- **create:**新建块设备
- **10G-1:**块设备名称
- **/dev/sdb:**块设备路径

[Step4]: Kylin-1配置:切换到iSCIS目录,创建ISCSI Target
cd /iscsi
create iqn.2024-09.com.meaauf # 名称可以自定义

[Step5]: Kylin-1配置:切换到luns目录下,将block目录下的块存储加入luns目录下
cd iqn.2024-09.com.meaauf/tpg1/luns
create /backstores/block/10G-1
create /backstores/block/10G-2
create /backstores/block/10G-3

[Step6]: Kylin-1配置:切换到acls目录下,为initator客户端创建ACL访问(客户端连接器)
cd ../acls
create iqn.2024-09.com.meaauf.Kylin-2

[Step7]: Kylin-1配置:切换到portals目录下,指定新的监听地址和端口号
cd ../portals/
delete 0.0.0.0 3260 # 删除默认监听端口 3260
create 192.168.110.1 3260 # 添加监听端口

[Step8]: Kylin-1配置:设置允许连接的用户和密码
cd ../acls/iqn.2024-09.com.meaauf.kylin-2/
set auth userid=admin
set auth password=kylin2024

[Step9]: Kylin-1配置:查看当前配置
ls /

[Step10]: Kylin-1配置:可以手动保存后退出,也可以直接退出(退出会保存当前配置)
cd /
saveconfig

[Step11]: Kylin-1配置:启动target服务并加入到开机自启,调整防火墙策略,放行3260端口
systemctl enable --now target.service
firewall-cmd --add-port=3260/tcp --permanent
firewall-cmd --reload
[Step12]: Kylin-2配置:配置ISCSI存储客户端
yum -y install open-iscsi
[Step13]: Kylin-2配置:配置ISCSI Initiator客户端连接器名称
vim /etc/iscsi/initiatorname.iscsi# 修改内容如下,InitiatorName必须和服务端acls中设置值一致
InitiatorName=iqn.2024-09.com.meaauf.Kylin-2
[Step14]: Kylin-2配置:修改iscsid配置文件
vim /etc/iscsi/iscsid.conf# 添加下列内容
node.session.auth.authmethod = CHAP
node.session.auth.username = admin
node.session.auth.password = kylin2024

[Step15]: Kylin-2配置:重新启动iscsid服务
systemctl restart iscsid.service
[Step16]: Kylin-2配置:发现远程可用的iSCSI服务器节点
iscsiadm -m discovery -t sendtargets -p 192.168.110.1
iscsiadm -m discovery -t st -p 192.168.110.1
- -m discovery:发现操作
- -t sendtargets:指定发现类型为 sendtargets
- -p 192.168.110.1:指定iSCSI目标门户地址

[Step17]: Kylin-2配置:登录远程可用的iSCSI服务器节点
iscsiadm -m node --login

[Step18]: Kylin-2验证:查看本地裸设备,可以看到新增了3块10G硬盘
lsblk

[Step19]: Kylin-2验证:卸载指定的iSCSI存储设备
iscsiadm -m node -T iqn.2024-09.com.meaauf -u

五、ISCSI服务部署(基于文件)
节点设置
| 主机 | 网络信息 | 说明 |
|---|---|---|
| Kylin-1 | 192.168.110.1/24 | 存储服务器 |
| Kylin-2 | 192.168.110.2/24 | 测试客户端 |
[Step1]: Kylin-1配置:创建1个文件,模拟磁盘
dd if=/dev/zero of=/dev/file bs=1M count=2048 # 创建1个2G的文件,文件名为 /dev/file
- if=/dev/zero:指定源文件
- of=/dev/file:指定输出文件
- bs=1M:设置块大小,dd命令每次写入1M的数据
- count=2048:复制的块数为2048
[Step2]: Kylin-1配置:创建iscis文件存储,进入fileio目录下
targetcli
> cd /backstores/fileio
> create file /dev/file

[Step3]: Kylin-1配置:创建逻辑单元号
cd /iscsi/iqn.2024-09.com.meaauf/tpg1/luns/
create /backstores/fileio/file

[Step4]: Kylin-1配置:创建客户端ACL,这里我们使用和上述一样的ACL规则
cd ../acls/

[Step5]: Kylin-1配置:退出
exit
[Step6]: Kylin-2配置:发现远程可用的iSCSI服务器节点,登录iSCSI服务器节点
iscsiadm -m discovery -t sendtargets -p 192.168.110.1
iscsiadm -m node --login

[Step7]: Kylin-2验证:查看本地裸设备,可以看到新增了1块2G硬盘

相关文章:
Kylin麒麟操作系统服务部署 | ISCSI存储服务
以下所使用的环境为: 虚拟化软件:VMware Workstation 17 Pro 麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64 一、网络存储结构 网络存储技术(Network Storage Technologies)是基于数据存储的一种通…...
数据结构_单链表
今天我们要开启链表的学习 🖋️🖋️🖋️ 学了顺序表我们可以知道: 🎈链表其实就是争对顺序表的缺点来设计的,补足的就是顺序表的缺点 🎈链表在物理上是上一个节点存放的下一个节点的地址 链表 …...
深陷帕金森困境,怎样重燃生活信心?
帕金森,这个悄然影响无数中老年人生活的神经系统疾病,正逐渐走进大众视野。患病后,患者常出现静止性震颤,安静时手部、下肢不自主抖动,如同在默默诉说着身体的异常。肢体变得僵硬,行动迟缓,起步…...
C语言(23)
字符串函数 11.strstr函数 1.1函数介绍: 头文件:string.h char *strstr ( const char * str1,const char *str2); 作用:在一个字符串(str1)中寻找另外一个字符串(str2)是否出现过 如果找到…...
Docker运行hello-world镜像失败或超时:Unable to find image ‘hello-world:latest‘ locally Trying to pull reposi
Docker运行hello-world镜像失败或超时,报错:Unable to find image ‘hello-world:latest’ locally Trying to pull repository docker.io/library/hello-world … /usr/bin/docker-current: missing signature key. See ‘/usr/bin/docker-current run …...
Linux内核如何和设备树协同工作的?
1.编写设备树 cd arch/riscv/boot/dts/ 再cd到厂商,例如下述内容。 2.编译设备树(dts->dtb)通过dtc命令来转换 3.解析设备树 例如上述内容,都是对设备树的解析。 这里重点说一下内核对设备树的处理吧,因为这个内…...
electron的通信方式(三种)
文章目录 一、渲染进程向主进程发送消息二、渲染进程向主进程发送消息并异步获取结果三、主进程向渲染进程发送消息 electron的主要是主线程和渲染线程之间的通信,简单记录一下三种通信方式 一、渲染进程向主进程发送消息 利用ipcRenderer.send()和ipcMain.on()方法…...
LLM中的transformer结构学习(二 完结 Multi-Head Attention、Encoder、Decoder)
文章目录 LLM中的transformer结构学习(二 完结 Multi-Head Attention、Encoder、Decoder)Self-Attention (自注意力机制)结构多头注意力 EncoderAdd & Norm 层Feed Forward 层 EncoderDecoder的第一个Multi-Head AttentionMas…...
高效编程指南:PyCharm与DeepSeek的完美结合
DeepSeek接入Pycharm 前几天DeepSeek的充值窗口又悄悄的开放了,这也就意味着我们又可以丝滑的使用DeepSeek的API进行各种辅助性工作了。本文我们来聊聊如何在代码编辑器中使用DeepSeek自动生成代码。 注:本文适用于所有的JetBrains开发工具,…...
嵌入式c学习四
c语言的输入输出:ANSI组织发布的标准c库,使用函数需要包含对应头文件,使用输入输出函数时需要包含stdio.h (stdio -> standard input output)标准输入输出 格式化输出:int printf(const char * restrict format, ...)…...
爱可以传递,幸福可以具象化
遇到什么:晚上上课学生吵吵吵,把学生手机全部收了,放讲台上。 感受到的情绪:很烦躁。 反思:收手机也不是长久之计,可是物理有什么翻转课堂呢? 明天的待办事项:早上高数选修课&#x…...
力扣-数组-367 有效的完全平方数
思路和时间复杂度 思路:利用二分,确定区间是左闭右闭,然后根据大小进行二分时间复杂度: 代码 class Solution { public:bool isPerfectSquare(int num) {bool flag false;if(num 0 || num 1) return true;long long …...
Java关键字与标识符
Java关键字是预定义的保留字,用于定义程序结构和语义,如if、for、class等,不能用作标识符。JDK 8有50个关键字,JDK 11引入var用于局部变量类型推断。标识符用于命名变量、类等,由字母、数字、_、$组成,不能…...
【神经网络】python实现神经网络(二)——正向推理的模拟演练
一.神经网络假设 在开始讲解之前,首先我们假设有这样一套神经网络,一共有三层: 其中,关于神经网络的权重、偏置的符号定义如下(如果不知道什么是权重和偏置,可以参考我之前写过的一篇文章:【机器学习】机器学习是什么意思): 以下文章将沿用以上这个设…...
DeepSeek模型本地化部署方案及Python实现
DeepSeek实在是太火了,虽然经过扩容和调整,但反应依旧不稳定,甚至小圆圈转半天最后却提示“服务器繁忙,请稍后再试。” 故此,本文通过讲解在本地部署 DeepSeek并配合python代码实现,让你零成本搭建自己的AI…...
Rust规律归纳随笔
1. 针对所有权规则: 唯一所有权 <------------> 智能指针(引用计数)<-------------->共享所有权 (引用计数) { 单线程:Rc 多线程:Arc } 2. 针对借用规则: 共享不可变(多读)<----->…...
Houdini SOP层 Scatter节点
SOP 代表 Surface Operator(几何体操作节点),所有几何体的建模、变形、分布等操作都在此层级完成。 Scatter节点的作用就是 以不同的密度在模型表面撒点 Scatter 节点属于 SOP(几何体)层级: 进入 Geometr…...
Win7 火狐浏览器 Mozilla Firefox 115.7.0esr下载地址(及Chrome、Supermium浏览器)
如题,官网下载地址: Mozilla Firefox 115.7.0esr 已经发布,感兴趣的朋友可去官方下载! https://ftp.mozilla.org/pub/firefox/releases/115.7.0esr/ 其他方案: 1、谷歌 Chrome 浏览器的 109版本,即最后一…...
Docker 学习笔记:从入门到部署,实战演练全流程!
📌 开篇:为什么要学 Docker? 还在为环境不一致、部署麻烦、依赖冲突头疼吗?Docker 让一切变得简单!作为现代开发和运维的神器,Docker 让我们可以用 一句命令 解决 “在我电脑上能跑” 的问题。今天&#x…...
【网络安全工程】任务12:网络安全设备
目录 一、防火墙 1、作用 2、配置方式 3、存在的漏洞 二、入侵检测系统(IDS)和入侵防御系统(IPS) 1、作用 2、配置方式 3、存在的漏洞 三、防病毒网关 1、作用 2、配置方式 3、存在的漏洞 …...
Linux 进程控制:创建、终止、等待与程序替换全解析
亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 目录 1.进程创建 1-1 fork函数初识 1-2 fork函数返回值 1-3…...
SwiftUI 让视图自适应高度的 6 种方法(四)
概览 在 SwiftUI 的世界里,我们无数次都梦想着视图可以自动根据布局上下文“因势而变”。大多数情况下,SwiftUI 会将每个视图尺寸处理的井井有条,不过在某些时候我们还是得亲力亲为。 如上图所示,无论顶部 TabView 容器里子视图…...
机器学习中的梯度下降是什么意思?
梯度下降(Gradient Descent)是机器学习中一种常用的优化算法,用于最小化损失函数(Loss Function)。通过迭代调整模型参数,梯度下降帮助模型逐步逼近最优解,从而提升模型的性能。 1.核心思想 梯…...
opencv-显示图片
安装软件 sudo apt install python3 //确保虚拟机只有python3 ln -sf /usr/bin/python3.6 /usr/bin/python sudo apt install python3-pip pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple pip install opencv-contrib-python -i https://pypi.tuna…...
sap关账+策略模式(避免大量if elseif)
旧代码 Transactional(rollbackFor Exception.class)public AjaxResult purchaseOrderReceiptOutSourceAfterSapCloseAccountingPeriod(Long id) {SysPurorderPostingLog sysPurorderPostingLog sysPurorderPostingLogMapper.selectSysPurorderPostingLogById(id);if (Object…...
EverArt MCP 服务器安装调试笔记 -cline
EverArt MCP 服务器安装调试笔记 问题描述 用户在使用 EverArt MCP 服务器时遇到报错:“MCP error -1: Connection closed”。 调试过程 检查配置文件 cline_mcp_settings.json: 确认 everart 服务器的配置信息,包括 command、args 和 env 是否正确。…...
1035.不相交的线
1035.不相交的线 力扣题目链接(opens new window) 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足: nums1[i] nums2[j]且绘制的直线…...
Django-ORM-select_related
Django-ORM-select_related 作用使用场景示例无 select_related 的查询有 select_related 的查询 如何理解 "只发起一次查询,包含所有相关作者信息"1. select_related 的工作原理2. 具体示例解析3. 为什么只发起一次查询 数据库中的books量巨大࿰…...
2001-2023年上市公司数字化转型年报词频统计(年报词频统计和MDA词频统计两种方式)(吴非、赵宸宇、甄红线300+关键词三种方法)
2001-2023年上市公司数字化转型年报词频统计(年报词频统计和MD&A词频统计两种方式)(吴非、赵宸宇、甄红线300关键词三种方法) 1、时间:2001-2023年 2、来源:上市公司年报 3、参考文献: …...
IO多路复用实现并发服务器
一.select函数 select 的调用注意事项 在使用 select 函数时,需要注意以下几个关键点: 1. 参数的修改与拷贝 readfds 等参数是结果参数 : select 函数会直接修改传入的 fd_set(如 readfds、writefds 和 exceptfds…...
