【存储基础】SAN存储基础知识
文章目录
- 1. 什么是SAN存储?
- 2. SAN存储组网架构
- 3. SAN存储的主要协议
- SCSI
- 光纤通道(FC)协议
- iSCSI
- FCoE
- NVMe-oF
- IB
- 4. SAN存储的关键技术
- Thin Provision:LUN空间按需分配
- Tier:分级存储
- Cache:缓存机制
- QoS:流控机制
- Deduplication:数据重删
- Compression:数据压缩
- Migration:数据迁移
- Virtualization:LUN虚拟化
- Snapshot:数据快照
- Clone:数据克隆
- Replication:远程复制
- Metro:双活
1. 什么是SAN存储?
SAN是一个通过高速、专用网络,将服务器连接到共享的存储设备的存储系统。
其核心目的是:提供对块级存储的访问,服务器将SAN存储视为本地连接的硬盘,可以直接在上面创建文件系统。
SAN存储的关键特性有:
- 专用网络:通常独立于常规的LAN/IP网络,使用专门优化的协议和硬件(如光纤通道);
- 高性能:为存储I/O设计,提供低延迟、高带宽的读写性能;
- 可扩展性:能添加更多的服务器或存储设备,而无需中断服务;
- 高可用性:支持多路径,即从服务器到存储的多条物理路径,避免单点故障;
- 集中化管理:存储资源集中部署和管理,提高利用率,简化备份和灾难恢复;
- 资源共享:多个服务器可共享同一存储池,但通常一个存储卷/LUN在同一时间只能被一个服务器访问,除非使用集群文件系统。
LUN是什么?
在SAN存储中,逻辑单元号Logical Unit number是用来标识一个逻辑单元的数字。存储系统将物理硬盘进行分区,每个分区有自己的逻辑地址,允许主机单独在该分区进行读写,这样的一个分区就称为一个LUN。(LUN也指在SAN存储上创建的逻辑磁盘)
2. SAN存储组网架构
SAN的核心组件:
- HBA卡:Host Bus Adapter,主机总线适配器,安装在服务器中的专用网卡,用于连接服务器到SAN网络。
- 功能:
- 提供主机和适配的设备/网络之间的物理连接;
- 处理数据IO;
- 在连接的设备和主机之前传输数据;
- 线缆:线缆有光纤线缆、以太网线缆等
- 交换机:SAN的核心互联设备,提供服务器到存储的多对多连接、分区管理、路由等,光纤通道交换机是传统SAN的骨干。
3. SAN存储的主要协议
SAN存储中,协议的核心任务是将SCSI块级命令通过不同网络传输到存储设备,协议栈主要分为两层:
- 上层:SCSI命令集——定义读写、查询等存储操作(通用层);(还有NVMe)
- 下层:传输协议——负责封装SCSI命令并通过网络传输(差异层)
SCSI
SCSI:Small Computer System Interface,小型计算机系统接口,是在计算机和外围设备之间进行物理连接和数据传输的一系列标准,SCSI标准定义了指令、协议、光电和逻辑接口,是实际的存储命令集(如读写等),SAN协议本质上是将SCSI命令封装在底层网络协议中进行传输。
SCSI传输模型:
光纤通道(FC)协议
光纤通道FC(Fiber Channel)协议:是传统的、高性能SAN的主流协议,用于计算机和外部设备之间传输数据的传输层协议,主要用于在服务器和SAN存储之间传输SCSI数据包;运行在专用光纤通道网络上(交换机、HBA、线缆)。
FC能提供极高的性能、非常低的延迟、以及高可靠性,但是成本相对较高。
iSCSI
iSCSI:Internet Small Computer System Interface,因特网小型计算机系统接口,它是用来描述SCSI数据如何在TCP/IP网络中传输的传输层协议;将SCSI命令封装在标准的TCP/IP协议包中,运行在标准的以太网网络上。
优点:能利用现有的IP网络基础设施,成本显著低于FC。易于部署和管理,距离不受FC限制(理论上可跨广域网);
缺点:性能和延迟受TCP/IP协议栈和以太网拥塞影响,可能消耗服务器CPU资源。
FCoE
FCoE:Fiber Channel over Ethernet, 是一种使FC帧可以直接在以太网上传输的存储协议;将光纤通道帧封装在无损以太网中,运行在支持DCB的增强型以太网上。
NVMe-oF
NVMe:Non-Volatile Memory Express,非易失性存储协议,是一种用于计算机和非易失性存储(比如SSD)之前的数据交换接口规范。
NVMe over Fabrics:新兴的高性能协议,专为利用SSD的低延迟和高吞吐量而设计,将NVMe命令扩展到网络结构,如FC-NVMe、NVMe/TCP、NVMe over RoCE,使得NVMe协议能工作在运行FC、TCP、RoCE等协议网络上。
IB
IB:InfiniBand,是一种应用于需要高吞吐量和低时延的高性能计算场景下的网络通信协议,常被用于服务器之间、服务器与存储设备之间、以及存储与存储之间进行数据通信与连接。
4. SAN存储的关键技术
Thin Provision:LUN空间按需分配
传统方式下,当创建一个LUN时(假设大小为1TB),存储系统会立即、完全的从物理磁盘池中划分并预留1TB的物理空间给这个LUN,无论服务器上的应用程序实际仅使用了100GB空间,这1TB的物理空间都被这个LUN独占,其他LUN无法使用。
Thin Provisioning 精简配置的方式:
- 当创建一个 Thin LUN时,假设1TB(这是逻辑容量),系统并不会立即分配1TB的物理空间,而是记录这个LUN的“最大可用”空间是1TB;
- 物理空间分配是按需的、延迟的、细粒度的;
- 只有当服务器上的应用程序实际向这个LUN写入新数据时存储系统才会根据写入请求的大小,从共享的物理存储池中动态分配一小块物理空间(如4KB,8KB,64KB等,取决于具体实现)给这个LUN;
- 随着写入数据的增加,分配的物理空间也逐步增加
Thin Provisioning的核心是逻辑容量远大于实际分配的物理容量。
Tier:分级存储
Tier分级存储的核心思想:将访问频率高的数据(热数据)存放在高性能、高成本的存储介质上;将访问频率低的数据(冷数据)存放在低性能、低成本的存储介质上。其目的是在满足性能需求的前提下,最大化降低总体存储成本。
分级存储的工作原理:自动化数据迁移
- 策略定义
- 创建存储池,该存储池包含来自不同物理磁盘组的多个存储层级;
- 为存储池配置分级策略:
- 数据迁移标准:最常用的是基于访问频率进行分级,也可结合访问时间、数据类型、策略等进行分级;
- 迁移阈值:定义数据块需要多“热”才能升到更高层;数据块需要多“冷”才会降到更底层;
- 迁移时间窗口:通常在业务低峰期进行迁移任务,避免影响生产性能;
- 层级大小:需要给每个层级配置物理容量,比如给Tier 0分配10TB SSD,给Tier 1分配100TB NL-SAS。
- 持续监控
- 存储系统的后台进程会持续跟踪存储池中的每块数据的访问活动
- 数据分析与决策
- 系统根据预设的策略,定期(比如每小时、每天)分析收集到的访问统计信息,并识别出符合升级或降级条件的数据块
- 透明数据迁移
- 在指定的迁移窗口或系统负载较低的时候,启动迁移任务,迁移过程对链接的主机服务器和应用完全透明,应用访问数据的逻辑地址(LUN和LBA)不变,存储系统在后台处理所有重定向
Cache:缓存机制
Cache缓存机制的核心思想是:利用更快、但容量更小、成本更高的存储介质,临时存放访问最频繁或预计即将访问的数据和元数据,从而避免每次都去访问相对较慢的后端物理磁盘。
SAN存储通常采用分层缓存架构:
- L1缓存
- 存储介质:DRAM,是系统主存的一部分;
- 特点:速度最快、容量相对较小、易失性(断电数据丢失)
- 用途:存放“最热的”读数据块;存放待写入后端磁盘的写数据;存放关键的元数据。
- 位置:通常位于存储控制器的内存中。
- L2缓存
- 存储介质:非易失性内存,主要有高性能SSD等;
- 特点:速度介于L1缓存和后端磁盘之间;非易失性(断电数据不丢失)
- 核心功能:作为L1缓存的扩展和持久化层,专注于加速写入和容纳次热数据。
QoS:流控机制
QoS :Quality of Service,智能服务质量控制,其核心功能包括流控机制(Flow Cntrol),流控机制是QoS功能落地的最核心技术,它通过对I/O请求的速率和队列深度进行主动干预和控制来实现性能保障、性能隔离、资源公平、可预测性等目标,流控的主要控制对象是IOPS和BW带宽。
Deduplication:数据重删
Deduplication:数据重删是现代存储系统中一项空间优化技术,旨在通过消除冗余数据块,显著提高存储空间利用率,降低总体拥有成本。
其核心思想是:相同的数据内容,在存储系统中仅保留一份物理副本,当检测到新写入的数据块与已存储的某个数据块内容完全相同时,不再存储新副本,而是创建一个指向已有数据块的指针引用。
数据重删的关键工作流程:
- 数据分块:主机写入新数据时,存储系统将写入的数据流切割成更小的、大小固定或可变的块;
- 计算哈希指纹:对每个分块后的数据块应用一个加密级哈希函数,生成一个唯一且长度固定的哈希值,最为该数据块的数字指纹;
- 查找索引:系统维护一个全局哈希索引表,该表中记录了
哈希指纹key->物理存储位置value
,用新数据块的哈希值去查询这个索引表,有两种情况:- 命中:表中已存在相同的哈希值,意味着该数据块的内容已经物理存储在系统中了;
- 未命中:表中不存在该哈希值,表明这是一个全新的、唯一的数据块
- 存储处理
- 情况1 未命中:
- 将数据块写入物理存储介质;
- 在哈希表中添加一个新条目:
新哈希值->新物理位置
; - 更新该LUN的元数据映射表:将主机写入的逻辑块地址LBA映射到新物理位置。
- 情况2 命中:
- 不存储数据块的内容本身;
- 直接更新该LUN的元数据映射表:将主机写入的逻辑块地址LBA映射到索引表中查询到的已有物理位置;
- 更新该已有数据块的引用计数。
- 情况1 未命中:
- 读取处理(透明):当主机读取某个LBA时,存储系统进行如下处理:
- 查询该LUN的元数据映射表,找到该LBA映射的物理位置;
- 从该物理位置读取数据块,将数据返回给主机;
- 整个过程对主机完全透明,主机感知不到重删的存在。
Compression:数据压缩
数据压缩的核心目标是:在将数据写入物理磁盘前,利用算法识别并消除数据中的冗余模式,从而用更少的物理空间来表示原始数据。
数据压缩的工作原理:
- 数据接收:主机服务器通过SAN网络向存储阵列发起写IO请求,数据块被发送到阵列控制器;
- 缓存处理:数据块通常先被写入到控制器的高速缓存中;
- 压缩引擎处理:
- 压缩引擎(硬件或软件)获取缓存中的原始数据块;
- 使用特定压缩算法(如哈夫曼算法、LZ77算法等)分析数据块:算法查找重复的字节序列、空格、可预测的模式等,用更短的“代码”或“引用”替换这些冗余部分;
- 生成一个压缩后的数据块。
- 压缩引擎(硬件或软件)获取缓存中的原始数据块;
- 元数据记录:存储系统会记录每个数据块是否被压缩、使用的压缩算法、原始大小、以及压缩后的大小等信息,用于后续的读取和解压;
- 写入磁盘:压缩后的数据块(以及相关的元数据)写入特定的物理磁盘;
- 读取过程(解压):
- 主机发起读请求,存储控制器定位到包含所需数据的物理位置,并从磁盘读取压缩的数据块;
- 根据元数据信息,压缩引擎执行解压操作,将数据还原为原始的、未压缩的形式;
- 解压后的原始数据块通过高速缓存发送回请求的主机服务器。
Migration:数据迁移
数据迁移功能,是在不影响主机应用访问的情况下,将数据在存储系统内部或不同存储系统之间移动。
其核心目标是:将数据从源物理位置透明地移动到目标物理位置,主机服务器和应用感知不到迁移过程,业务连续性得到保障。
应用场景:
- 存储硬件升级/更换:将数据从旧存储阵列迁移到新阵列中;
- 负载均衡:将繁忙的LUN从低性能的磁盘上迁移到高性能磁盘上;
- 存储分层场景;
- 空间优化等
Virtualization:LUN虚拟化
虚拟化功能主要用于本地存储对异构存储LUN进行接管,简化存储系统的管理,或实现异构存储间业务无中断LUN数据迁移。
其核心思想:LUN虚拟化解除了主机服务器看到的逻辑磁盘单元LUN与底层物理磁盘驱动器(或RAID组)之前的严格、静态绑定关系,向主机呈现一个统一的、简化的存储资源视图,隐藏底层物理磁盘的复杂性。
Snapshot:数据快照
数据快照:snapshot是源数据在特定时间点的一致性数据副本,捕获了改时间点数据的状态。
快照的主要特点:
- 瞬时创建:创建快照通常仅需几秒钟,无论源数据量有多大,对生产系统性能的影响非常小;
- 空间高效:快照本身并不复制该时间点的所有数据块,它主要记录的是数据变化的元数据信息(指针映射),初始快照占用的额外存储空间非常小;
- 只读:创建后的快照通常是只读的,用于数据恢复或一致性检查,不能直接写入,但基于快照可创建可写的克隆;
- 时间点保护:快照提供了特定时刻数据的副本,是数据保护的重要一环。
快照的主要技术有COW和ROW:
- COW:Copy-On-Write,写时复制,其核心逻辑是先备份旧数据,再写入新数据
- 创建快照时:仅记录源数据的元数据映射表,不复制实际数据;
- 写入新数据时(关键步骤):应用尝试修改源数据中的某个数据块时(比如Block X)
- 系统将Block X的原始数据(修改前的内容)复制到快照专用区(保留区);
- 将新数据写入源数据Block X的原始位置
- 在这个过程中确保快照始终指向修改前的旧数据。
- 读取快照时
- 若请求的数据块未被修改过,则直接从源卷读取;
- 若数据块被修改过,则从快照保留区读取旧数据、
- ROW:Redirect-On-Write,重定向写,核心逻辑:新数据写入新位置,源数据保持冻结
- 创建快照时:
- 记录源卷的元数据映射表;
- 源卷数据保持只读状态(冻结);
- 写入新数据时(关键步骤):当应用程序尝试修改任意数据块(例如Block Y)
- 系统将新数据直接写入全新的存储区域(非原始位置);
- 更新源卷的元数据,指向新数据位置(源卷Block Y物理内容不变)
- 原始数据块始终保持快照创建时的状态
- 读取数据时
- 读快照:始终从源卷原始位置读取(数据未被覆盖);
- 读源卷:若数据块未被修改,从原始位置读取;若数据块已被修改,从新写入区域读取最新数据
- 创建快照时:
特性 | COW(写时复制) | ROW(重定向写) |
---|---|---|
写入性能 | 修改数据时需复制旧数据,写延迟高 | 直接写入新位置,写延迟低 |
读取性能 | 读源卷快(多数数据未移动) | 读源卷需跳转位置,可能略慢 |
空间占用 | 快照大小随数据修改量增长 | 源卷空间冻结,但新数据区域持续增长 |
数据保护性 | 源卷损坏可能影响快照 | 源卷原始数据物理冻结,更安全 |
恢复速度 | 快照回滚较快 | 回滚需重置元数据,速度极快 |
典型场景 | 读多写少环境 | 写密集型应用(如数据库、VDI) |
Clone:数据克隆
数据克隆是一种基于快照的高级功能,它能即时创建源卷的完整可写副本,它与快照技术的主要区别:
特性 | Snapshot(快照) | Clone(克隆) |
---|---|---|
可写性 | 只读(不可修改) | 完全可读写 |
空间占用 | 仅存储差异数据(节省空间) | 初始占用小,随写入增长(空间高效) |
数据独立性 | 依赖源卷(物理存储未分离) | 独立于源卷(可脱离存在) |
用途 | 数据恢复、备份源 | 生产级读写(如测试、容灾) |
Replication:远程复制
远程复制是实现业务连续性最核心的跨站点数据同步技术,通过将主存储阵列的数据实时或近实时地复制到异地备端,确保灾难发生时业务秒级切换。
远程复制是一种容灾技术,关键指标:
- RTO:恢复时间目标,故障后业务恢复所需时间;
- RPT:恢复点目标,灾难发生时允许丢失的数据量
远程复制分为两种核心模式:同步复制和异步复制
同步复制:
- 关键特性:
- 数据强一致性:主站点收到远端确认后才向主机返回写成功(RPO=0)
- 距离限制:通常要求距离<=100km
- 性能影响:网络延迟直接叠加到主机IO延迟
- 适用场景:金融核心交易系统、医疗HIS系统等
异步复制:
- 关键特性
- 最终一致性:数据按策略批量同步(RPO>0)
- 无距离限制:支持跨国复制
- 性能无损:主机IO不受远端网络影响
- 适用场景:ERP系统、邮件服务器等
Metro:双活
双活是一种跨站点的高可用架构,其核心目标是实现零感知故障切换和零数据丢失。
双活与传统主备架构的差异:
双活技术将两个地理分散的数据中心融合为单一逻辑存储池,业务可在任意站点无差别访问数据。