本文主要是介绍linux服务之iSCSI(centos7.6),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在文章的开始,希望大家关注公众号Lind-Learn,在这里会分享各类计算机技术的知识。
1. iSCSI相关介绍
- 数据存储技术
- DAS(Direct Attached Storage,直接附加存储)
本地磁盘接口:IDE SATA SAS SCSI - NAS(Network Attacted Storage,网络附加存储)
网络服务共享:共享的是文件夹。比如Samba、NFS - SAN(Storage Attacted Network,存储附加网络)
网络服务共享:共享的是设备。比如iscsi
- DAS(Direct Attached Storage,直接附加存储)
- iSCSI介绍
iSCSI(internet SCSI)技术是由IBM公司研究开发的,是一个供硬件设备使用的、可以在IP协议的上层运行的SCSI指令集,这种指令集和可以实现在IP网络上运行SCSI协议,使其能够在诸如告诉千兆以太网上进行路由选择。iSCSI是一种新存储技术,它是将享有SCSI接口与以太网络(Ethernet技术结合),使服务器可与使用IP网络的储存装置互相交换资料。
iSCSI:internet小型计算机系统接口是一个基于tcp/ip的协议,用于通过IP网络仿真SCSI高性能本地存储总线,从而为远程块存储设备提供数据传输和管理。
SCSI协议套件提供基于设备总线通信协议的命令描述块(CBD)命令集,iSCSI同样保留了CBD命令集,通过标准tcp/ip封装的iSCSI系统之间执行总线通信。
将设备通过tcp/ip的方式共享到客户端,仿真为本地设备
iSCSI是一个协议,让远程存储服务器通过网络将存储设备共享给本地计算机,让本地计算机像管理智联存储一样可以对共享的设备存储、分区、格式化、挂载使用
iSCSI是一个C/S软件,S端可以同时共享多个存储设备给客户端,S端上的一个LUN(Logical Unit Number,逻辑单元号;真正提供服务的是LUn)代表一个共享设备
- SAN和IPSAN
IPSAN是在SAN后产生的,SAN默认指的是FCSAN(以光纤通道构建存储网络,IPSAN则以IP网络构建存储网络,相较于FCSAN,具有更经济、自由扩展等特点)
注:ISCSI属于ipSAN的技术之一
2. ISCSI服务器部署
- 实验要求
将存储服务器192.158.11.20的sdb磁盘通过网络共享给客户端192.168.11.10机器
共享三个设备(sdb1 10G;sdb2 10G;sdb3 file 3 G)
允许客户端访问共享并实现分区、格式化、挂载存储数据
要求开机自动挂载
# 添加sb*分区
# 添加分区备份文件
[root@Lind dev]# dd if=/dev/sda3 of=/opt/sdb3 bs=1M count=3000# 安装iSCSI服务
[root@Lind ~]# yum -y install targetcli# 设置开机启动
[root@Lind ~]# systemctl enable target;systemctl start target# 通过targetcli命令设置设备共享
# 将设备加入到backstores存储库
# 设置设备全球唯一标识名称IQN
# 设置tpg组定义谁可以从哪个IP及端口访问IQN标识对应的哪些设备[root@Lind ~]# targetcli
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'./> ls
o- / ................................. [...]# 这是存储对象的目录,可以理解为存储后端。你可以在这里定义不同类型的存储设备。o- backstores ...................... [...]# 代表块设备,如硬盘或分区。目前显示 [Storage Objects: 0],意味着还没有配置任何块设备。| o- block ......................... [Storage Objects: 0]# 代表基于文件的存储对象。这里也显示 [Storage Objects: 0],表示没有配置基于文件的存储设备。| o- fileio ........................ [Storage Objects: 0]# 代表经过 SCSI 直通的物理 SCSI 设备。| o- pscsi ......................... [Storage Objects: 0]# 代表基于内存的 RAM 磁盘存储对象。| o- ramdisk ....................... [Storage Objects: 0]# 这是 iSCSI 目标的目录。o- iscsi ........................... [Targets: 0]# 这是 Loopback 目标的目录,通常用于测试目的。o- loopback ........................ [Targets: 0][root@Lind ~]# targetcli
# 将设备加入到backstores存储库
/> cd backstores/block/
/backstores/block> create block1 /dev/sdb1
# Created block storage object block1 using /dev/sdb1.
/backstores/block> create block2 /dev/sdb2
# Created block storage object block2 using /dev/sdb2./backstores> cd fileio
/backstores/fileio> create block /opt/sdb3
# Created fileio block with size 3145728000# 设置设备全球唯一标识名称IQN
# 设置标识符必须按照统一格式
# iqn.年-月.二级域名倒写:共享名
# 删除的话就是把create改成delete
/iscsi> cd /iscsi/
/iscsi> create iqn.2024-08.com.lind:storage
# Created target iqn.2024-08.com.lind:storage.
# Created TPG 1.
# Global pref auto_add_default_portal=true
# Created default portal listening on all IPs (0.0.0.0), port 3260.# 设置谁可以访问
/iscsi/iqn.20....lind:storage> cd /iscsi/iqn.2024-08.com.lind:storage/tpg1/
/iscsi/iqn.20...:storage/tpg1> acls/ create iqn.2024-08.com.lind:client1
# Created Node ACL for iqn.2024-08.com.lind:client1/backstores> cd /iscsi/iqn.2024-08.com.lind:storage/tpg1
/iscsi/iqn.20...:storage/tpg1> luns/ create /backstores/block/block1
# Created LUN 0.
# Created LUN 0->0 mapping in node ACL iqn.2024-08.com.lind:client1
/iscsi/iqn.20...:storage/tpg1> luns/ create /backstores/block/block2
# Created LUN 1.
# Created LUN 1->1 mapping in node ACL iqn.2024-08.com.lind:client1
/iscsi/iqn.20...:storage/tpg1> luns/ create /backstores/fileio/block
# Created LUN 2.
# Created LUN 2->2 mapping in node ACL iqn.2024-08.com.lind:client1# 更换访问ip及端口
/iscsi/iqn.20...:storage/tpg1> portals/ delete 0.0.0.0 3260
/iscsi/iqn.20...:storage/tpg1> portals/ create 192.168.11.20 3260
# Using default IP port 3260
# Created network portal 192.168.11.20:3260.
/iscsi/iqn.20...:storage/tpg1> exit
# Global pref auto_save_on_exit=true
# Last 10 configs saved in /etc/target/backup/.
# Configuration saved to /etc/target/saveconfig.json
3. ISCSI客户端
- 安装客户端服务并启动
[root@Lind ~]# yum -y install iscsi-initiator-utils
- 设置客户端iscsi名称
[root@Lind ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2024-08.com.lind:client1
- 启动iSCSI客户端服务
[root@Lind ~]# systemctl enable iscsi;systemctl start iscsi
# Created symlink from /etc/systemd/system/remote-fs.target.wants/iscsi.service to /usr/lib/systemd/system/iscsi.service.
在客户端有两个服务iscsi、iscsid
这两个的区别是什么呢?iSCSI
- 定义: iSCSI(Internet Small Computer Systems Interface)是一种基于IP网络的存储协议,用于将SCSI命令封装在TCP/IP包中,从而实现通过网络访问远程存储设备。iSCSI使计算机(称为 iSCSI Initiators)能够将远程存储设备(称为 iSCSI Targets)视为本地磁盘。
- 使用场景: iSCSI常用于构建基于以太网的存储区域网络(SAN),特别是在需要通过网络共享存储设备的环境中,比如虚拟化环境、数据中心等。
iscsid
- 定义:
iscsid
是 iSCSI 的守护进程(daemon),它在Linux系统上负责管理 iSCSI 连接和会话。具体来说,iscsid
处理 iSCSI 的发现、登录、认证、连接管理和会话管理等任务。- 功能:
- 管理 iSCSI 目标的发现和登录。
- 处理与 iSCSI 目标之间的连接建立、维护和终止。
- 处理 iSCSI 连接中的事件,如掉线或重新连接等。
- 配置文件:
iscsid
的行为通常由配置文件/etc/iscsi/iscsid.conf
控制,系统管理员可以通过编辑该文件来调整 iSCSI 的配置和行为。联系
- 协同工作:
iSCSI
是一种协议,而iscsid
是该协议在Linux系统上的实现部分。iscsid
守护进程负责管理 iSCSI 协议的运行,确保 Initiator 能够正确地连接到 Target 并保持稳定的连接。- 依赖关系: 在使用 iSCSI 时,
iscsid
是必不可少的组件,它确保 iSCSI 连接的正常工作。Initiator 需要通过iscsid
守护进程与远程的 iSCSI 目标建立通信。
- 访问共享
# 发现设备
[root@Lind send_targets]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.11.20 --discover
# 192.168.11.20:3260,1 iqn.2024-08.com.lind:storage# 查看发现的设备以及相关信息
[root@Lind ~]# ls /var/lib/iscsi/send_targets/
192.168.11.20,3260
[root@Lind ~]# ls /var/lib/iscsi/nodes/
iqn.2024-08.com.lind:storage# 载入
[root@Lind ~]# iscsiadm --mode node --targetname iqn.2024-08.com.lind:storage --portal 192.168.11.20:3260 --login# 分区,直接默认回车就行(因为这里客户端有两个硬盘所以挂载的设备从c开始的)
[root@Lind ~]# fdisk /dev/sdc
[root@Lind ~]# fdisk /dev/sdd
[root@Lind ~]# fdisk /dev/sde# 格式化
[root@Lind ~]# mkfs.ext4 /dev/sdc1
[root@Lind ~]# mkfs.ext4 /dev/sdd1
[root@Lind ~]# mkfs.ext4 /dev/sde1# 挂载
[root@Lind opt]# mkdir /opt/block{1..3}
[root@Lind opt]# vim /etc/fstab
/dev/sdc1 /opt/block1 ext4 _netdev 0 0
/dev/sdd1 /opt/block2 ext4 _netdev 0 0
/dev/sde1 /opt/block3 ext4 _netdev 0 0# 删除
# 删除/etc/fastab对应内容
# unmount对应sd?.?
# 再登出
[root@Lind ~]# iscsiadm --mode node --targetname iqn.2024-08.com.lind:storage --portal 192.168.11.20:3260 --logout
# 再删除iscsi下的nodes和send_tragets对应的目录以及目录中的文件# 查看信息
# 显示简略信息
[root@Lind ~]# iscsiadm --mode node
# 显示详细信息
[root@Lind ~]# iscsiadm --mode node --targetname iqn.2024-08.com.lind:storage --portal 192.168.11.20:3260
这篇关于linux服务之iSCSI(centos7.6)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!