亚马逊AWS官方博客

利用FSx for NetApp ONTAP的“SVMDR”实现SSD存储容量优化

引言

在当今数据驱动的企业环境中,存储成本优化与灵活性已成为IT决策者面临的核心挑战。随着工作负载需求的周期性变化,特别是在电子设计自动化(EDA)、数据迁移项目和媒体制作等领域,存储容量的动态调整能力变得尤为关键。虽然Amazon FSx for NetApp ONTAP已在全球区域的第二代系统中推出了无中断缩减SSD容量的重要功能,参见如下的在线说明:

https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/storage-capacity-and-IOPS.html#decreasing-ssd-capacity

但中国区域的客户仍在使用第一代系统,尚无法直接受益于这一创新。

面对这一挑战,我们发现SVM灾难恢复(SVMDR)技术提供了一条有效的替代路径。本文将深入探讨如何在FSx for NetApp ONTAP上使用SVMDR功能来降低SSD存储成本的战略性工具。通过这种方法,我们可以帮助中国区域客户解决存储弹性问题,在新一代系统正式登陆中国区域之前,有效控制存储支出,同时确保数据安全和业务连续性。

接下来,让我们一起探索如何配置和实施这一解决方案,使您的组织能够在优化成本的同时保持卓越的存储性能和可靠性。

关于SVMDR

  • SVMDR 是基于 SnapMirror 的异步复制机制,用于将完整的 SVM(包括其配置、卷、LUN、共享、导出策略等)从主站点复制到 DR 站点。
  • 复制内容包括:
    • 所有数据卷(FlexVol 或 FlexGroup)
    • SVM 配置(如 CIFS/SMB 共享、NFS 导出、网络接口等)
  • 支持一致性组(Consistency Groups)和 FlexGroup 卷的 SVMDR 复制。

注意:目前FSx for NetApp ONTAP不直接支持SVMDR,但可以利用SVMDR的MirrorAllSnapshotsDiscardNetwork选项在文件系统级别建立SnapMirror关系,复制所有数据卷、快照以及配置信息(丢弃网络配置信息),特别适合用于SSD磁盘缩容的场景。

https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/scheduled-replication.html

和数据卷迁移的比较

  • 数据卷复制:针对特定卷的数据层面复制,类似于”文件复制”
  • SVMDR:整个SVM环境的完整镜像,类似于”系统克隆”

复制范围详细对比

复制内容类别 具体项目 数据卷复制 SVMDR 说明
1 数据层 卷数据内容 选定卷 所有卷 SVMDR复制SVM内所有卷
2 卷快照 ⚠️ 部分 全部 SVMDR保持完整快照历史
3 数据去重信息 丢失 保持 SVMDR保持存储效率
4 配置层 卷配置参数 基本配置 完整配置 大小、类型、策略等
5 导出策略 需重建 自动复制 NFS/SMB访问控制
6 配额设置 需重建 自动复制 用户/组配额限制
7 QoS策略 需重建 自动复制 性能限制和保证
8 加密设置 ⚠️ 部分 完整 卷级和SVM级加密
9 协议层 NFS服务配置 不复制 完整复制 版本、选项、性能调优
10 SMB/CIFS配置 不复制 完整复制 共享、权限、域加入
11 iSCSI/FC配置 不复制 完整复制 LUN映射、启动器组

环境说明

  1. 准备Gen 1 FSx for NetApp ONTAP 文件系统,包括源文件系统 与目标文件系统
  2. 在目标 FSx for NetApp ONTAP 文件系统上有一个空白的可用 vserver(用于 SVMDR 对等的 vserver 不能具有相同的名称)

源文件系统和目标文件系统

  • FsxId0c9b5b9602b41fe9f – 源文件系统

如下所示,目前的源文件SSD系统容量为2.54TB

FsxId0c9b5b9602b41fe9f::> storage aggregate show -fields size,availsize,storage-type,space-full-threshold-percent,percent-snapshot-space
aggregate storage-type percent-snapshot-space space-full-threshold-percent availsize size
--------- ------------ ---------------------- ---------------------------- --------- ------
aggr1 ssd 5% 96% 2.52TB 2.54TB

