为什么 mdadm 会缩短我的线性虚拟软件 raid 设备上的 33 个扇区?

为什么 mdadm 会缩短我的线性虚拟软件 raid 设备上的 33 个扇区?

我正在构建一个新的计算机系统,使用 Windows 7 Professional 和 Ubuntu。我正在遵循本教程:

http://fds-team.de/cms/articles/2013-12/use-a-real-windows-7-partition-in-virtualbox-kvm-vmware-player-u.html

我希望能够在 Linux 中的 VirtualBox 中运行我的 Windows 7 安装,而且还可以从 BIOS 启动它,以便在必要时充分利用硬件。

因此,当我尝试创建使用创建的虚拟磁盘的新分区表时,我没有遇到任何问题mdadm

如果我运行,fdisk -l我会得到这个:

Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 078AFEF0-6B0F-443D-8572-3D6413D0FF63

Device             Start        End   Sectors  Size Type
/dev/nvme0n1p1      2048     206847    204800  100M EFI System
/dev/nvme0n1p2    206848     468991    262144  128M Microsoft reserved
/dev/nvme0n1p3    468992  210184191 209715200  100G Microsoft basic data
/dev/nvme0n1p4 210184192  419899391 209715200  100G Microsoft basic data
/dev/nvme0n1p5 419899392  554117119 134217728   64G Linux filesystem
/dev/nvme0n1p6 554117120  973547519 419430400  200G Linux filesystem
/dev/nvme0n1p7 973547520 1000214527  26667008 12.7G Linux swap

我运行这个来创建我的虚拟磁盘:

mdadm --build /dev/md0 --level=linear --raid-devices=4 /dev/loop0 /dev/nvme0n1p1 /dev/nvme0n1p2 /dev/nvme0n1p3

但是当我尝试/dev/md0使用gdisk我的设备进行分区时,结束于 210184158 而不是 210184191,缺少 33 个扇区。EFI 分区工作正常,但是当我使用 210184158 作为结束扇区时,NTFS(主 Windows 分区)无法正确读取。为什么mdadm我的最后一个设备上缺少 33 个扇区?

答案1

您的fdisk输出包含以下行:

磁盘标签类型:gpt

GPT 磁盘在磁盘的最末端存储了磁盘分区表和磁盘头的备份。您可以阅读这里

磁盘最后一个逻辑扇区之前的 16 KiB(默认)

次要 GPT 表 - 它与主表逐字节相同。主要用于在主分区表损坏的情况下进行恢复。

磁盘的最后一个逻辑扇区或最后 512 个字节

辅助 GPT 标头 - 包含唯一磁盘 GUID、辅助分区表的位置、分区表中可能的条目数、其自身和辅助分区表的 CRC32 校验和、主 GPT 标头的位置。如果主标头损坏,可以使用此标头恢复 GPT 信息。

由于您的扇区大小为 512 字节,因此 16KiB + 最后一个逻辑扇区对应 33 个扇区,这正是您所缺少的。

相关内容