引言
在当今数据驱动的企业环境中,存储成本优化与灵活性已成为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映射、启动器组 |
环境说明
- 准备Gen 1 FSx for NetApp ONTAP 文件系统,包括源文件系统 与目标文件系统
- 在目标 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存储容量的客户提供了一种创新的替代方案。这一方法特别适用于以下场景:
- 第一代FSx ONTAP系统用户 – 尚未能够使用原生SSD缩容功能的客户,尤其是中国区域的企业。
- 周期性工作负载 – 具有明显高低峰的工作负载,如EDA设计项目、季节性数据处理或阶段性媒体制作。
- 成本敏感型项目 – 需要严格控制存储成本,避免为闲置容量付费的企业。
- 灾备与成本优化双重需求 – 既需要灾难恢复保障,又希望优化存储成本结构的组织。
通过SVMDR实现的SSD容量优化不仅是一个技术解决方案,更是一种战略性业务决策。它使企业能够实现以下价值:
- 显著的成本节约 – 通过将数据迁移到更小的文件系统,企业可以立即减少存储支出,根据实际观察,客户通常能够降低30%-50%的SSD相关成本。
- 业务连续性保障 – 整个过程保持服务可用性,最小化对业务运营的影响。
- 灵活的容量管理 – 根据业务周期动态调整存储资源,实现真正的按需付费模式。
- 无缝过渡路径 – 为未来迁移到支持直接SSD缩容的第二代系统提供了经验积累。
随着AWS持续优化FSx for NetApp ONTAP服务,我们期待第二代系统在更多区域的可用性,但在此之前,SVMDR方案为客户提供了一条有效的途径,实现了技术与业务的完美结合,帮助企业在云时代更加敏捷和高效地管理存储资源。
本篇作者