对应的volume设置如下

FsxId0c9b5b9602b41fe9f::> volume show
Vserver   Volume       Aggregate    State      Type       Size  Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
fsx       fsx_root     aggr1        online     RW          1GB    972.2MB    0%
fsx       vol0         aggr1        online     RW          1TB    953.2GB    2%
fsx       vol1         aggr1        online     RW        200GB    190.0GB    0%
3 entries were displayed.
  • FsxId00a6c10ba5aee140e – 目标文件系统

如下所示,目前的目标文件SSD系统容量为860.5GB

FsxId00a6c10ba5aee140e::> storage aggregate show -fields size,availsize,storage-type,space-full-threshold-percent,percent-snapshot-space
aggregate storage-type percent-snapshot-space space-full-threshold-percent availsize size
--------- ------------ ---------------------- ---------------------------- --------- ------
aggr1 ssd 5% 96% 860.5GB 860.5GB

对应的volume设置如下

FsxId00a6c10ba5aee140e::> volume show
Vserver   Volume       Aggregate    State      Type       Size  Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
mysvm1    mysvm1_root  aggr1        online     RW          1GB    972.2MB    0%
1 entries were displayed.

创建从源 SVM到目标SVM的SnapMirror关系

创建源集群和目标集群之间的集群对等关系

获取目标集群的集群间接口:

FSx:: net int show -services intercluster-core

FsxId00a6c10ba5aee140e::> net int show -services intercluster-core
(network interface show)
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home

FsxId00a6c10ba5aee140e
inter_1 up/up 192.168.29.20/19 FsxId00a6c10ba5aee140e-01
e0e true
inter_2 up/up 192.168.129.180/25 FsxId00a6c10ba5aee140e-02
e0e true
2 entries were displayed.

获取源集群的集群间接口:

Src:: net int show -services intercluster-core

FsxId0c9b5b9602b41fe9f::> net int show -services intercluster-core
(network interface show)
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home

FsxId0c9b5b9602b41fe9f
inter_1 up/up 192.168.14.56/19 FsxId0c9b5b9602b41fe9f-01
e0e true
inter_2 up/up 192.168.104.102/19 FsxId0c9b5b9602b41fe9f-02
e0e true

从目标发起集群对等关系(在提示时输入密码):

FsxId00a6c10ba5aee140e::> cluster peer create -peer-addrs 192.168.14.56,192.168.104.102

Notice: Use a generated passphrase or choose a passphrase of 8 or more characters. To ensure the authenticity of the peering relationship, use a phrase or sequence of characters that
would be hard to guess.

Enter the passphrase:
Confirm the passphrase:

Notice: Now use the same passphrase in the "cluster peer create" command in the other cluster.

从源发起集群对等关系:

Src:: cluster peer create -peer-addrs <<inter_1>>,<<inter_2>>

FsxId0c9b5b9602b41fe9f::> cluster peer create -peer-addrs 192.168.29.20,192.168.129.180

Notice: Use a generated passphrase or choose a passphrase of 8 or more characters. To ensure the authenticity of the peering relationship, use a phrase or sequence of characters that
would be hard to guess.

Enter the passphrase:
Confirm the passphrase:

检查源和目标,确保对等成功,如从源端检查Snapmirror关系

FsxId0c9b5b9602b41fe9f::> cluster peer show
Peer Cluster Name Cluster Serial Number Availability Authentication

FsxId00a6c10ba5aee140e 1-80-000011 Available ok

在源和目标vserver之间创建vserver对等关系:

获取目标集群的vserver名称,并从”Vserver”下方获取值:

sxId00a6c10ba5aee140e::> vserver show
Admin Operational Root
Vserver Type Subtype State State Volume Aggregate

mysvm1 data default running running mysvm1_ aggr1 root

获取源集群的vserver名称,并从”Vserver”下方获取值:

FsxId0c9b5b9602b41fe9f::> vserver show
Admin Operational Root
Vserver Type Subtype State State Volume Aggregate

