内容纲要

[Warning: The resulting partition is not properly aligned for best performance

在使用parted创建分区时产生告警信息, "Warning: The resulting partition is not properly aligned for best performance."

这个问题Redhat官网有解析:https://access.redhat.com/mt/zh-hans/solutions/184143

问题

  在使用parted分区工具时,告警显示新的分区没有正确对齐以达到最佳性能。

(parted) mkpart primary 128 1048575
Warning: You requested a partition from 128s to 1048575s.                 
The closest location we can manage is 128s to 1048542s.
Is this still acceptable to you?
Yes/No? Yes                                                               
Warning: The resulting partition is not properly aligned for best performance.          <-----
Ignore/Cancel? C  

 忽略这个告警分区可以正常创建,只不过会影响磁盘性能。那么该如何创建一个正确对齐的分区呢?

解决方案

1、百分比

  一般来说只要正确的选择分区开始的位置就可以解决这个问题,但需要查询和计算一下相应的参数。通常相较于使用明确的开始和结束位置使用百分比可以更容易使分区对齐。

创建单个分区

mkpart primary 0% 100%

or

mkpart primary 0% 320GB

或创建两个大小相等的分区

mkpart primary 0% 50% && mkpart primary 50% 100%

2、1MiB偏移量

           
一般情况下,很大一部分磁盘的默认对齐粒度为1MiB,因此在大多数情况下,使用MiB作为mkpart中的单元就可以创建一个对齐的分区。由于磁盘空间上的第一个MiB包括0扇区中的遗留主引导记录(MBR)和紧随其后的gpt主表(如果是gpt类型),因此需要跳过磁盘上的第一个MiB,并从1MiB开始分区:

例如,创建单个分区

mkpart primary 1MiB 100%

3、计算偏移量

  如果使用百分比或1MiB偏移量不起作用,可以通过查询设备相应的sysfs条目来直接计算所需的对齐
获取如下值:

# cat /sys/block/sdb/queue/optimal_io_size
# cat /sys/block/sdb/alignment_offset
# cat /sys/block/sdb/queue/physical_block_size

获取正确的偏移扇区数是将 optimal_io_sizealignment_offset 相加然后除以 physical_block_size.

For example:

optimal_io_size = 1310720
alignment_offset = 0
physical_block_size = 512

i.e 1310720+0/512 = 2560

现在创建分区的命令可以是:

(parted)  mkpart primary 2560 100%    OR

(parted)  mkpart primary 2560 1000G