使用 Amazon FSx for NetApp ONTAP 管理 Windows 服务器上的存储
- 16
在AWS的Windows服务器上管理Amazon FSx for NetApp ONTAP存储
作者:Baris Furtinalar、Ondrej Stavinoha与Andy Ward,发表时间:2024年2月29日
关键要点
迁移工作负载到云端时,用户希望无需修改应用代码和学习新方法进行数据管理。Amazon FSx for NetApp ONTAP自2021年9月问世以来,已成功支持多种用例,帮助企业用户无缝迁移工作负载至AWS。本文将讨论在FSx for NetApp ONTAP卷和LUN上可以执行的各种操作,重点介绍了扩展磁盘、创建新磁盘/卷以及移动LUN到不同卷的具体步骤。用户在选择将工作负载迁移到云端时,更倾向于尽量减少对应用代码的修改和对新管理方法的学习。理想情况下,他们希望云服务提供类似于本地基础设施的功能与管理体验,以加速云端的迁移和部署,而无需重新学习操作和管理技能。
自2021年9月初始发布以来,许多企业成功地部署了 Amazon FSx for NetApp ONTAP 存储,帮助他们无缝迁移工作负载到AWS,并提供熟悉且一致的数据管理体验。我们经常与使用Amazon FSx for NetApp ONTAP作为集群工作负载基础构建块的企业合作,特别是在部署Windows Server故障转移集群WSFC时。其中一个主要优势是,您可以将其配置为通过iSCSI提供共享块存储,并将此共享块存储配置为传统WSFC集群存储或集群共享卷CSV。
在本博文中,我们将讨论您可以在FSx for NetApp ONTAP卷和LUN上执行的各种操作。我们注意到用户最常寻求指导的三种场景是:1/扩展磁盘;2/创建新磁盘或卷;3/将LUN移动到不同的卷。接下来,我们将逐一解析这三种场景。
前提条件
为了跟随这些操作步骤,您必须访问至少一台已配置为通过iSCSI连接到FSx for NetApp ONTAP的Windows服务器。如果您没有这样的配置,或者想要一个简单的方法来部署新的测试配置,请参考我们之前的博文,了解如何使用Amazon FSx for NetApp ONTAP配置 SQL Server Always On故障转移集群实例作为共享存储。这篇博文描述并逐步讲解了如何部署一个包含三个LUN的单一ONTAP卷 每个LUN分别用于 1/仲裁,2/数据和3/日志。
在本文中,我们将使用一些脚本和命令,引用之前提到的已部署对象FSx for ONTAP存储虚拟机、发起程序组、SQL Server集群资源。您需要根据您的自定义环境调整的参数以 加粗斜体 的形式表示。
场景1 扩展现有磁盘
在这个场景中,我们将指导您如何扩展现有卷、LUN和磁盘,如 图1 所示。这在磁盘空间不足的情况下非常有用。对于运行ONTAP 9121P2及更高版本的FSx for ONTAP系统,最大LUN大小为128 TB。之前的ONTAP版本则支持最大16 TB的LUN大小。