fsx data default running running fsx_root aggr1

从目标发起vserver对等关系:

FsxId00a6c10ba5aee140e::> vserver peer create -vserver mysvm1 -peer-vserver fsx \ 
-applications snapmirror -peer-cluster FsxId0c9b5b9602b41fe9f

Info: [Job 64] 'vserver peer create' job queued

注意:如果源和目标vserver使用相同的名称(如FSxN部署中的默认”fsx”vserver),ONTAP将会报错。为每个vserver使用不同的名称。

从源接受vserver对等关系:

FsxId0c9b5b9602b41fe9f::> vserver peer accept -vserver fsx -peer-vserver mysvm1

Info: [Job 2380] 'vserver peer accept' job queued

从源和目标检查vserver对等关系:

FsxId0c9b5b9602b41fe9f::> vserver peer show
Peer Peer Peering Remote
Vserver Vserver State Peer Cluster Applications Vserver

fsx mysvm1 peered FsxId00a6c10ba5aee140e
snapmirror mysvm1

数据卷复制-可选

如果只需要迁移源系统的部分数据卷到目标系统(不包含根卷),可以采用基于数据卷复制的方法。

对于源集群上的数据卷,此处以源系统上vol0为例:

在目标集群上创建与源集群相同名称、至少相同大小的卷,类型为DP:

FsxId00a6c10ba5aee140e::> vol create -volume vol0 -aggregate aggr1 -size 15G -type DP
[Job 69] Job succeeded: Successful

在目标集群上为源卷创建SnapMirror关系,使用SVM-DR的默认策略(MirrorAllSnapshotsDiscardNetwork):

FsxId00a6c10ba5aee140e::> snapmirror create -source-path fsx:vol0 -destination-path \ 
mysvm1:vol0 -vserver mysvm1 -identity-preserve true \ 
-policy MirrorAllSnapshotsDiscardNetwork -schedule pg-15-minutely
Operation succeeded: SnapMirror create for the relationship with destination "mysvm1:vol0".

从目标FSxN(确保卷级和SVM级的SnapMirror策略相同):

FsxId00a6c10ba5aee140e::> snapmirror show -instance

Source Path: fsx:vol0
Destination Path: mysvm1:vol0
Relationship Type: XDP
Relationship Group Type: none
SnapMirror Schedule: pg-15-minutely
SnapMirror Policy Type: async-mirror
SnapMirror Policy: MirrorAllSnapshotsDiscardNetwork
Tries Limit: -
Throttle (KB/sec): unlimited
Mirror State: Broken-off
Relationship Status: Idle

在目标FSxN上初始化SnapMirror关系:

FsxId00a6c10ba5aee140e::> snapmirror initialize -destination-path mysvm1:vol0
Operation is queued: SnapMirror initialize of destination "mysvm1:vol0".

在目标FSxN上检查SnapMirror关系:

FsxId00a6c10ba5aee140e::*> snapmirror show

Progress
Source            Destination Mirror  Relationship   Total             Last
Path        Type  Path        State   Status         Progress  Healthy Updated

fsx:vol0    XDP  mysvm1:vol0  Snapmirrored
Finalizing     0B        true    06/29 07:01:16

如上,表示基于数据卷的复制设置成功,当Relationship status显示为Idle时,表示数据复制已经完成。

SVMDR配置

SVMDR实现SVM级SVM SnapMirror,其主要的步骤如下:

停止目标端FSxN vserver:

FsxId00a6c10ba5aee140e::> vserver stop -vserver mysvm1
[Job 144] Job succeeded: DONE

列出源文件系统源根卷名称:

FsxId0c9b5b9602b41fe9f::> vserver show -vserver fsx -fields rootvolume
vserver rootvolume
------- ----------
fsx    fsx_root

列出目标系统根卷名称:

FsxId00a6c10ba5aee140e::> vserver show -vserver mysvm1 -fields rootvolume
vserver rootvolume
------- ----------
mysvm1 mysvm1_root

