2. HPE Alletra存储架构回顾
要理解快照复制为什么能"瞬间完成"、为什么能"零拷贝"、为什么能"跨卷共享数据块",必须先回到HPE Alletra的底层架构。快照并不是把数据复制一份,而是在存储系统内部对数据块的引用关系做一次"记账"。如果对控制器、存储池、卷、主机映射这几层对象的关系不清楚,后面配置快照时很容易出现"快照建了但主机看不到""回滚后数据没变""复制链路不通"等问题。本节把Alletra的硬件与软件栈、控制器节点、存储池、卷与主机映射重新梳理一遍,为快照复制打基础。
一、硬件与软件栈:从物理盘到可被主机访问的卷
HPE Alletra是一套软件定义的块存储平台,底层硬件通常由控制器节点(Controller Node)、NVMe SSD盘柜(或全NVMe机箱)、冗余电源与风扇、管理网口与数据网口组成。上层软件栈大致分为四层:最底层是物理介质与RAID/纠删码保护层;其上是分布式数据服务层,负责数据分布、元数据管理、快照与克隆;再往上是卷管理层,把物理空间抽象为可分配的卷(Volume);最上层是主机接入层,通过iSCSI、FC或NVMe-oF把卷映射给主机。
这里有一个关键概念:快照属于数据服务层的能力,而不是卷管理层的能力。也就是说,快照操作的对象是"卷",但真正记录"哪些数据块被引用、哪些被改写"的是数据服务层的元数据。理解这一点,就能明白为什么快照几乎不占额外空间——它只增加元数据条目,不复制用户数据。
二、控制器节点:快照操作的执行者与冗余边界
Alletra通常采用双控制器(或更多节点)的集群形态,每个控制器节点都运行完整的存储软件栈。节点之间通过高速内部网络(如100GbE或NVMe over Fabric)互联,共享后端盘柜。对于快照来说,有两个要点必须记住:
- 快照元数据是集群级共享的。在节点1上创建的快照,节点2也能看到并参与读写。这意味着快照不会因为某个控制器故障而"丢失",但前提是集群内部通信正常。
- 快照的写时复制(CoW)或写时重定向(RoW)由接收写请求的节点执行。主机通过多路径把I/O发到某个节点,该节点负责判断"这个块是否被快照引用",如果是,就先保留旧数据块,再写入新数据。这个过程对主机透明。
实际排障时,如果发现快照创建成功但主机侧数据异常,第一步应检查两个控制器节点的时间是否同步、集群状态是否健康。节点间心跳中断会导致元数据不一致,快照可能进入"降级"状态。
三、存储池:快照空间的来源与容量边界
存储池(Storage Pool)是Alletra中物理容量与逻辑卷之间的中间层。管理员把NVMe SSD组成RAID组或纠删码组,再加入存储池,池内再划分卷。快照本身不占用独立池,但它依赖池内的可用空间来保存"被覆盖的旧数据块"。
这里有一个容易误解的地方:快照不是"零空间"。创建快照的瞬间确实几乎不占空间,但随着源卷数据被不断改写,旧数据块会被保留在池中,快照占用空间逐渐增长。如果池空间耗尽,快照会失效,甚至影响源卷写入。因此,规划快照时必须在存储池层面预留足够的"快照增长空间"。
一个实用的估算示例:假设源卷500GB,每天变化率10%,保留7天快照,则快照空间约为500GB × 10% × 7 = 350GB。实际部署中建议再留30%余量,即池内至少预留约455GB给该卷的快照。这个数字是示例估算,不是实测值,具体应以实际变化率和保留策略为准。
四、卷与主机映射:快照可见性的最后一公里
卷是主机看到的逻辑磁盘。在Alletra中,卷通过"主机映射"分配给特定主机或主机组。映射关系包含三个要素:卷、主机(以IQN/WWN标识)、LUN号。主机通过iSCSI或FC登录后,只能看到映射给自己的LUN。
快照与主机映射的关系是:快照创建后,默认不会自动映射给主机。如果要把快照挂载给主机做数据校验或恢复,需要单独创建快照的映射,并分配一个未使用的LUN号。这一点在实操中非常关键——很多初学者创建快照后,在主机上执行lsblk或diskpart看不到新磁盘,就是因为没有做快照映射。
# 示例:在Alletra CLI中查看卷与快照的映射关系(示意)
showvolume -name Vol_App01
# 输出示例:
# Name: Vol_App01 Size: 500GB Pool: Pool_Prod
# Snapshot: Snap_App01_20240601 Mapped: No
# Host: Host_DB01 LUN: 3
# 将快照映射给主机(示意)
createsnapshotmapping -snapshot Snap_App01_20240601 -host Host_DB01 -lun 5
注意:上述命令为示意格式,不同Alletra版本和接口(CLI、GUI、REST API)的具体语法可能不同,实际执行请以官方文档为准。
五、为快照复制打基础:三层对象的关系总结
把上面的内容串起来,可以用一句话概括:存储池提供空间,卷提供逻辑对象,主机映射提供访问路径,控制器节点执行快照元数据操作。快照复制之所以高效,是因为它发生在数据服务层,只改动元数据引用,不搬运用户数据;但它能否被主机使用,取决于卷管理层是否做了映射;它能否持续存在,取决于存储池是否有足够空间。