Parted 表示未对齐,但应该是正确的

Parted 表示未对齐,但应该是正确的
Model: ATA Samsung SSD 850 (scsi)
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start        End            Size           File system  Name  Flags
 1      24576B       1048575B       1024000B                          bios_grub
 2      1048576B     537919487B     536870912B     fat32              boot, esp
 3      537919488B   1611661311B    1073741824B    zfs
 4      1611661312B  500107845119B  498496183808B  zfs

parted /dev/sda align-check optimal 1
> 1 not aligned
parted /dev/sda align-check optimal 2
> 2 aligned
parted /dev/sda align-check optimal 3
> 3 aligned
parted /dev/sda align-check optimal 4
> 4 aligned

扇区大小显示为 512B,但实际上我猜测是 4096B,因为它是 SSD,无论哪种方式,它都应该是可整除的24576 / 512 = 48,,24576 / 4096 = 6。是否有任何原因分开说它不对齐。

我知道当前的配置不应对性能产生任何影响,因为它仅在启动时读取(如果有的话),但只是好奇为什么会按原样报告它。

作为参考,分区布局是 Debian ZFS 在 Root 上建议的分区布局(https://openzfs.github.io/openzfs-docs/Getting%20Started/Debian/Debian%20Buster%20Root%20on%20ZFS.html

答案1

试试吧align-check minimal 1,应该没问题。

不管分手时会考虑什么最佳的对于您的硬件,优化闪存的分区布局应考虑到芯片的组织方式页面 擦除块

你不能简单地覆盖。控制设备的处理器必须首先擦除它,并且只能以比页面大小大得多的单位进行擦除。

当您的设备的页面大小可能在 2KB-32KB 范围内时,擦除块大小通常介于 128KB 和 2MB 之间(64 倍以上),具体取决于磁盘的容量。 4MB 在 GB 类别中并不罕见。

** 驱动器上的所有操作只能在这些单元中进行 **

=> 忘记页面大小,打开特定设备的数据表,找到页面大小擦除块然后相应地对齐分区。

小心:那是三星玩得很开心的时候奇怪价值观,并且并不特别渴望披露这些信息。

答案2

它“未对齐”,但对于分区来说也无关紧要bios_grub。 Grub 只在那里存储几千字节的数据,引导时会读取一次。对齐与否,在实践中没有什么区别。

最新版本parted可能对对齐消息更加详细:

# parted --version
parted (GNU parted) 3.3
Copyright (C) 2019 Free Software Foundation, Inc.
...
# parted /dev/loop0 align-check optimal 1
1 not aligned: 48s % 2048s != 0s

因此,就 MiB 对齐而言,它是“未对齐”的。考虑到 SSD 可能在内部使用 4K、8K、16K 页,因此 6*4K 是一个稍微奇怪的对齐值,因此它也可能未对齐。

以这种方式创建分区的目的不是对齐,而是最大化空间利用率。尽管很难想出一个 Grub 实际上需要的不仅仅是几个扇区的用例。

如果您无论如何都想“修复”它,您可以将bios_grub分区放在偏移量 1 MiB 处,并让boot, esp分区从 2 MiB 开始,将当前占用的区域保留为bios_grub未分区的可用空间。

但功能或性能不会发生变化。忽略并保持原样就可以了。

相关内容