![为什么 mdadm 会缩短我的线性虚拟软件 raid 设备上的 33 个扇区?](https://linux22.com/image/1504840/%E4%B8%BA%E4%BB%80%E4%B9%88%20mdadm%20%E4%BC%9A%E7%BC%A9%E7%9F%AD%E6%88%91%E7%9A%84%E7%BA%BF%E6%80%A7%E8%99%9A%E6%8B%9F%E8%BD%AF%E4%BB%B6%20raid%20%E8%AE%BE%E5%A4%87%E4%B8%8A%E7%9A%84%2033%20%E4%B8%AA%E6%89%87%E5%8C%BA%EF%BC%9F.png)
我正在构建一个新的计算机系统,使用 Windows 7 Professional 和 Ubuntu。我正在遵循本教程:
我希望能够在 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 个扇区,这正是您所缺少的。