NetApp高级磁盘分区(ADP)和常用维护命令介绍
写在前面
为什么要写这篇文章,近期越来越多的碰到NetApp FAS存储磁盘配置为ADP的case,很多工程师对ADP没有任何概念,完全套用老的磁盘的概念来处理ADP的配置,所以搞出很多问题。
NetApp高级磁盘分区(Advanced Disk Partitioning, ADP)是ONTAP 9中的一项磁盘管理技术,其实最早在8.3.1版本中就有了,但大规模使用这个技术是在ONTAP 9.0版本以后。通过将物理磁盘划分为逻辑分区来提高存储效率。说直白点,这个技术的引入是为了解决NetApp的“得盘率”低的弱项,尤其是客户配置磁盘比较少的情况下,实际可用空间和物理空间相比友商低很多的问题。这是由于NetApp的每个机头,就是控制器至少需要3个磁盘来做系统盘。可以想象一下,如果客户就配置了12个大容量的磁盘,2个控制器就是6个磁盘拿来做系统了,数据盘只剩下6个,而且这6个里面还要有校验parity磁盘和spare磁盘,最后基本上就没有可用空间了。有了ADP技术,就解决了这个问题,就是把每个物理磁盘中分出一部分来专门做系统盘的分区,剩余部分做数据盘。
本文档介绍了DP的定义、功能,详细说明了ADPv1(根 根-数据分区)和ADPv2(根-数据-数据分区)的规则,包括分区类型、平台支持、RAID类型和备用SPARE磁盘要求,并提供了一些常用维护命令的格式和说明,包括识别分区和备用分区的命令等。
如果还有进一步的问题,可以添加vx: StorageExpert我们来进行进一步的交流和沟通。
ADP概述
高级磁盘分区(Advanced Disk Partitioning, ADP)是NetApp ONTAP 9的一项新功能,允许将物理磁盘划分为逻辑分区,以优化磁盘利用率,特别适用于中小型系统(如12或24 个HDD的FAS系统和全闪存AFF系统)。每个磁盘被分为根分区(用于节点根聚合root aggregate)和一个或多个数据分区(用于用户数据聚合 data aggregate)。ADP支持两种配置:
- ADPv1(根-数据分区):每个磁盘包含一个数据分区(P1)和一个根分区(P2),主要用于FAS系统。
- ADPv2(根-数据-数据分区):每个磁盘包含两个数据分区(P1、P2)和一个根分区(P3),适用于初始化为ONTAP 9.0或更高版本的AFF全闪存FAS系统。
ADP关键规则
分区类型与数量
- ADPv1:
- 1个数据分区(标记为P1)。
- 1个根分区(标记为P2)。
- ADPv2:
- 2个等大小的数据分区(标记为P1和P2)。
- 1个根分区(标记为P3)。
支持的平台与磁盘类型
- FAS系统(支持ADPv1):
- 磁盘类型:HDD、SSD。
- 系统初始化时最大分区磁盘数:24。
- 支持的RAID类型:RAID-TEC、RAID-DP。
- AFF和全SSD FAS系统(支持ADPv2,需ONTAP 9.0及以上初始化):
- 磁盘类型:仅SSD。
- 系统初始化时最大分区磁盘数:每节点24。
- 支持的RAID类型:RAID-TEC、RAID-DP、RAID4(ONTAP 9.5及以上)。
- 注意:ADPv2不支持混合SSD/HDD配置。
分区大小
分区大小在系统初始化时确定。
HA对中最大分区磁盘数量
- ONTAP 9.14.0及以上:每个HA对最多支持480个分区磁盘。
- 之前版本:每个HA对最多支持240个分区磁盘。
根分区使用
- ADPv1:根分区仅用于节点根聚合(root aggregate)。
- ADPv2:根分区仅用于节点根聚合,但两个数据分区可用于同一聚合,前提是每个分区位于不同的RAID组。
分区与container(磁盘)所有权(ownership)
- ADPv1:
- 同一节点拥有容器(整个磁盘)及其分区(P1和P2)。
- ADPv2:
- 一个节点拥有容器、根分区(P3)和第一个数据分区(P1)。
- HA对中的另一个节点拥有第二个数据分区(P2)。
自动分区支持
ONTAP支持自动分区,但新添加的磁盘有可能不会自动分区,这个需要注意,如果没有自动分区,需要手工去处理的。
备用磁盘要求
- 仅使用分区磁盘的聚合:
- 每个HA对需要1个完整的HDD作为备用磁盘(可分区,但两个分区都需作为备用)。
- 混合分区和整盘的聚合:
- 每个节点需要2个完整的备用磁盘,确保分区磁盘RAID组和整盘RAID组各有备用。
- ADPv2特定要求:
- 每个HA对需要1个完整的备用磁盘(可跨节点分区)。
- 每个节点需要1个完整的备用磁盘,确保分区和整盘RAID组都有备用。
注意事项
- 不支持的RAID类型更改:
- 尝试更改为不支持的RAID类型(如RAID4)会报错,例如:
Error: command failed: Failed to modify raidtype of aggregate "aggr0".
Reason: Change to raidtype RAID4 is not supported.
- 混合配置限制:
- 不支持在同一RAID组中混合分区磁盘和整盘。
- 不支持ADPv2在混合SSD/HDD配置中运行。
常用维护命令
以下是与ADP相关的常用ONTAP命令,用于查看分区状态、管理分区、检查备用磁盘以及识别分区和备用分区。这些命令在ONTAP命令行界面(CLI)中执行。
1. 查看磁盘分区状态
- 命令:disk partition show
- 用途:显示系统中所有磁盘的分区信息,包括分区类型(根分区或数据分区)、所有者和大小。
- 示例:
cluster1::> disk partition show
Disk Partition Node Type Size Owner
-------- --------- ---------- -------- --------- ------------
1.0.0 P1 node1 data 1.8TB node1
1.0.0 P2 node1 root 100GB node1
1.0.1 P1 node1 data 1.8TB node1
1.0.1 P3 node1 root 100GB node1
- 说明:检查ADPv1(P1、P2)或ADPv2(P1、P2、P3)分区的配置是否正确。
2. 检查备用磁盘和分区
- 命令:storage disk partition show -spare
- 用途:列出系统中可用的备用分区和磁盘,确保满足ADP的备用磁盘要求。
- 示例:
cluster1::> storage disk partition show -spare
Disk Partition Node Type Size Owner
-------- --------- ---------- -------- --------- ------------
1.0.2 P1 node1 data 1.8TB node1
1.0.2 P2 node1 root 100GB node1
1.0.3 - node2 spare 1.8TB node2
- 说明:显示分区级别的备用状态,适合验证分区磁盘和整盘的备用情况。也可使用disk show -spare查看整盘备用状态。
3. 手动分区新磁盘
- 命令:disk partition -disk <disk_name> -partition-type <type>
- 用途:手动对新添加的磁盘进行分区(当自动分区未触发时)。
- 示例:
cluster1::> disk partition -disk 1.0.4 -partition-type data
说明:将磁盘1.0.4分区为数据分区。
4. 修改聚合RAID类型
- 命令:aggr modify -aggregate <aggr_name> -raidtype <raid_type>
- 用途:更改聚合的RAID类型(如从RAID-DP到RAID-TEC)。
- 示例:
cluster1::> aggr modify -aggregate aggr0 -raidtype raid_tec
说明:确保目标RAID类型受支持(例如,RAID4仅在ADPv2且ONTAP 9.5及以上支持),否则会报错。
5. 查看聚合中的分区使用情况
- 命令:aggr show -fields disklist,raidtype
- 用途:显示聚合中使用的磁盘或分区及其RAID类型。
- 示例:
cluster1::> aggr show -fields disklist,raidtype
aggregate disklist raidtype
--------- ---------------------- --------
aggr0 1.0.0.P1, 1.0.1.P1 raid_dp
说明:确认聚合是否正确使用分区磁盘,以及RAID组配置是否符合规则。
6. 从聚合级别查看分区信息
- 命令:storage aggregate show-status
- 用途:显示聚合的状态,包括使用的分区磁盘、分区大小和RAID配置。
- 示例:
cluster1::> storage aggregate show-status -node cluster1-01
Owner Node: cluster1-01
Aggregate: aggr0_cluster1_1 (online, raid_dp) (block checksums)
Plex: /aggr0_root_1b/plex0 (online, normal, active, pool0)
RAID Group /aggr0_root_1b/plex0/rg0 (normal, block checksums)
Position Disk Pool Type RPM Usable Size Physical Size Status
-------- --------- ---- ---- --- ----------- ------------- ------
shared 1.10.6 0 SSD - 53.88GB 372.6GB (normal)
shared 1.10.8 0 SSD - 53.88GB 372.6GB (normal)
Aggregate: aggr1 (online, raid_dp, pool0)
Position Disk Pool Type RPM Usable Size Physical Size Status
-------- --------- ---- ---- --- ----------- ------------- ------
shared 1.10.1 0 SSD - 159.2GB 372.6GB (normal)
shared 1.10.3 0 SSD - 159.2GB 372.6GB (normal)
- 说明:Position列中的shared表示磁盘已分区。根聚合和数据聚合的分区大小在Usable Size列中不同(例如,根分区较小,数据分区较大)。
7. 查看整盘和分区备用磁盘
- 命令:storage aggregate show-spare-disks
- 用途:显示整盘和分区备用磁盘的状态,区分未分区磁盘(Spare Pool)和分区备用磁盘(Root-Data或Root-Data-Data)。
- 示例:
cluster1::> storage aggregate show-spare-disks -original-owner cluster1-01
Original Owner: cluster1-01
Pool0
Spare Pool Unpartitioned Spares
Disk Type Class RPM Usable Size Physical Size Status
-------- ---- ------------ --- ----------- ------------- ------
1.10.2 SSD solid-state - 372.4GB 372.6GB zeroed
1.10.7 SSD solid-state - 372.4GB 372.6GB zeroed
Pool0
Root-Data Partitioned Spares
Disk Type Class Local Data Local Root Physical Size Status
-------- ---- ------------ ---------- ---------- ------------- ------
1.10.1 SSD solid-state 159.2GB 0B 372.6GB zeroed
1.10.3 SSD solid-state 159.2GB 0B 372.6GB zeroed
- 说明:显示未分区整盘(Spare Pool)和分区备用磁盘(Root-Data或Root-Data-Data),包括数据分区和根分区的大小。
8. 查看磁盘的容器类型和位置
- 命令:storage disk show -fields container-type,container-name,model,type
- 用途:显示磁盘的容器类型(整盘或分区)及其所在聚合或备用池。
- 示例:
cluster1::> storage disk show -fields container-type,container-name,model,type
disk container-type container-name model type
------ -------------- --------------------- ------------------- ----
1.10.2 spare Pool0 X438_1625400MCSG SSD
1.10.1 shared aggr1, aggr0_root_1a X438_1625400MCSG SSD
1.10.22 shared - X438_1625400MCSG SSD
- 说明:container-type为spare表示未分区整盘,为shared表示已分区。container-name显示分区所属的聚合名称,或“-”表示所有分区都在备用池。
9. 确定分区名称
- 命令:storage disk partition show -container-type spare -node <node_name>
- 用途:在诊断模式下显示备用分区的详细信息,适用于排查低备用警告。
- 示例:
cluster1::*> storage disk partition show -container-type spare -node cluster1-01
Partition Usable Size Container Type Container Name Owner
------------- ----------- -------------- -------------- ------------
1.10.1.P2 159.2GB spare Pool0 cluster1-01
1.10.3.P2 159.2GB spare Pool0 cluster1-01
1.10.8.P2 159.2GB spare Pool0 cluster1-01
- 说明:用于确认备用分区的名称和所有者,特别是在storage aggregate show-spare-disks显示磁盘可用但仍报低备用警告时。
实际应用注意事项
- 查询分区大小:分区大小因平台和ONTAP版本而异,具体信息可以查询官网。
- 错误处理:如尝试更改RAID类型失败,需检查目标RAID类型是否在支持列表中。
- 备用磁盘规划:规划系统时,需确保足够的备用磁盘,尤其是在混合配置场景中。使用storage disk partition show -spare和storage aggregate show-spare-disks验证备用分区和整盘。
- 分区识别:使用storage aggregate show-status和storage disk show确认分区使用情况,特别是在添加新磁盘或排查低备用警告时。
写在最后
NetApp ADP通过将磁盘划分为根分区和数据分区,显著提高了存储资源的利用率,特别适合中小型系统或高性能SSD环境。ADPv1适用于传统FAS系统,ADPv2为AFF系统提供了更灵活的分区方案。实施ADP时,需仔细遵循分区数量、RAID类型支持、备用磁盘要求和所有权管理规则,并注意混合配置和版本限制。结合常用维护命令(如分区识别和备用磁盘检查)以及NetApp相关文档的规划,可确保系统性能和可靠性。