我刚刚在我的新英特尔 SSD 上安装了 ubuntu。现在我不确定分区是否与我的特定 SSD 正确对齐。
这是我的 fdisk 输出。
$ fdisk -l
Platte /dev/sda: 120.0 GByte, 120034123776 Byte
255 Köpfe, 63 Sektoren/Spur, 14593 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a6294
Gerät boot. Anfang Ende Blöcke Id System
/dev/sda1 * 1 1913 15360000 83 Linux
/dev/sda2 1913 14058 97558528 83 Linux
/dev/sda3 14058 14594 4300800 82 Linux Swap / Solaris
Run Code Online (Sandbox Code Playgroud)
另外,我是否仍然需要对齐我的 SSD,因为我在 ext4 分区上使用了 TRIM,方法是将它们与discard标志一起安装。
如果是这种情况,我的分区没有正确对齐,我可以做些什么来解决这个问题,而不必重新安装所有东西?
小智 56
Parted 有一个 align-check 内置。
parted /dev/sda
align-check opt n
Run Code Online (Sandbox Code Playgroud)
n 是您要检查的分区。
小智 11
确保 SSD 与 parted 工具对齐看起来是一个很好的指南,用于对齐 SSD 上的文件系统:
启动分区编辑器:
sudo parted
Run Code Online (Sandbox Code Playgroud)显示分区表:
p
Run Code Online (Sandbox Code Playgroud)Start和Size列中的数字是否可以被块大小整除。为了确保您必须使用内置的对齐parted检查选项:
硬盘:
DEVICE=/dev/sda && for i in `sudo parted $DEVICE print | grep -oE "^[[:blank:]]*[0-9]+"`; do sudo parted $DEVICE align-check opt "$i"; done
Run Code Online (Sandbox Code Playgroud)
固态硬盘:
DEVICE=/dev/nvme0n1 && for i in `sudo parted $DEVICE print | grep -oE "^[[:blank:]]*[0-9]+"`; do sudo parted $DEVICE align-check opt "$i"; done
Run Code Online (Sandbox Code Playgroud)
和手动检查(计算被4096B整除)
我编写了一个 bash 脚本来执行这两项检查:
https://github.com/crysman/check-partitions-alignment
(适用于任何 GNU/Linux 操作系统)
或者您可以使用此表手动检查:
https://docs.google.com/spreadsheets/d/1dnDlhglxxgApvtUv0-nxn1iFYTqkjRELqCOWJtp3hbs/edit#gid=0
是的,SSD HDD 的分区需要正确对齐才能获得最大性能。