如何解决磁盘卷扩容后在Windows分区时报错“无法拓展该卷因为集群的数量将超过文件系统支持的最大集群数量”

问题描述

客户原来系统上有一个16TB的LUN,现客户磁盘空间不足,需要扩展16TB,在存储上将LUN扩容后。操作系统上层重新识别后报如下错误:

image-20240523194850803

 

原理分析

Microsoft为了使操作系统完全支持容量超过 2 TB (2 TB 或 2 万亿字节) 的存储设备,必须使用 GUID 分区表 (GPT) 分区方案对设备进行初始化。 此方案支持寻址全部存储容量。 如果用户打算使用这些大容量磁盘作为启动盘,则系统的基本固件接口必须支持UEFI而不仅仅是BIOS。

详细信息

使用名为"逻辑块寻址"的方案在LBA(现代存储设备)。它是构成媒体的逻辑部门的排列。LBA0表示设备的第一个逻辑扇区,最后一个 LBA 指定表示设备的最后一个逻辑扇区,每个扇区一个标签。 若要确定存储设备的容量,将设备内逻辑扇区的数量乘以每个逻辑扇区的大小。当前每个逻辑扇区大小标准为512字节。

例如
要实现容量为2TB的设备,必须具有3,906,250,000个512字节扇区。计算机系统需要32(1 和 0)位信息来表示这一大数字。任何大于32位可表示的存储容量都需要额外一位。即33 位。MBR分区中逻辑扇区数的位数设置了32个限制。
2TB容量的限制就是32位限制的结果。由于使用32位可以表示的最大数量为 4,294,967,295,因此,它通过使用512字节扇区最大可以转换为2.199TB的容量(大约 2.2 TB)。超过 2.2TB的容量不能使用。若使用更多的位寻址,必须使用GPT初始化存储设备。GPT分区方案允许多达64位在逻辑扇区内使用。它转换后是9.4ZB或9.4(9.4TB或9.4亿TB)。传统的BIOS不支持GPT,必须使用UEFI才能支持。

GPT磁盘上支持的最大NTFS卷大小,这取决于在设置格式时选择的群集大小。NTFS当前限制为2^32-1个分配单元。使用64k群集可生成256TB卷。但是使用4K群集仅为16TB或17,592,186,040,320字节。

下表显示了基于群集大小的 NTFS 限制:

群集大小 最大 NTFS 卷大小 (字节 RAW)
512 2,199,023,255,040 (2TB)
1,024 4,398,046,510,080 (4TB)
2,048 8,796,093,020,160 (8TB)
4,096 17,592,186,040,320 (16TB)
8,192 35,184,372,080,640 (32TB)
16,384 70,368,744,161,280 (64TB)
32,768 140,737,488,322,560 (128TB)
65,536 281,474,976,645,120 (256TB)

支持大型卷
在 Windows Server 2019和Windows10(1709)版本以上,NTFS 可以支持8PB大的卷(早期版本最大支持256TB)。支持的卷大小受群集大小和群集数量的影响。在具有(232-1)个群集(NTFS 支持的最大群集数量)的情况下,支持以下卷和文件大小。

群集大小 最大的卷和文件
4KB(默认大小) 16 TB
8 KB 32 TB
16 KB 64 TB
32 KB 128 TB
64KB(早期最大值) 256 TB
128 KB 512 TB
256 KB 1 PB
512 KB 2 PB
1024 KB 4 PB
2048KB(最大大小) 8 PB

请注意,如果尝试格式化群集大小大于使用的Windows版本支持的最大值是,会提示 STATUS_UNRECOGNIZED_VOLUME错误

个人理解:以上提到的“集群大小”就是格式化选项中的“分配单元大小”,有人也叫簇大小

image-20240523190711234

处理过程

已经分区容量为16T,未分配16T,如果没有报错的话 扩展后为32T
在这里插入图片描述

 

通过命令Fsutil fsinfo ntfsinfo G:进行查看该数据盘最大支持集群数量