图1 在磁盘空间不足时扩展现有LUN/OS磁盘
首先,我们将连接到Amazon EC2 Windows服务器,以识别正确的磁盘。接下来,我们将通过SSH切换到FSx for NetApp ONTAP CLI以执行所需的存储命令,最终再回到EC2 Windows服务器完成操作。
步骤:扩展现有磁盘
通过RDP连接到您的EC2 Windows实例。
运行以下PowerShell脚本以管理员身份运行以列出驱动器字母及其对应的NetApp LUN磁盘序列号,如 图2 所示:
powershell disklist=@{} getdisk ForEachObject{disklistAdd(DiskNumber SerialNumber)} partitions=getdisk WhereObject{FriendlyName eq NETAPP LUN CMODE} foreach{GetPartition disknumber Number {Type eq Basic OR type eq IFS}} select DiskNumber Driveletter foreach(partition in partitions){disklistGetEnumerator() ForEachObject{if(partitionDiskNumber eq Key){WriteOutput Drive Letter (partitionDriveletter) Disk Serial Number (value)}}}
图2 PowerShell命令输出,列出驱动器字母及对应的NetApp LUN磁盘序列号
注意您想要扩展的磁盘序列号。
通过SSH连接到您的 FSx for ONTAP系统例如,在PowerShell中输入ssh fsxadmin@xxxx。如果无法访问文件系统,请参考这些Amazon FSx说明。
您可以将LUN扩展到的大小取决于您的ONTAP版本。请确认您的ONTAP版本,如果需要将LUN扩展至超过16TB的大小,请检查您是否在运行ONTAP 9121P2及更高版本。在您的FSx for ONTAP SSH会话中,使用以下命令显示当前版本:
bash version
列出现有的LUN,如 图3 示例,记得获得与第2步中您记录的序列号匹配的LUN:bash lun show serial lWB0kTDzEXX fields lunvolumesize
图3 “lun show”命令输出,以显示您FSx for ONTAP系统的当前版本
确保修改该命令,使用您环境中的序列号。将您在第5步中识别的LUN也扩展10GB:bash lun resize vserver sqlsvm01 path /vol/SQLCluster01/sqldata1 size 10g
通过RDP重新连接到您的EC2实例。
在Windows上扩展操作系统磁盘以S驱动器为例,运行以下PowerShell脚本以管理员身份运行:
powershell ResizePartition Driveletter S Size (GetPartitionSupportedSize Driveletter S)SizeMax
图4 显示在扩展S驱动器之前的Windows Server磁盘管理界面:
图4 在扩展S驱动器之前的Windows Server“磁盘管理”GUI
扩展后,S 驱动器的大小如 图5 所示增加了10GB:
图5 在扩展后Windows Server “磁盘管理”GUI
场景2:创建新磁盘/卷
在接下来的场景中,我们将指导您如何在FSx for ONTAP文件系统上创建新卷和LUN,如 图6 所示,并将新创建的LUN添加为Windows服务器的新磁盘。在进行此操作之前,请确保您的FSx for ONTAP文件系统中有足够的空间。
使用单个ONTAP卷包含多个LUN是在大多数利用共享iSCSI存储的Windows Server故障转移集群WSFC部署方案中有效的设计选择。然而,单一设计在所有情况下并不是最佳选择,有多种用例使得用户从多个ONTAP卷中获益。
在使用FSx for ONTAP时,部署多个卷的主要原因是大多数NetApp存储操作如去重、快照、克隆、复制和智能分层是在卷级别进行的,而不能在LUN级别进行设置。对于标准的SQL Server FCI部署场景,这往往不会产生影响但在更复杂的场景中,使用多个ONTAP卷所提供的额外灵活性可能至关重要。
例如,复杂场景如您计划使用单个SQL Server FCI来支持多个租户或多个应用程序。为每个租户/应用程序的数据库提供自己的一组ONTAP卷和LUN,从而实现更精细的控制,这是用单个ONTAP卷无法实现的。例如,每个租户/应用程序可以根据各自需求配置不同的存储分层策略或复制计划。
超出单个ONTAP卷的其他原因包括:
将I/O密集型查询的数据库隔离到不同的卷中将大型数据库或具有较小RTO要求的数据库放置到单独的卷中以实现更快的恢复将SQL事务日志文件ldf放在与SQL数据文件不同的卷中,以便可以为每个文件创建独立的备份计划因此,您最终要么在部署期间以特定方式配置存储,要么对现有存储系统和连接到它的Windows服务器进行更改。
图6 创建新的ONTAP卷/LUN/OS磁盘
我们将通过SSH连接到FSx for ONTAP CLI以执行所需的存储命令。接下来,切换至活动的SQL Server集群节点以完成此操作。
步骤:创建新磁盘/卷
通过SSH连接到您的 FSx for ONTAP系统例如,在PowerShell中输入ssh fsxadmin@xxxx。如果无法访问文件系统,请参考这些Amazon FSx说明。
在您的FSx for ONTAP SSH会话中,使用以下命令创建新的卷在此示例中大小为50GiB。我们将使用与我们先前博文中相同的命令:
bash volume create vserver sqlsvm01 volume newvolume aggregate aggr1 size 50G state online tieringpolicy snapshotonly percentsnapshotspace 0 autosizemode grow snapshotpolicy none volume modify vserver sqlsvm01 volume newvolume fractionalreserve 0 volume modify vserver sqlsvm01 volume newvolume spacemgmttryfirst snapdelete volume snapshot autodelete modify vserver sqlsvm01 volume newvolume deleteorder oldestfirst enabled true
在新创建的卷中创建一个新的LUN大小为50GB,并将LUN映射到现有的iGroup中。如果您不知道现有iGroup的名称,请使用 igroup show 命令检索iGroup的列表。bash lun create vserver sqlsvm01 volume newvolume lun newdisk size 50G ostype windows2008 lun map vserver sqlsvm01 volume newvolume lun newdisk igroup SQLCluster01IG
通过RDP连接到您的Windows EC2实例。
打开Windows磁盘管理工具通过运行diskmgmtmsc,初始化并格式化新iSCSI磁盘,或运行以下PowerShell脚本以管理员身份运行以初始化新添加的磁盘,格式化并分配驱动器字母“N”:
powershell # 获取FSxN中添加的LUN列表 disklist=GetDisk WhereObject{FriendlyName eq NETAPP LUN CMODE and (OperationalStatus eq Offline)} SortObject Property Size # 创建驱动器字母列表 driveletters=@(N) # 初始化、创建并格式化列表中的FSx for ONTAP磁盘 foreach(dk in disklist) { if((dk)IsOffline eq True){ SetDisk Number (dk)Number IsOffline False } if((dk)PartitionStyle eq RAW){ InitializeDisk Number (dk)Number PartitionStyle GPT ErrorAction SilentlyContinue } if(dkIsReadOnly eq True){ SetDisk Number (dk)Number IsReadOnly False } }
NewPartition DiskNumber (disklist[0])Number UseMaximumSize DriveLetter driveletters[0] FormatVolume FileSystem NTFS Force NewFileSystemLabel NewDisk
如果您正在使用Windows Server故障转移集群,则需要执行以下3个额外步骤:
转到故障转移集群管理器,添加该磁盘作为群集磁盘,或运行以下PowerShell脚本以管理员身份运行:powershell GetClusterAvailableDisk AddClusterDisk startsleep 05 GetClusterResource {ResourceType eq Physical Disk and Name like Cluster} {Name = newdisk}
在故障转移集群管理器中将集群磁盘分配给SQL Server角色,或运行以下PowerShell脚本以管理员身份运行:powershell MoveClusterResource Name newdisk Group SQL Server (MSSQLSERVER)
最后,您需要为新添加的集群磁盘在SQL Server资源中添加额外的依赖项。这可以确保该磁盘在SQL Server资源之前上线。这可以通过故障转移集群管理器或通过以下PowerShell脚本以管理员身份运行来完成:powershell AddClusterResourceDependency Resource SQL Server Provider newdisk
如果您遵循了这三额外步骤,进行集群故障转移测试是良好的做法,以确保一切配置正确,并且您可以故障转移到另一节点。
场景3 将现有LUN移动到不同的NetAPP ONTAP卷
场景3提供了如何将现有LUN移动到新的ONTAP卷的逐步指导,如 图7 所示。执行此操作是为了将现有的LUN转移到自己的ONTAP卷上,以便对特定LUN使用各种ONTAP卷级设置,如上一场景详细介绍的。
快橙加速器图7 将LUN移到不同ONTAP卷的操作
在存储虚拟机SVM内转移的LUN在ONTAP卷之间将立即移动而不会丢失连接。目标卷必须大于您要移动的LUN的大小。我们将通过SSH连接到FSx ONTAP CLI以执行所需的存储步骤。从Windows服务器无需执行其他步骤。