共享存储(一)- 块存储 iSCSI
00 分钟
2024-5-27
2024-6-20
type
status
date
slug
summary
tags
category
icon
password
文章状态

共享存储

集群多节点都需要访问数据,如果各节点访问同一个数据文件都是在同一个存储空间内的,就是说数据共享的就一份,而这个存储空间就共享存储
📢
如 Web 或 Mysql 集群,他们的数据一般需要放在共享存储中,主节点能访问,从节点也能访问。当然这也不是必须的,如可以通过 rsync 来同步分别存储在主、从节点上的块数据,而且相对共享存储实现成本更低,具体使用什么需要根据实际场景来选择。
下面是一些共享存储的类型:
  • DAS
    • Direct attached storage,直接附加存储
      存储设备直接连接到主机总线上的,距离有限,而且还要重新挂载,之间有数据传输有延时;
  • NAS
    • network attached storage,网络附加存储
      文件级别交互的共享,各存储设备通过文件系统向集群各节点提供共享存储服务,是用 C/S 框架协议来实现通信的应用层服务。
  • SAN
    • storage area network、存储区域网络
      块级别的,将通信传输网络模拟成 SCSI(Small Computer System Interface)总线来使用,节点主机(initiator)和 SAN 主机(target)都需 SCSI 驱动,并借助网络隧道来传输 SAN 报文,所以接入到 SAN 主机的存储设备不一定需要是 SCSI 类型的。
 
📢
SAN 与 NAS / iSCSI 与 NFS
SAN 与 NAS 是完全不同架构的存储方案,前者支持 Block 协议,后者则支持 File 协议;SAN 结构中,文件管理系统(FS)还是分别在每一个应用服务器上,会产生 I/O 操作,而 NAS 则是每个应用服务器通过网络共享协议(如:NFS、CIFS)使用同一个文件管理系统,所以 CPU 密集型应用可以选用 NAS 。
SAN 是将目光集中在磁盘、磁带以及联接它们的可靠的基础结构,而 NAS 是将目光集中在应用、用户和文件以及它们共享的数据上,显得更"高级"。将来从桌面系统到数据集中管理到存储设备的全面解决方案将是 NAS 加 SAN 。
以上区别具体到 iSCSI 和 NFS:
iSCSI 可优化空间更大,性能稍好,但技术难度更高;
而 NFS 在系统层面的支持更多,像一些备份、恢复等操作较简单。
 
初级:
xfsext4 等计算机本地文件系统
中级:
NFSSamba(即 CIFS 文件系统)等网络服务(局域网较多使用)
网络文件系统的还原:文件会经过两次二进制转换
高级:
块存储分布式存储

块存储原理

服务器端不写入文件系统,将分区直接共享给客户机
客户机按照预先定义的文件系统进行计算,计算完毕后直接写入块存储共享点中;类似于网络共享磁盘,客户机也可以对该共享点分区。
性能: 块存储 > 网络文件系统

ISCSI

什么是 ISCSI ?

Internet Small Computer System Interface,Internet 小型计算机系统接口
是一种由 IBM 公司研究开发的 IP SAN 技术,该技术是将现有 SCSI 接口 与以太网络(Ethernet)技术结合,基于 TCP/IP 的协议连接 iSCSI 服务端(Target)和客户端(Initiator),使得封装后的 SCSI 数据包可以在通用互联网传输,最终实现 iSCSI 服务端 映射为一个存储空间(磁盘)提供给已连接认证后的客户端。
📢
SCSI(Small Computer System Interface)是一种 I/O 技术,规范了一种并行的 I/O 总线和相关的协议,SCSI的数据传输是以 的方式进行的。
SCSI 总线通过 SCSI 控制器来和硬盘之类的设备进行通信, SCSI 控制器称为 Target,访问的客户端应用称为 Initiator。
LUN(Logical Unit Number,逻辑单元号)是为了使用和描述更多设备及对象而引进的一个方法,每个 SCSI ID 上最多有32个LUN,一个 LUN 对应一个逻辑设备。

iSCSI 实现

  • iSCSI Initiator
    • iSCSI 启动器,从本质上说,iSCSI 启动器是一个客户端设备,用于将请求连接并启动到服务器(iSCSI 目标)。
  • iSCSI Target
    • 即 iSCSI 目标,它是 iSCSI 网络的服务器组件,通常是一个存储设备,用于包含所需的数据并回应来自 iSCSI 启动器的请求。

工作过程

Initiator 发出请求后,会在本地的操作系统会生成了相应的 SCSI 命令和数据 I/O 请求,然后这些命令和请求被封装加密成 IP 信息包,通过以太网(TCP/IP)传输到Targer。
当 Targer 接收到信息包时,将进行解密和解析,将 SCSI 命令和 I/O 请求分开。SCSI命令被发送到 SCSI 控制器,再传送到 SCSI 存储设备。 设备执行 SCSI 命令后的响应,经过 Target 封装成 iSCSI 响应 PDU ,再通过已连接的 TCP/IP 网络传送给 Initiator 。 Initiator 会从 iSCSI 响应 PDU 里解析出 SCSI 响应并传送给操作系统,操作系统再响应给应用程序。

iSCSI vs. FC SAN

FC(FiberChannel,光纤通道)是利用光纤信道结合光纤通道交换机实现高速的数据存储网络。FC 性能很好,但价格却贵得惊人,管理起来也非常困难。
iSCSI 利用现有的以太网络,用户只需要少量的投入,就可以方便、快捷地对信息和数据进行交互式传输和管理。当然 iSCSI 与 FC 相比也存在明显的不足,如速度性能、安全可靠性。
FC SAN 与 ip SAN 对比图
FC SAN 与 ip SAN 对比图

Target 服务

target 可以将本机的磁盘设备共享出去(块设备,而非格式化后的挂载点),因此还可以支持分享 LVM 逻辑卷给目标客户机
服务器端:
scsi-target-untils,需要扩展yum源 epel
客户端:
iscsi-initiator-utils,无需扩展源,用于连接 iscsi 服务器
📢
服务名:tgtd
功能:共享块设备
协议与端口:tcp 3260
配置文件:
/etc/tgt/targets.conf
/etc/tft/tftd.conf
 

 
上一篇
代理 - Squid
下一篇
共享存储(二)- 分布式存储 MooseFS