磁盘分区对齐详解与配置 – Linux篇
在之前一篇《磁盘分区对齐详解与配置
– 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,造成额外的存储系统性能开销。
Linux创建分区对齐方法:
描述了磁盘分区对齐的原理后,下面介绍如何使用fdisk创建对齐分区的例子。在Linux中,对齐分区操作需要要空数据的情况下进行,因为对齐分区操作会清空分区表并且该LUN上的数据会被删除。在这个例子中,我们对/dev/emcpowerfw设备,创建一个大小为51281 Cylinder(Cylinder是Symmetrix的计量单位,每个Cylinder大小为960KB,所以这个磁盘大小为50GB左右)、Offset错位大小为128个block的磁盘设备。
方法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
最新文章
- 【Unity3D】利用Shader以及更改Mesh实现2D游戏的动态阴影效果
- iptables4张表5条链
- 一些Python的惯用法和小技巧:Pythonic
- Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
- C#中var和dynamic
- 保存vim的ide环境
- ECMAScript继承
- osx升级到10.10后,用pod install报错最终解决办法
- List<;object>;排序 z
- Java学习笔记--StringTokenizer的使用
- sql分隔字符串数组
- ManyToMany OrderBy
- ReflectiveLoader分析(远程线程注入 PE修正)
- lambda表达式初步
- 【转】wamp出现You don’t have permission to access/on this server提示
- Hadoop学习笔记03_Hive练习
- 关于windows中80端口被占用
- 重识linux-常见压缩和解压缩命令
- python的面向对象-面向对象设计
- 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 ---
热门文章
- C++ 11 可变模板参数的两种展开方式
- ionic中actionsheet在安卓中显示样式问题
- 升级滑动销毁activity,随着手势的滑动而滑动的效果
- 简单的 nginx 多站点配置
- 使用FREDATED引擎实现跨实例訪问
- Hibernate学习之单向多对一映射
- Atitit.&#160;Atiposter&#160;发帖机版本历史&#160;编年史
- Trie|如何用字典树实现搜索引擎的关键词提示功能
- 使用jstl标签报错:According to TLD or attribute directive in tag file, attribute value
- emacs的常用配置备份