RHCE(十五)网络存储——iSCSI

网络存储分类

网络存储大致分为三类:

  • 直连式存储(DAS:Direct Attached Storage)
  • 网络接入存储(NAS:Network Attached Storage)
  • 存储区域网络(SAN:Storage Area Network)

DAS(Direct Attached Storage—直接附加存储)

DAS是将存储设备通过SCSI接口或者光纤通道直接连接到一台服务器。

连接方式

DAS连接存储设备一般由两种方式:

  • SCSI接口:SCSI是一种计算机系统I/O技术的标准
  • FC光纤通道:光纤传输通道,低时延、大带宽

局限性

DAS存储依赖服务器操作系统进行I/O读写,数据的备份和恢复都要占用服务器的主机资源比如CPU、系统I/O等,SCSI通道会成为IO瓶颈,而且服务器的SCSI ID资源有限,能够建立的SCSI通道连接有限。因此,企业用户的数据备份工作一般在深夜或者业务系统不繁忙时进行,以免影响业务系统的正常运行。
DAS存储无法共享,每个应用服务器都由自己的存储器。

应用场合

主要用于中小企业

NAS(Network Attached Storage-网络附加存储)

存储设备和服务器彻底分离,存储设备通过标准的以以太网连接到需要存储服务的计算机。
NAS存储基于TCP/IP协议的网络文件存储服务,体现NFS、SMB等网络共享服务。
NAS设备通常使用瘦客户端即简版的操作系统,提供最单纯的档案服务和相关的通讯协议,很多玩家使用树莓派搭建NAS系统。

连接方式

通过标准的LAN方式连接存储系统,使用TCP/IP协议,支持 常用的NFS、SMB等服务。

局限性

备份过程中消耗带宽,使用网络进行备份和恢复。
NAS一般没有高可用性配置,容易形成单点故障。

应用场合

文件共享:图片、电影、文档等。
跨平台:支持多种计算机平台

