我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux磁盘分区对齐问题与配置方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux磁盘分区对齐问题与配置方式

这篇文章主要讲解了“Linux磁盘分区对齐问题与配置方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux磁盘分区对齐问题与配置方式”吧!

什么是磁盘分区对齐(Disk Alignment、Partition Alignment)

Windows的磁盘有一种结构叫做Master Boot Record(MBR), 它的默认大小为63个Block(每个大小为512字节)。它的存在使得磁盘的初始位置和的磁盘上***个分区的初始位置有63个Block的错位。如果磁盘的单个Track大于63个Block的话。这就会导致默认的初始的位置是从第64个开始。使文件系统的中的Track和位于磁盘中的两个Track之上。这种不对齐现象会导致存储系统的性能下降,原因是单个I/O请求会跨越多个磁盘上的Track,从而导致存储系统的额外性能开销。特别是对于一些随机I/O比较较大的应用程序,影响将更大。

Linux磁盘分区对齐问题与配置方式

而对于Windows 2003以后支持的GPT Disk,也会存在磁盘分区不对齐的现象,但是结构有所不同。如图1所示(图中单位为Block,512字节),所有的分区由1MB大小(2048 Block)构成,***个分区从LBA 34开始,即17KB大小位置。这也就意味着所有的分区会有17KB的不对齐的情况发生。同样会导致I/O读写性能影响。

Linux磁盘分区对齐问题与配置方式

存储系统的磁道区域与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,造成额外的存储系统性能开销。

Linux磁盘分区对齐问题与配置方式

看了***个例子,读者可能会想,那把起始位右移一个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就会出现跨越两个条带的情况发生,从而倒是读或者写的开销加倍。

Linux磁盘分区对齐问题与配置方式

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

Linux磁盘分区对齐问题与配置方式

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

Linux创建分区对齐方法

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

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

Linux命令提示符下输入:

# fdisk /dev/emcpowerfw

输入n,创建一个分区:

输入p,创建分区为主分区:

输入起始Cylinder位置,默认为***个:

输入***Cylinder位置,默认为该磁盘设备的***一个Cylinder:

输入x进入expect mode:

输入b,一定分区初始位置:

设定最初位置为128个block(128 block大小为64KB):

再次输入p确认分区初始位置信息:

输入w保存退出:

Linux磁盘分区对齐问题与配置方式

方法2:使用parted创建对齐分区

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

Linux命令提示符下输入:

# parted /dev/sdb

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

(parted) unit s

列出当前逻辑卷:

(parted) print

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

(parted) rm 1

(parted) mkpart primary 128 976735934

(parted) print

Linux磁盘分区对齐问题与配置方式

感谢各位的阅读,以上就是“Linux磁盘分区对齐问题与配置方式”的内容了,经过本文的学习后,相信大家对Linux磁盘分区对齐问题与配置方式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux磁盘分区对齐问题与配置方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux磁盘分区对齐问题与配置方式

这篇文章主要讲解了“Linux磁盘分区对齐问题与配置方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux磁盘分区对齐问题与配置方式”吧!什么是磁盘分区对齐(Disk Alignmen
2023-06-16

编程热搜

目录