有没有办法创建小于 1MB 的 EFI 分区,或者我读取的分区大小错误,因为磁盘已转换为动态

有没有办法创建小于 1MB 的 EFI 分区,或者我读取的分区大小错误,因为磁盘已转换为动态

我一直尝试在 Windows Server 2012 R2 中向系统驱动器添加镜像,但一直收到错误:

保存给定卷的所有磁盘必须具有相同的扇区大小,并且该扇区必须有效。

在研究这个问题时,我发现最可能的原因是因为驱动器的分区不一样,而且我遇到了本文(KB951985)它提供了如何设置磁盘来镜像系统驱动器的逐步说明。

问题是它希望你使用以下方法获取 EFI 和 MSR 分区的大小

diskpart.exe DISKPART>select disk 0 DISKPART>list partitions

根据文章,我应该看到类似以下内容

Partition ###  Type              Size     Offset
-------------  ----------------  -------  -------
Partition 1    System             200 MB  1024 KB <- EFI PARTITION
Partition 2    Reserved           128 MB   201 MB <- MSR PARTITION
Partition 3    Primary             50 GB   329 MB

但由于我的驱动器已转换为动态,所以我看到了这一点。(这不应该成为该过程的障碍,因为它需要在添加镜像之前是动态的)

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Dynamic Data       992 KB    31 KB
  Partition 2    Dynamic Data       350 MB  1024 KB
  Partition 3    Dynamic Data       931 GB   351 MB
  Partition 4    Dynamic Data       728 KB   931 GB

如果我查看 diskpart 文档,我会在“列出分区”下看到以下内容

显示当前磁盘分区表中列出的分区。在动态磁盘上,这些分区可能与磁盘上的动态卷不对应。出现这种差异的原因是动态磁盘在分区表中包含系统卷或启动卷(如果磁盘上存在)的条目。动态磁盘还包含一个占用磁盘剩余空间并保留空间供动态卷使用的分区。

由此我可以做出以下推测:

  • 分区 1 是 EFI 分区
  • 分区 2 是 MSR 分区
  • 分区 3 是我的 C 盘
  • 分区 4 是占据磁盘剩余空间的分区。

问题是我无法创建 992 KB 的 EFI 分区,因为创建 efi 分区的大小是以 MB 为单位指定的。

Syntax:  CREATE PARTITION EFI [SIZE=<N>] [OFFSET=<N>] [NOERR]

    SIZE=<N>    The size of the partition in megabytes (MB). If no size is
                given, the partition continues until there is no more free
                space in the current region.

有什么方法可以做到这一点,还是我对分区的解释不正确?

答案1

您要遵循的说明适用于 Windows Server 2008。

Windows 7 及更新版本(包括 Server 2012 及更高版本)会将 EFI 分区格式化为 FAT32,其具有最小尺寸限制65525 个集群。如果您的磁盘使用 512 字节块大小,则相当于近 32 MiB(准确地说是 33548800 字节)。如果您的存储系统使用 4 KiB 块,则所需的最小大小几乎是 256 MiB(268390400 字节)。

目前,Microsoft 建议的 EFI 分区大小为:对于使用 512 字节块的磁盘,EFI 分区大小为 100 MiB;对于使用 4 KiB 块的磁盘,EFI 分区大小为 260 MiB。对于长期服务器使用,如果系统将来有可能迁移到使用 4 KiB 块的存储,我会考虑在任何一种情况下设置具有 260 MiB EFI 分区的新系统磁盘。

因此,对于 Windows Server 2012 R2 来说,假定的 992 kb 的 EFI 分区大小是不正确的。如果系统最初安装为 Server 2003 并从那里升级,它可能继承了由早期实现的 Windows UEFI 启动支持创建的 EFI 分区,该分区具有不同的要求,并且可能在 EFI 分区上使用 FAT12/FAT16 格式,这不再被认为是正确的(但不会主动阻止其工作)。

如果是这种情况,您可能需要第三方分区工具将当前系统磁盘分区布局复制到新磁盘。但是,我会认真考虑将系统迁移到当前标准布局的任何可能性,以防止将来升级时出现复杂情况。

如果您的系统使用 UEFI 本机启动样式,则 EFI 分区需要被固件识别,即无论操作系统是否使用动态磁盘,其要求都不会改变。

答案2

答案3

ESP/EFI 分区是普通的 fat16/fat32 分区,id="c12a7328-f81f-11d2-ba4b-00a0c93ec93b"

因此,您可以按照下面的命令使用 diskpart 手动创建”

select disk M
clean
convert gpt
create partition primary size=1
format quick fs=fat label="ESP"
set id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
assign letter="S"

你可能想先在虚拟机中测试一下,...顺便说一句,1M 对于 EFI 来说太小了,至少 16M,因为 Windows EFI 文件大小为 8M+(不含中文/TN/KOR 语言),而所有语言文件的 EFI 大小最小为 16M。如果你的 SDD 较小,你可以选择 16MiB

相关内容