SAN((Storage Area Network-存储区域网络)

采用FC(Fibre Channel)光纤通道或者Ethernet进行远距离传输,使用光纤通道交换机连接存储阵列和服务器主机,成为一个专用存储网络,这个专用存储网络不支持TCP/IP协议。
由于使用了光纤接口(FC接口),SAN具有更高的带宽。
SAN存储通过光纤交换机将磁盘空间分配给不同的服务器,服务器通过以太网提供对外服务,存储区域与用户区域是相互隔离的。

FC-SAN

由磁盘阵列(RAID)连接光纤通道(Fibre Channel)组成。
SAN存储网络的服务器和客户机的数据通信通过SCSI命令而不是TCP/IP协议,数据处理的单位是“块级".
在FC-SAN中,需要专用的硬件和软件。
硬件包括FC卡、FC HUB、FC交换机、存储系统等。
软件主要是各类操作系统的驱动程序和存储管理软件。

IP-SAN

IP-SAN的通信通道是IP,而不是光纤通道。使用iSCSI标准,不兼容TCP/IP。
iSCSI是一种运行在IP网上的,适合以太网进行数据块传输标准。iSCSI实现了在IP网络上运行SCSI协议。允许用户通过TCP/IP网络构建存储区域网。

局限性

成本高

SAN应用

SAN存储网络由于具有高带宽、独立的存储网络、管理便捷等特点。SAN主要用于存储量大的工作环境,如ISP、银行等。

DAS、NAS、SAN比较

应用场景的比较

  • DAS比较古老了,很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业;
  • NAS多适用于文件服务器,比如文档、图片、静态网页等,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低;
  • SAN则适用于大型应用或数据库系统,缺点是成本高、较复杂。

在这里插入图片描述

SCSI

SCSI 小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。

SCSI 协议

SCSI协议主要是在主机和存储设备之间传送命令、状态和块数据。在各类存储技术中,SCSI协议可谓是最重要的脊梁。
操作系统对外部设备(如磁盘、磁带、光存储、打印机和扫描仪)的I/O操作,可以通过SCSI协议来实现,一般情况下SCSI协议都嵌入到设备驱动器或者主机适配器的板载逻辑中。
因为SCSI协议层位于操作系统和外部资源之间,它具有不同的功能组件。例如,应用程序一般将数据作为文件或者记录来访问。尽管数据最终都将在磁盘或者磁带介质上以数据块的方式存放,但是文件的检索需要一系列功能将未加工的块数据装配成应用程序能够操作的连续文件。
(SCSI协议可以理解它为块级别的存储协议。它是一种I/O技术,让数据以块的方式进行传输的一种协议规范。这个术语也常被用来指称运行该协议的并行线缆机制,将磁盘和磁带设备连接到应用服务器上的一种总线机制 。)
(SCSI 实现了一种客户机/服务器风格的通信架构。发起者向目标设备发送命令请求。该目标处理此请求并向发起者返回响应。发起者可以是托管计算机中的一个 SCSI 设备,而 SCSI 目标则可以是一个磁盘、光盘和磁带设备或特殊设备)

SCSI通信模型

服务端的Traget通过任务分发器进行任务调度,进而控制逻辑单元。
在这里插入图片描述

SCSI通信过程

在这里插入图片描述

SCSI 协议模型

为了便于实现和理解SCSI的各个协议,SCSI 采取了分层结构。 SCSI 大致可分为三层,即SCSI应用层,SCSI 传输层和SCSI 互连层。 SCSI中的各个具体协议一般都位于其中的某一层,可以可能跨越两层。

  • 应用层,SCSI 体系结构把发起方(主机)和目标方(如磁盘)的通信定义为客户/服务器交换。SCSI
    客户位于主机中,代表上层应用程序,文件系统和操作系统I/O请求。 SCSI 设备服务器位于目标设备中,对请求做出响应。
    客户/服务器请求和响应通过某种形式的底层协议进行传输。
  • 传输协议层,SCSI 设备之间通过一系列的命令实现数据的传送,大致分成三个阶段:命令的执行,数据的传送和命令的确认。
  • SCSI 互联层完成SCSI设备对总线的连接以及发送方和目标方的选择等功能。

SCSI总线

把磁盘和磁带设备连接到应用服务器或文件服务器,最常用的方法就是通过传统的 SCSI总线。尽管 SCSI主要是一个块协议,但这个术语也被用来指称运行该协议的并行线缆机制。

作为一种介质,SCSI定义了一个并行总线,用于数据传输和通信控制。总线本身可以是印制导线的形式,也可以是一根电缆。外部 SCSI设备使用电缆以菊花链的形式连接到服务器上的控制器。在菊花链中,每个设备都跟其他设备串接。由于这个原因,外部 SCSI设备典型地都有两个 SCSI连接器,可以分别连接到链中的前一个设备和后一个设备。现在的一个 SCSI 总线可以连接多至 16个设备。其中包括1 个SCSI控制器和 15个存储装置。

SCSI 类型

SCSI有三个基本规范:
SCSI-1:SCSI-1是在1986年开发的原始规范,现已不再使用。它规定总线宽度为8位,时钟速度为5MHz。

SCSI-2:1994年采用,此规范包括通用指令集(CCS)——支持任何SCSI设备所必需的18个命令。在此规范中,可以选择将时钟速度提高一倍,达到10MHz (Fast),将总线宽度增加为原来的两倍,即16位,将设备数增加为15个(Wide),或者同时实现上述两种升级(Fast/Wide)。SCSI-2还增加了命令队列,允许设备存储命令,并从主机排列命令优先级。

SCSI-3:此规范于1995年正式出台,包括一系列较小范围的标准。涉及SCSI并行接口(SPI)的一组标准在SCSI-3中得到了继续发展,SPI是SCSI设备之间的通信方式。大多数SCSI-3规范都以Ultra开头,如Ultra for SPI规范、Ultra2 for SPI-2规范和Ultra3 for SPI-3规范。名称中的Fast和Wide的含义与SCSI-2中的一样。SCSI-3是当前正在使用的标准。

ISCSI

iSCSI协议:它是将SCSI报文封装成iSCSI报文,然后在进行二次封装成TCP/IP报文,最后借助于以太网传输,用双绞线(网线)组成IP SAN存储网络

ISCSI相当于文件共享协议,直接共享存储设备,把一块盘共享出去,可以自定义文件系统类型来存放数据信息,在当前主机上存放数据,例如在Linux上执行touch a 写操作,这个命令先通过shell做一个解析,通过操作系统运行,最终通过CPU接受这个指令,并控制SCIS适配器,基于SCIS适配器去对存储设备进行写入操作,写操作的标准协议是SCIS协议,SCIS适配器所连接的SCIS设备基于线缆传输。

ISCSI的工作流程

  1. iSCSI系统由SCSI适配器发送一个SCSI命令。
  2. 命令封装到TCP/IP包中并送入到以太网络。
  3. 接收方从TCP/IP包中抽取SCSI命令并执行相关操作。
  4. 把返回的SCSI命令和数据封装到TCP/IP包中,将它们发回到发送方。
  5. 系统提取出数据或命令,并把它们传回SCSI子系统。

ISCSI 服务中的概念

TPG:共享存储组,某个特定iSCSI目标要侦听的接口IP地址和TCP端口的集合。可以将目标配置添加到TPG以协调多个LUN的设置。
ACL:访问权限控制列表,一种使用节点IQN(通常是启动器名称)来验证启动器的访问权限的访问限制
IQN:iSCSI限定名称,全球唯一名称,用于以强制命名格式来识别启动器和目标。IQN格式如下:

iqn.YYYY-MM.com.reversed.domain[:optional_string]

LUN:逻辑单元号,带有编号的块设备,连接到目标且通过目标来使用。可以有一个或多个LUN连接到单个目标,但通常一个目标提供一个LUN
portals入口:目标或启动器上用于建立的IP地址和端口。 3260

配置ISCSI 服务

服务端配置

1、准备一个分区

#创建分区
[root@mail ~]# fdisk /dev/sda
n  
P
Enter
Enter
Enter
W
#重新读取分区表
partprobe  

2、准备一个空磁盘

#确认/dev/sdb设备
[root@mail ~]# fdisk -l

3、安装服务端软件

[root@mail ~]# yum install -y targetcli

4、查看iscsi,并解读其结构

[root@mail ~]# targetcli
#使用ls命令查看菜单结构
/> ls
o- / ....................................................................... [...]
  o- backstores ............................................................ [...]  后备存储
  | o- block ................................................ [Storage Objects: 2]    块设备
  |   | | o- LUN1 ........................ [/dev/sdb (10.0GiB) write-thru deactivated]
  | o- fileio ............................................... [Storage Objects: 0] 文件存储
          | o- LUN0 ....................... [/dev/sda5 (17.8GiB) write-thru deactivated]
 | o- pscsi ................................................ [Storage Objects: 0] 物理scsi
  | o- ramdisk .............................................. [Storage Objects: 0] 闪存
  o- iscsi .......................................................... [Targets: 2] create创建,两个分别将sdb  sda5 共享出去

4、创建LUN

#创建sda5分区为LUN0
/backstores/block> create name=LUN0 dev=/dev/sdb

#创建磁盘/dev/sdb为LUN1
/backstores/fileio> create name=LUN1 file_or_dev=/dev/sda5

#使用ls命令来查看创建的结果
/backstores/block> ls

6、创建IQN
注意:在7.0版本中,创建target不会自动创建portal,但是在7.2版本中会自动创建portal,如果需要自定义ip和端口,需要在创建target之前关闭自动创建portal功能

/iscsi>set group=global auto_add_default_portal=false

#使用ceate命令来创建一个IQN,我们的示例需要两个,所以执行两次该命令
/iscsi> create iqn.2019-04.com.example.group8.system1.x8664:sn432856924528

使用ls命令查看IQN的创建结果
/iscsi> ls

  | o- iqn.2003-01.org.linux-iscsi.mail.x8664:sn.138cf1e3c10f .......... [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]
  | o- iqn.2003-01.org.linux-iscsi.mail.x8664:sn.35c71b41d217 .......... [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]
  o- loopback ....................................................... [Targets: 0]

7、配置权限

#切换到tpg1目录,配置演示模式权限
/iscsi/iqn.20...f1e3c10f/tpg1> 

#执行以下命令
/iscsi/iqn.20...f1e3c10f/tpg1> set attribute authentication=0 demo_mode_write_protect=0  generate_node_acls=1 cache_dynamic_acls=1
                                             属性认证关闭       演示模式写保护关闭            生成节点acl           缓存动态acl

8、添加luns

#添加LUN0到第一个IQN
/iscsi/iqn.20...10f/tpg1/luns> create /backstores/block/LUN0

#添加LUN1到第二个IQN

/iscsi/iqn.20...217/tpg1/luns> create /backstores/fileio/LUN1
#创建完成后,切换到iscsi目录,使用ls命令查看创建结果
/iscsi> ls

9、创建portal 接口

#在第一个IQN中创建portal
/iscsi/iqn.20.../tpg1/portals> create 192.168.171.143 3260

#在第二个IQN中创建portal
/iscsi/iqn.20.../tpg1/portals> create 192.168.171.143 3261

#创建完成后,切换到iscsi目录,使用ls命令查看创建结果
/iscsi> ls

10、启动服务
配置完成后,使用exit命令退出程序,该程序会自动保存配置到配置文件中

#退出target
/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json

#启动服务
[root@mail ~]# systemctl restart target
#查看服务状态
[root@mail ~]# systemctl status target

windows客户端验证

使用iscsi发起程序

linux客户端验证

安装iscsi客户端软件

#确认客户端是否安装
[root@localhost ~]# yum install iscsi-initiator-utils.i686
#查看当前虚拟机的磁盘分区情况发现目标,以下命令:
[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 192.168.171.143

这是全命令(iscsi辅助工具 )
iscsiadm --mode discovery --type sendtargets --portal  192.168.171.143
		   模式发现          类型                发送目标门户

登录服务器上的一个或多个iscsi目标
1、手动挂载

#挂载命令格式:
iscsiadm --mode node --targetname iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.0f6a7f1386fc --portal 172.25.0.129:3261 --login
如下所示:
[root@localhost ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.mail.x8664:sn.5e7307059fbf -p 192.168.171.143:3261 -l
#查看:
[root@localhost ~]# fdisk -l
[root@localhost ~]# lsscsi
#查看和区分
[root@localhost ~]# ll /dev/disk/by-path/
#查看日志
[root@localhost ~]# grep sdb /var/log/messages

2、配置开机自动挂载

注意:必须使用UUID,否则会出问题,同时在参数中添加_netdev。
UUID=33899a29-9f9e-476f-b8e9-cc9ad0986dac /mnt   xfs     defaults,_netdev   0  0

添加_netdev参数的原因:当计算机开机首先是bios自检查找硬盘中的操作系统引导启动,但是当系统没有完全启动时计算机就没有通过网络通讯,而iscsi是基于网络的共享存储,所以开机重启需要告诉内核这条开机挂在是基于网络的存储。

删除命令

targetcli iscsi/ delete iqn.2003-01.org.linux-iscsi.mail.x8664:sn.5e7307059fbf
原创文章 102 获赞 105 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43624033/article/details/105767135