重命名目标文件系统vserver的根卷以匹配源文件系统vserver的根卷,将目标vserver根卷重命名为与源vserver根卷相同的名称:

FsxId00a6c10ba5aee140e::*> vol rename mysvm1_root -newname fsx_root

[Job 72] Job succeeded: Successful

在目标上创建源vserver和目标vserver之间的SnapMirror关系(注意所使用的策略,必须为MirrorAllSnapshotsDiscardNetwork):

FsxId00a6c10ba5aee140e::*>snapmirror create -source-path fsx: -destination-path \ 
mysvm1: -vserver mysvm1 \ 
-policy MirrorAllSnapshotsDiscardNetwork -schedule pg-15-minutely \ 
-identity-preserve true

从目标重新同步SnapMirror关系:

FsxId00a6c10ba5aee140e::*>snapmirror resync -destination-path mysvm1: -vserver 

注意:如果ONTAP报告存在没有Snaplock的卷,请检查卷恢复队列,并在必要时清除

从目标FSxN,设置正确后,状态应显示为SnapMirrored和Idle。您不会看到卷之间的所有单独SnapMirror关系,因为它已转换为SVM-DR关系。

默认操作状态将为”stopped”(因为这是SVMDR),除非您有故障转移事件并需要启动它,此时您的卷将变为R/W,并且您将在CM中看到它们。

如下,可以看到卷”vol0″以及”vol1″都处于DP状态。这是因为它们不是”活动的”,并且仅在您打开SVM”svm_dr”的故障转移事件中才会变为RW。

FsxId00a6c10ba5aee140e::> snapmirror show
Progress
Source Destination Mirror Relationship Total Last
Path Type Path State Status Progress Healthy Updated

fsx: XDP mysvm1: Snapmirrored
Idle - true -

FsxId00a6c10ba5aee140e::> vol show

Vserver Volume Aggregate State Type Size Available Used%

mysvm1 fsx_root aggr1 online RW 1GB 967.8MB 0%
mysvm1 vol0 aggr1 online DP 1TB 953.2GB 2%
mysvm1 vol1 aggr1 online DP 200GB 190.0GB 0%
3 entries were displayed.

FsxId00a6c10ba5aee140e::> vserver show
Admin Operational Root
Vserver Type Subtype State State Volume Aggregate

mysvm1 data dp-destination stopped fsx_root aggr1
stopped

此时重新检查目标文件系统的SSD容量,总容量为 861.7GB,可用容量为859.7GB,成功实现了SSD缩容。

FsxId00a6c10ba5aee140e::> storage aggregate show -fields size,availsize,storage-type,space-full-threshold-percent,percent-snapshot-space
aggregate storage-type percent-snapshot-space space-full-threshold-percent availsize size
--------- ------------ ---------------------- ---------------------------- --------- -------
aggr1 ssd 5% 96% 859.7GB 861.7GB

取消SnapMirror关系

 取消Snapmirror关系

在FSxN目标系统执行 snapmirror break

FsxId00a6c10ba5aee140e::*> snapmirror break -destination-path mysvm1:

Notice: Volume quota and efficiency operations will be queued after "SnapMirror break" operation is complete. To
check the status, run "job show -description "Vserverdr Break Callback job for Vserver : mysvm1"".

在FSxN目标系统删除snapmirror

FsxId00a6c10ba5aee140e::*> snapmirror list-destinations
Progress
Source Destination Transfer Last Relationship
Path Type Path Status Progress Updated Id
----------- ----- ------------ ------- --------- ------------ ---------------
fsx: XDP mysvm1: - - - 51562ad7-5bc9-11f0-b03a-d32261868ae2
FsxId00a6c10ba5aee140e::*> snapmirror delete -destination-path mysvm1:

在FSxN源系统删除snapmirror

FsxId0c9b5b9602b41fe9f::*> snapmirror release -destination-path mysvm1:

