在 1536KiB 擦除块 SSD 上正确对齐 Linux 分区

在 1536KiB 擦除块 SSD 上正确对齐 Linux 分区

尝试设置双启动 Windows 7 和 Arch Linux。

三星 840 EVO 120GB SSD。

擦除块大小:1536KiB。扇区数:3072(512 * 3072 = 1572864 = 1024 * 1536)

当使用 GPT 对驱动器进行分区时,这似乎很简单。

但是,我已经安装了 Windows 7,是通过 USB(而不是 UEFI)启动 USB 安装介质进行的,因此 Windows 7 使用 MBR 自行安装在磁盘上。

因此,当我尝试安装 Arch 并运行时,fdisk -b 3072 /dev/sda它会失败,因为3072无效,但它会接受-b 4096。它似乎假设不存在实际上未与 1 或 2MB 边界块对齐的 SSD。

类似地,Windows 的 100MBSystem Reserved分区从扇区 2048 开始。这也没有对齐!

该怎么办?我可以挽救或解决这个问题以避免重新安装 Windows 吗?还是我操作时存在错误假设?网上有很多令人困惑的信息,其中很多可能已经过时了。

答案1

在此上下文中使用fdisk-b选项!该选项设置磁盘的逻辑扇区大小,您应该不是不需要设置,因为内核几乎总是能正确检测到它。只有当您的驱动程序有问题或使用虚拟磁盘或类似的东西进行开发工作时,才需要该选项。

相反,你应该手动计算最佳对齐值。例如,如果你知道你想要一个分区从扇区 200000 左右的某个地方开始,你可以:

  1. 将 200,000 除以 3072,得出 65.1。
  2. 向上舍入(或者可能向下舍入,如果在初始起点猜测之前有空格),得到 66。
  3. 乘以 3072,得出 202,752。
  4. 输入该值作为分区的起点。
  5. 输入所需的终点或分区长度。请注意,终点不会不是需要对齐,尽管如果使其小于 3072 的倍数 1,结果也不会导致分区之间浪费空间。

最容易使用fdisk或来完成此操作parted,但如果您想使用,parted则必须键入unit s以扇区为单位。(最新版本的fdisk默认单位为扇区。)GParted 几乎无法完成此任务。请注意,您不必费心对齐扩展分区;它只包含一个 512 字节的数据结构,因此从非常实际的意义上讲,它不能正确对齐。包含的逻辑分区之内但是,扩展分区应该正确对齐。

完成后,将所有分区的起点除以 3072。它们都应该是整数(同样,扩展分区可能除外)。

相关内容