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
未分区的可用空间。
但功能或性能不会发生变化。忽略并保持原样就可以了。