查询硬盘群集字节大小,实例为4K,对上上文图示簇大小对应最大卷容量的表格确认4K的簇支持容量范围从2T到16T,原始扩展的容量已经是16T,所以导致不能扩容至32T容量

image-20240523201806122

经过查询这是因为windows2008上的簇大小决定的:

在进行扩展磁盘分区即“扩展卷”操作时,需要注意微软对分区的簇大小及个数的限制。win2000之后的系统在NTFS文件系统中分区大小为16TB以下时,簇大小默认为4KB,而16TB~32TB时默认簇大小为8KB。

如果扩容之前的分区大小与扩容后的大小不在一个簇大小下。系统会提示:“无法扩展该卷,因为群集的数量将超过文件系统支持的最大群集数量。”因此扩展卷时,该卷只能扩展到当前簇大小所支持的最大值。

1716466331614

解决方案

处理建议

  1. 建议不在原的分区上进行扩容,而是对扩容的磁盘空间进行新建分区的操作,这样系统会对新建分区适配相应的簇大小;
  2. 建议减少扩展卷的大小,根据簇大小支持的最大容量来判断最大扩展卷的容量,再进行扩容;
  3. 备份现有分区上的数据后,格式化分区,重新创建分区,在新建分区时修改簇的大小。

调整磁盘的簇大小通常需要对磁盘进行格式化,因为簇大小的更改涉及到重新组织磁盘上的数据结构。然而,如果你不希望格式化磁盘,可以尝试以下步骤来尽量避免数据丢失:

使用第三方工具调整簇大小

一些第三方工具可以在不完全格式化磁盘的情况下调整簇大小。以下是一些常见的工具:

  1. EaseUS Partition Master
    • 下载并安装EaseUS Partition Master。
    • 打开EaseUS Partition Master,找到需要调整的分区。
    • 选择“分区”菜单中的“调整/移动分区”选项。
    • 设置新的簇大小。
    • 应用更改并等待工具完成调整。
  2. MiniTool Partition Wizard
    • 下载并安装MiniTool Partition Wizard。
    • 打开MiniTool Partition Wizard,找到需要调整的分区。
    • 选择“更改簇大小”选项。
    • 设置新的簇大小。
    • 应用更改并等待工具完成调整。

使用数据备份和恢复方法

如果无法避免格式化,可以通过以下方法来保护数据:

  1. 备份数据
    • 使用系统自带的备份工具或第三方备份工具(如Acronis True Image或Macrium Reflect)备份整个分区的数据到外部存储设备。
  2. 格式化分区
    • 通过磁盘管理工具或命令行工具(如Disk Management或diskpart)格式化分区,并在格式化时设置所需的簇大小。
  3. 恢复数据
    • 使用备份工具将数据恢复到格式化后的分区。

使用命令行工具

如果你确定要使用命令行工具,可以按照以下步骤操作(注意,这仍然可能导致数据丢失):

  1. 备份数据
    • 备份重要数据到外部存储设备。
  2. 格式化分区
    • 打开命令提示符(以管理员身份运行)。
    • 使用
      format
      

      命令进行格式化,并设置簇大小。例如:

      shell
      复制代码
      format X: /Q /FS:NTFS /A:64K
      

      其中

      X:
      

      是你要格式化的驱动器号,

      /A:64K
      

      是你希望设置的簇大小。

建议与总结

windows系统在进行分区格式化时会自动校验簇的大小,根据簇大小来检查新建卷或者扩展卷的容量是否在簇大小所支持的容量范围内,因此在扩容分区容量前建议先确认一下分区配置的簇大小后再进行扩容。

另外建议在windows系统中部署业务集群时,也需要提前规划好簇的大小,来满足后续业务发展对容量的需求

调整簇大小通常需要格式化磁盘,因此备份数据是非常重要的。第三方工具可能提供非格式化调整簇大小的功能,但仍然建议进行数据备份以防万一。如果需要调整簇大小且无法避免格式化,备份和恢复数据是最安全的方法。