Linux磁盘分区论文3000字,磁盘分区对齐详解与配置 – Linux篇

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

介绍

许多系统管理员可能不曾听过磁盘分区对齐之说,甚至一些有经验的存储管理员对分区对齐也不甚了解。磁盘分区不对齐现象是什么,为什么会造成比较严重的性能下降?相反,配置正确的分区起始位置(Offset)设置会使存储系统发挥更大的性能潜力。文章就磁盘分区对齐进行的介绍,并且给出了在Windows平台上如何配置的方法。

什么是磁盘分区对齐(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比较较大的应用程序,影响将更大。

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

1101af051f7223d1bd050af8f7058cb4.png

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

3e89dbb47b60a8ffc8514648d4d122ab.png

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

2fd4eda8cc35e49ced71ab6f35049230.png

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

239e04fc21bc1ac53f5a1aa3043121e1.png

所以说,无论是从存储系统的缓存从读取数据,还是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保存退出:

3a86d639bd0cb40fef8adac192b398cb.png

方法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

63bd77a719dce6b38566789738b4ba4a.png

参考

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

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

磁盘分区对齐详解与配置- Windows篇 :https://community.emc.com/docs/DOC-18571

磁盘分区对齐详解与配置 Linux篇 :https://community.emc.com/docs/DOC-18666

磁盘分区对齐详解与配置 – Linux篇 相关文章

C结构体的内存对齐

术语说明 pack 可以指定内存对齐值,单位是字节,这个是值需要时2的次幂(1,2,4,6,8)。如不设置也有默认值,这个值我理解的是操作系统的字长。 #pragma pack(8) 对齐规则 结构体第一个成员放在struct offset 0 的位置。 计算每个成员的对齐值,计算方式

Linux下掌控磁盘分区的九大神器

在这篇文章中,我们来了解一些用来检查你的系统分区的一些命令,这些命令将检查每个磁盘的分区情况和其它细节,例如总空间容量,已用完的空间和文件系统等。 像fdisk,sfdisk和cfdisk命令这样的常规分区工具,不仅可以显示分区信息,还可以修改。 1. fdisk F

ncdu – 基于ncurses库的磁盘使用分析器

Ncdu (NCurses Disk Usage) 是一个基于Ncurses库的du命令的界面。它通过大家熟知的du命令,为用户提供一个快速且容易被使用的界面。它可以显示磁盘使用的百分比,且允许你使用ncurses库的方式在目录之间导航。 安装 ncdu已经被移植到大多数linux发行版本,可

必须强迫症!160GB硬盘双系统整数分区推荐方案

以下是我在160GB硬盘上的分区方案,采用Windows Server 2003 SP2(32位)、CentOS Linux 6.5(64位)双系统,作为日常办公桌面环境使用。 基本思路是这样的: 各分区大小尽可能为整数,看上去舒服一些( 有些强迫症 );两个系统之间需要进行文件共享和数据

在Linux中使用LVM构建灵活的磁盘存储(第一部分)

逻辑卷管理器(LVM) 让磁盘空间管理更为便捷。如果一个文件系统需要更多的空间,可以在它的卷组中将空闲空间添加到其逻辑卷中,而文件系统可以根据你的意愿调整大

巧用linux云服务器下的的/dev/shm/,避开磁盘IO不给力!

一.什么是tmpfs和/dev/shm/? tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储暂存的文件。它有如下2个优势: 1)动态文件系统的大

使用条块化I/O管理多个LVM磁盘(第五部分)

在本文中,我们将了解逻辑卷是如何通过条块化I/O来写入数据到磁盘的。逻辑卷管理的酷炫特性之一,就是它能通过条块化I/O跨多个磁盘写入数据。 LVM条块化是什么? LVM条块化 是LVM功能之一,该技术会跨多个磁盘写入数据,而不是对单一物理卷持续写入。 使用条

迁移LVM分区到新的逻辑卷/驱动器(第六部分)

这是我们正在进行的LVM系列的第六部分。在本文中,我们将为大家展示怎样在线将现存的逻辑卷迁移到其它新的驱动器。在开始之前,我想要先来介绍一下LVM迁移及其特性。 LVM存储迁移 什么是LVM迁移? LVM 迁移是LVM众多优秀特性之一,通过它,我们可以迁移逻辑

为什么我要竖向对齐程序代码

最近在HackerNews上Linux内核编码风格的讨论非常热闹。 讨论的进行中,我的一个回复触发了另外一场关于是否应该竖向对齐代码的口水仗。我坚持我的观点!下面让我来解释一下为什么要竖向对齐。 为什么要竖向对齐代码? 举一个简单的例子: int robert_age = 3

重走LFS之路(三) 磁盘初始化与源码准备

当硬件部分都准备就绪,就可以开始动手来准备软件了。不过在开始编译之前需要先做一件事,就像Windows中说的要格式化分区。虽然我真心不喜欢用Linux和Windows比,因为那样着实像是在英语和汉语之间来回翻译,想想就知道印欧语系和汉藏语系两门语言跨语系表述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值