磁盘分区对齐详解与配置 – Linux篇

系统 Linux
在之前一篇《磁盘分区对齐详解与配置 – Windows篇》中,我介绍了磁盘分区对齐的作用和适用于MBR和GPT的两种磁盘类型的配置,以及Windows平台设置磁盘分区对齐的方法。本文作为系列的第二篇,文章就分区对齐在存储系统缓存和Raid5下I/O分析,解释了为什么64KB作为offset错位的推荐配置。

介绍

在之前一篇《磁盘分区对齐详解与配置 – Windows篇》中,我介绍了磁盘分区对齐的作用和适用于MBR和GPT的两种磁盘类型的配置,以及Windows平台设置磁盘分区对齐的方法。本文作为系列的第二篇,文章就分区对齐在存储系统缓存和Raid5下I/O分析,解释了为什么64KB作为offset错位的推荐配置。并且提供了使用Linux命令fdisk和parted创建磁盘分区对齐的方法。

更多信息

存储系统的磁道区域与Linux分区对齐问题:

出于***化性能需求,任何到后端存储阵列的I/O需要通过配置适当的结构化,从而避免任何I/O操作跨界现象的发生。如果I/O操作跨越多个界限,会带来额外的资源开销从而造成性能下降。所以,为了避免因为分区不对齐所造成的性能影响。需要使用工fdisk或者parted工具创建和对齐分区。

如何选择一个正确的磁盘分区offset值,基本上EMC和其他厂商建议的值都是“64KB”。为什么要选择64KB这个值呢,这里解释一下。首先讲一下一个叫做物理磁道区域的概念。因为对于不同类型的保护级别,也可以说叫Raid和磁盘类型,这个区域的范围有所不同的。我们举两个个例子:

Symmetrix缓存中的磁道区域单位大小为一个Track,即64个Block、32KB大小。如图2所示,如果磁盘分区没有被对齐,则任何32KB或者更大的I/O就需要跨越两个Track来进行,50%的16KB的I/O会可能会跨越两个Track,25%的8KB也会跨越两个Track,造成额外的存储系统性能开销。

6_5_1

图1

看了***个例子,读者可能会想,那把起始位右移一个Block就好了啊,(MBR+Reserved=63Block),就不会有跨Track的I/O发生了。接下来我们再看另外一个例子。一个3+1 Raid5的单个条带大小为四个Track,即256个Block、128KB大小。如果对于这类的磁盘,使用第64个block为起始位置,当linux I/O大小达到64KB的时候,如果I/O直接从缓存(单个track为32KB),则正好完成两次读取。但是如果,两个连续的64KB I/O,且需要牵涉到后端Raid5的物理磁盘读写,如下图所示,第二个64KB就会出现跨越两个条带的情况发生,从而倒是读或者写的开销加倍。

6_5_2

图2

在这种情况下,需要将起始位置调节成建议配置(64KB),这样一来,Linux***I/O大小的情况也不会发生跨多个条带的情况发生了。(图3)

6_5_3

图3

所以说,无论是从存储系统的缓存从读取数据,还是I/O在缓存中不存在的情况,需要从底层物理磁盘上读取数据。对于不同类型的磁盘,64KB的起始为是一个建议配置。

Linux创建分区对齐方法:

描述了磁盘分区对齐的原理后,下面介绍如何使用fdisk创建对齐分区的例子。在Linux中,对齐分区操作需要要空数据的情况下进行,因为对齐分区操作会清空分区表并且该LUN上的数据会被删除。在这个例子中,我们对/dev/emcpowerfw设备,创建一个大小为51281 Cylinder(Cylinder是Symmetrix的计量单位,每个Cylinder大小为960KB,所以这个磁盘大小为50GB左右)、Offset错位大小为128个block的磁盘设备。方法和命令输出(图4)如下:

方法1,使用fdisk创建分区对齐

Linux命令提示符下输入:

  1. # fdisk /dev/emcpowerfw 
  • 输入n,创建一个分区;
  • 输入p,创建分区为主分区;
  • 输入起始Cylinder位置,默认为***个;
  • 输入***Cylinder位置,默认为该磁盘设备的***一个Cylinder;
  • 输入x进入expect mode;
  • 输入b,一定分区初始位置;
  • 设定最初位置为128个block(128 block大小为64KB);
  • 再次输入p确认分区初始位置信息;
  • 输入w保存退出。

6_5_4

图4

方法2:使用parted创建对齐分区。Parted和fdisk相比,支持更多的类型(支持GPT)和更大的分区尺寸。下面一个例子给出一个给dev/sdb磁盘创建128bloc分区起始位的例子,方法和命令输出如下

Linux命令提示符下输入:

  1. # parted /dev/sdb 

将显示单位调整为Sector(大小512个字节):

  1. (parted) unit s 

列出当前逻辑卷:

  1. (parted) print 

将原来Number1移除并且创建一个起始位为128 sector,小为976735934 sector的主分区。

  1. (parted) rm 1 
  2. (parted) mkpart primary 128 976735934 
  3. (parted) print 

6_5_5

图5

参考

Parted命令手册及参数:http://www.gnu.org/software/parted/manual/parted.html#unit

Fdisk命令手册及参数:http://manpages.courier-mta.org/htmlman8/fdisk.8.html

EMC-Host-Connectivity-Guide-for-Linux

《磁盘分区对齐详解与配置 – Windows篇》

应用于

Linux Operation System

EMC Symmetrix,VNX,Clarriion存储系列

原文出处: EMC中文支持论坛   

责任编辑:黄丹 来源: 伯乐在线
相关推荐

2014-06-09 10:09:31

Linux磁盘分区

2014-05-30 09:44:18

磁盘分区Windows平台

2011-01-18 09:51:59

Linux磁盘分区

2011-01-18 10:00:59

Linux磁盘分区

2013-08-23 14:07:45

磁盘分区

2009-10-19 18:01:35

Linux磁盘分区

2011-01-18 10:25:19

Linux磁盘分区

2010-02-25 13:34:24

Linux磁盘分区

2017-03-09 14:58:19

GPartedLinux磁盘分区

2023-01-31 14:00:01

TIAPUUID

2019-02-11 14:50:21

Linux分区命令

2018-06-25 11:58:23

Linuxparted磁盘分区

2010-03-02 15:09:26

Linux mount

2022-04-12 17:39:14

Linux磁盘分区

2010-06-24 15:53:10

Linux指令

2017-09-13 09:23:04

磁盘分区bash

2020-01-11 19:00:01

GParted磁盘分区工具开源

2017-05-10 07:00:20

磁盘分区dcfldd工具备份分区

2009-12-15 08:50:58

Windows 7系统分区

2009-11-24 09:28:11

linux分区大磁盘分区
点赞
收藏

51CTO技术栈公众号