磁盘分区对齐详解与配置 – 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读写性能影响。

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

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

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

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

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

参考

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比,因为那样着实像是在英语和汉语之间来回翻译,想想就知道印欧语系和汉藏语系两门语言跨语系表述

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

  1. 深入学习Linux摄像头(四)三星平台fimc驱动详解

    深入学习Linux摄像头系列 深入学习Linux摄像头(一)v4l2应用编程 深入学习Linux摄像头(二)v4l2驱动框架 深入学习Linux摄像头(三)虚拟摄像头驱动分析 深入学习Linux摄像头 ...

  2. linux系统密码输入快捷,linux 系统忘记密码的快捷解决方法(图文详解)

    linux 系统忘记密码的快捷解决方法(图文详解) 在学习Linux的过程当中,想到,万一自己忘记了linux的密码该怎么办? 其实,在linux当中,只用简单的操作几步,就可以更改用户密码~下面小编 ...

  3. 计算机导论基础论文3000字,计算机导论课论文3000字

    计算机导论课论文3000字篇二 <浅析"计算机导论"教学改革> 摘?要:计算机导论是计算机专业学生必修的一门专业基础课程.也是计算机专业的入门课程.课程内容主要介绍计算 ...

  4. 离散作业用c语言编写覆盖,c语言论文3000字_优秀论文范文3000字_大一论文范文3000字...

    计算机论文范文3000字 学2113术堂整理了一篇3000字的计算机论5261文范文,供大家参考: 范文题4102目:关于新工程教育计算机1653专业离散数学实验教学研究 摘要:立足新工科对计算机类专 ...

  5. 大学三年如何使用计算机论文,大学计算机导论论文3000字.docx

    资源描述 大学计算机导论论文3000字如今社会快速发展,计算机已经走入千家万户,随着计算机的普及,它在生活中的作用越来越大.下面是学习啦小编带来的关于大学计算机3000字导论论文的内容,欢迎阅读参考大 ...

  6. 计算机组装与维修最大的收获,计算机维修与维护论文3000字_计算机组装与维修心得体会1000字_计算机组装与维护心得...

    维修电工技师论文(3000)字 配电线路工技师论文|电力线路工技师论文作者:佚名来源:本站整理发布时间:2007-9-120:13:57减小字体增大字体对闭环运行方式配电自动化系统的探讨[关键词]自动 ...

  7. 计算机论文 游戏,计算机游戏论文3000字_计算机游戏毕业论文范文模板.doc

    计算机游戏论文3000字_计算机游戏毕业论文范文模板 计算机游戏论文3000字(一):一些智力游戏问题的数学模型及其计算机求解论文 摘要:国内只有相关智力游戏问题的数学模型相关论文,数学模型作为当代社 ...

  8. 计算机与科学论文3000,计算机科学技术应用论文3000字(2)

    计算机科学技术应用论文3000字篇二 <计算机科学技术在计算机教育中的应用> 摘要:21世纪,信息技术日新月异,多媒体.通讯技术和网络技术已经渗透到教育的方方面面,使教学方式.方法和内容发 ...

  9. 计算机3000字论文翻译,计算机翻译论文3000字_计算机翻译毕业论文范文模板.doc...

    计算机翻译论文3000字_计算机翻译毕业论文范文模板 计算机翻译论文3000字(一):基于语料库的计算机辅助翻译教学法探究论文 摘要近年来,语料库技术与翻译实践和翻译研究的结合欣欣向荣,但将语料库技术 ...

最新文章

  1. 程序员的量化交易(34)--QuantConnect_Lean如何定义Indicator指标2
  2. 域名查询精灵V1.0 我写的软件,大家多多提建议
  3. 前端学习(2815):小程序学习之开发者工具介绍
  4. highCharts图表入门简介
  5. python怎么设置画布颜色_如何在kivy python中动态更改画布颜色?
  6. 最大值、数据排序、九九乘法表、杨辉三角
  7. react-native环境配置——Android工程搭建
  8. Cisco路由器上传和下载IOS
  9. Windows批处理(cmd/bat)常用命令小结
  10. windows设置路径Path
  11. 3322动态域名,nat123动态域名解析,dnspod域名解析,等相关免费动态域名解析软件对比
  12. 软件安利Macs Fan Control Pro Mac(风扇转速调整及温度监控工具)
  13. 试玩网站搭建讲解入门篇
  14. 高并发读,高并发写解决方案
  15. 蓝桥杯嵌入式 - 第九届决赛试题(电子秤)
  16. 在c语言中 程序的最小编译单位是,C语言课堂练习习题集
  17. 东北大学计算机难度,东北大学考研难度
  18. java入门编程(一)
  19. 深入理解vue中的slot与slot-scope (简单易懂)
  20. 再学一遍android:fitsSystemWindows属性

热门文章

  1. 解决Vue3报错:app.js:314 Uncaught TypeError: Cannot read properties of undefined (reading ‘forEach‘)
  2. 2022最新彩虹易支付系统二开版本源码/新增推广返利模式+工单系统
  3. 该内存不能为written修复
  4. 第二十九章 SQL函数 COALESCE
  5. 数据湖技术Hudi0.10master测试流程
  6. Python暴力破解wifi密码,你看了你也行
  7. vue查看所有的路由信息
  8. 记一次磕磕绊绊的组建跨区卷过程
  9. Unity简单几行代码让玩家水平移动更丝滑真实
  10. 深度剖析移动游戏市场,论产品、研发、买量