The resulting partition is not properly aligned for best performance的解决方法

在linux下给容量大于2TB的硬盘分区,只能使用parted工具了。在使用parted工具的时候,可能会遇到一些问题,在fdisk下都是熟练地全默认设置,在parted下却不能这么做了。

如果我们新插入了一块硬盘,在系统中识别为/dev/sdb,则可以使用以下的命令开始分区:

parted /dev/sdb

此时进入parted后,执行命令可能会出现如下的错误:

Error: /dev/sdb: unrecognised disk label

这是由于我们还未对这个磁盘设定分区表模式,如果是容量大于2TB的磁盘,我们可以分区表模式设定为GPT,如果是小于2TB的盘,使用传统的msdos模式就可以了:

mklabel gpt

在parted中分区,可以使用makepart命令,使用如下的命令就可以默认地将整块盘都划分为一个分区:

mkpart primary 0 100%
这几个参数的意义分别是: 主分区、起始扇区、分区占用空间的比例。

看起来没啥问题,但是如果一路默认设定,可能最后会出现如下的提示:

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

只是个警告,但是事关性能的问题,还是仔细看一下吧。从网上查到的信息是,由于在分区时起始扇区设置不合理,导致了出现这样的警告。
如何设定这个起始扇区的位置呢,可以看以下几个文件的值:

# cat /sys/block/sdb/queue/optimal_io_size
1048576
# cat /sys/block/sdb/queue/minimum_io_size
262144
# cat /sys/block/sdb/alignment_offset
0
# cat /sys/block/sdb/queue/physical_block_size
512

如果optimal_io_size不为0,则可以用optimal_io_size的值加上alignment_offset的值,然后除以physical_block_size的值,就是起始扇区的位置了,如上面的例子中,可以用这个公式算出来起始扇区的设定值:

(1048576 + 0) / 512 = 2048

如果optimal_io_size为0,那么我们最好直接使用起始扇区的默认值2048。

最后在分区的时候使用以下的命令就可以了:

mkpart primary 2048s 100%

(不要忘记2048后的s单位)
此时分区后就不会出现The resulting partition is not properly aligned for best performance的警告了。

参考: http://rainbow.chard.org/2013/01/30/how-to-align-partitions-for-best-performance-using-parted/

评论