Warning: Snapshot copies on source "fsx" generated by SnapMirror for the purpose of mirroring to destination "mysvm3" will be
deleted. Once these Snapshot copies are deleted, it will not be possible to re-establish a mirroring relationship between
these two endpoints unless there are other common Snapshot copies between the endpoints.
Do you want to continue? {y|n}: y

Info: [Job 243] 'SnapMirror Release' job queued

在FSxN目标系统取消vserver peer

FsxId00a6c10ba5aee140e::*> vserver peer show 
            Peer        Peer                           Peering        Remote
Vserver     Vserver     State        Peer Cluster      Applications   Vserver
----------- ----------- ------------ ----------------- -------------- ---------
mysvm1      fsx         peered       FsxId0c9b5b9602b41fe9f 
                                                       snapmirror     fsx
 
FsxId00a6c10ba5aee140e::*> vserver peer delete -vserver mysvm1 -peer-vserver fsx     
 
Info: [Job 135] 'vserver peer delete' job queued 

此时,从FSxN源文件系统中已经无法查到对应vserver peer关系

FsxId0c9b5b9602b41fe9f::*> vserver peer show
There are no Vserver peer relationships. 

在FSxN目标系统取消cluster peer

FsxId00a6c10ba5aee140e::*> cluster peer delete -cluster FsxId0c9b5b9602b41fe9f 
 
FsxId00a6c10ba5aee140e::*> cluster peer show                                   
This table is currently empty. 

 在FSxN源文件系统中取消Cluster peer关系

FsxId0c9b5b9602b41fe9f::*> cluster peer show
Peer Cluster Name         Cluster Serial Number Availability   Authentication
------------------------- --------------------- -------------- --------------
FsxId00a6c10ba5aee140e    1-80-000011           Available      ok
 
FsxId0c9b5b9602b41fe9f::*> cluster peer delete -cluster FsxId00a6c10ba5aee140e 
 
FsxId0c9b5b9602b41fe9f::*> cluster peer show                                   
This table is currently empty.

小结

本文介绍的基于FSx for NetApp ONTAP的SVM灾难恢复(SVMDR)解决方案,为需要优化SSD存储容量的客户提供了一种创新的替代方案。这一方法特别适用于以下场景:

  1. 第一代FSx ONTAP系统用户 – 尚未能够使用原生SSD缩容功能的客户,尤其是中国区域的企业。
  2. 周期性工作负载 – 具有明显高低峰的工作负载,如EDA设计项目、季节性数据处理或阶段性媒体制作。
  3. 成本敏感型项目 – 需要严格控制存储成本,避免为闲置容量付费的企业。
  4. 灾备与成本优化双重需求 – 既需要灾难恢复保障,又希望优化存储成本结构的组织。

通过SVMDR实现的SSD容量优化不仅是一个技术解决方案,更是一种战略性业务决策。它使企业能够实现以下价值:

  1. 显著的成本节约 – 通过将数据迁移到更小的文件系统,企业可以立即减少存储支出,根据实际观察,客户通常能够降低30%-50%的SSD相关成本。
  2. 业务连续性保障 – 整个过程保持服务可用性,最小化对业务运营的影响。
  3. 灵活的容量管理 – 根据业务周期动态调整存储资源,实现真正的按需付费模式。
  4. 无缝过渡路径 – 为未来迁移到支持直接SSD缩容的第二代系统提供了经验积累。

随着AWS持续优化FSx for NetApp ONTAP服务,我们期待第二代系统在更多区域的可用性,但在此之前,SVMDR方案为客户提供了一条有效的途径,实现了技术与业务的完美结合,帮助企业在云时代更加敏捷和高效地管理存储资源。

本篇作者

朱坦

亚马逊云科技解决方案架构师,负责数据与存储架构设计,目前主要关注在人工智能与机器学习、数据分析、高性能计算,如 EDA、自动驾驶、基因分析等领域的存储设计与优化。

吴楠

亚马逊云科技解决方案架构师,负责面向跨国企业客户的云计算方案架构咨询和设计,客户覆盖医疗、零售等行业。曾经在电信、娱乐和金融等行业有多年大数据、企业数字化转型等相关研发、咨询和项目管理经验。