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 = 4824576 / 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未分區的可用空間。

但功能或性能不會改變。忽略並保持原樣就可以了。

相關內容