当一块磁盘被格式化后,会被分成上百个磁道(tracks),每个磁道又将被分割成许多扇区(sectors),一般都是512 bytes。上下一串盘片中,相同半径的磁道所组成的一个圆柱型的环壁,就称为柱面。
![](https://img-my.csdn.net/uploads/201208/11/1344675350_2617.jpg)
磁带的读写过程主要包括三个部分:
寻道时间:磁盘头从原始位置径直移动到目标数据所在的磁道的时间(平均是8毫秒)
旋转延迟时间:通过盘片的旋转,使得要读取的扇区转到读写头的下方的时间。这个时间取决磁盘的转数,比如一块7200(转/分钟)的硬盘,120转/秒,一转大概需要8毫秒,平均旋转延迟是4毫秒。
传输时间:磁盘传输数据的时间,这个取决于磁盘接口速率,SATA、FC、SAS盘的接口带宽都各不相同。比如2Gb/s的带宽,8K的数据块大概只需要0.004毫秒。
磁盘的IO=寻道时间+旋转延迟时间+传输时间
一块已经固定磁盘无法去变更旋转速率和传输时间,只能通过优化数据的存放位置来减少寻道时间和平均旋转延迟,从而加快磁盘的IO 速率。
AIX操作系统将PV划分成5个区域,这些区域与他们在硬盘磁盘自身上的位置对应:外侧边缘(out edge)、外侧中间(outer middle)、中心(center)、内侧中间(inner middle)和内侧边缘(inner edge)。
PP是由一组大量的连续扇区组成,从1开始编号,out edge到inner edge根据磁盘的大小被分成了一定数量的PP数。5个区域分配的PP数量大致相等。如下:
# lspv -p hdisk1
hdisk1:
PP RANGE STATE REGION LV NAME TYPE MOUNT POINT
1-1 used outer edge hd5 boot N/A
2-76 used outer edge fslv01 jfs2 /oracle
77-102 free outer edge
103-110 used outer edge lg_dumplv sysdump N/A
111-210 used outer middle hd6 paging N/A
211-211 used outer middle fwdump jfs2 /var/adm/ras/platform
212-213 used outer middle livedump jfs2 /var/adm/ras/livedump
214-218 used outer middle fslv01 jfs2 /oracle
219-219 used outer middle hd11admin jfs2 /admin
220-220 used center hd8 jfs2log N/A
221-239 used center hd2 jfs2 /usr
240-243 used center hd9var jfs2 /var
244-323 used center hd3 jfs2 /tmp
324-324 used center hd1 jfs2 /home
325-328 used center hd10opt jfs2 /opt
329-330 used inner middle hd4 jfs2 /
331-437 free inner middle
438-464 free inner edge
465-504 used inner edge testlv jfs2 /test
505-546 free inner edge
总共有546个PPS:
outer edge的PPS=110
outer middle的PPS=109
center的PPS=109
inner middle的PPS=109
inner edge的PPS=109
其中/oracle 文件系统对应fslv01的被分配到了2个区域,前5个PP在outer middle区域,其他PP在out edge中。
# lslv -p hdisk1 fslv01
hdisk1:fslv01:/oracle
USED 0006 0007 0008 0009 0010 0011 0012 0013 0014 1-10
0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 11-20
0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 21-30
0035 0036 0037 0038 0039 0040 0041 0042 0043 0044 31-40
0045 0046 0047 0048 0049 0050 0051 0052 0053 0054 41-50
0055 0056 0057 0058 0059 0060 0061 0062 0063 0064 51-60
0065 0066 0067 0068 0069 0070 0071 0072 0073 0074 61-70
0075 0076 0077 0078 0079 0080 FREE FREE FREE FREE 71-80
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 81-90
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 91-100
FREE FREE USED USED USED USED USED USED USED USED 101-110
USED USED USED USED USED USED USED USED USED USED 111-120
USED USED USED USED USED USED USED USED USED USED 121-130
USED USED USED USED USED USED USED USED USED USED 131-140
USED USED USED USED USED USED USED USED USED USED 141-150
USED USED USED USED USED USED USED USED USED USED 151-160
USED USED USED USED USED USED USED USED USED USED 161-170
USED USED USED USED USED USED USED USED USED USED 171-180
USED USED USED USED USED USED USED USED USED USED 181-190
USED USED USED USED USED USED USED USED USED USED 191-200
USED USED USED USED USED USED USED USED USED USED 201-210
USED USED USED 0001 0002 0003 0004 0005 USED 211-219
USED USED USED USED USED USED USED USED USED USED 220-229
USED USED USED USED USED USED USED USED USED USED 230-239
USED USED USED USED USED USED USED USED USED USED 240-249
USED USED USED USED USED USED USED USED USED USED 250-259
USED USED USED USED USED USED USED USED USED USED 260-269
USED USED USED USED USED USED USED USED USED USED 270-279
USED USED USED USED USED USED USED USED USED USED 280-289
USED USED USED USED USED USED USED USED USED USED 290-299
USED USED USED USED USED USED USED USED USED USED 300-309
USED USED USED USED USED USED USED USED USED USED 310-319
USED USED USED USED USED USED USED USED USED 320-328
USED USED FREE FREE FREE FREE FREE FREE FREE FREE 329-338
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 339-348
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 349-358
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 359-368
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 369-378
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 379-388
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 389-398
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 399-408
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 409-418
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 419-428
FREE FREE FREE FREE FREE FREE FREE FREE FREE 429-437
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 438-447
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 448-457
FREE FREE FREE FREE FREE FREE FREE USED USED USED 458-467
USED USED USED USED USED USED USED USED USED USED 468-477
USED USED USED USED USED USED USED USED USED USED 478-487
USED USED USED USED USED USED USED USED USED USED 488-497
USED USED USED USED USED USED USED FREE FREE FREE 498-507
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 508-517
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 518-527
FREE FREE FREE FREE FREE FREE FREE FREE FREE FREE 528-537
FREE FREE FREE FREE FREE FREE FREE FREE FREE 538-546
由于中心是磁盘头经常通过的区域,所以越靠近中心,寻道时间就越短,从而加快整体的IO。而在out edge或者inner edge 的数据需要花费的寻道时间较长,从而导致应用程序的响应缓慢。
![](https://img-my.csdn.net/uploads/201208/11/1344676593_3132.jpg)
虽然outer edge的寻道时间长,但是由于在圆的外道,圆周的速度最快,所以outer edge的顺序读写速度更快些。
先将/dev/ fslv01的前5个pp移到out edge中:
# migratelp fslv01/2 hdisk1/78
# migratelp fslv01/3 hdisk1/79
#migratelp fslv01/4 hdisk1/80
# migratelp fslv01/5 hdisk1/81
# lspv -p hdisk1
hdisk1:
PP RANGE STATE REGION LV NAME TYPE MOUNT POINT
1-1 used outer edge hd5 boot N/A
2-81 used outer edge fslv01 jfs2 /oracle
82-102 free outer edge
103-110 used outer edge lg_dumplv sysdump N/A
111-210 used outer middle hd6 paging N/A
211-211 used outer middle fwdump jfs2 /var/adm/ras/platform
212-213 used outer middle livedump jfs2 /var/adm/ras/livedump
214-218 free outer middle
219-219 used outer middle hd11admin jfs2 /admin
220-220 used center hd8 jfs2log N/A
221-239 used center hd2 jfs2 /usr
240-243 used center hd9var jfs2 /var
244-323 used center hd3 jfs2 /tmp
324-324 used center hd1 jfs2 /home
325-328 used center hd10opt jfs2 /opt
329-330 used inner middle hd4 jfs2 /
331-437 free inner middle
438-464 free inner edge
465-504 used inner edge testlv jfs2 /test
505-546 free inner edge
/oracle 文件系统已经全部位于out edge中了,选择/oracle /tmp /test 进行测试:
#time dd if=/dev/zero of=/oracle/test bs=1024k count=4096
real 0m46.03s
user 0m0.03s
sys 0m11.36s
消耗时间为:46.03秒
Topas监控到的磁盘IO 为88.6M
接着对center进行测试:
#time dd if=/dev/zero of=/tmp/test bs=1024k count=4096
real 0m53.29s
user 0m0.02s
sys 0m12.16s
消耗时间为:53.29s秒
Topas监控到的磁盘IO 为77M
最后看下inner edge:
#time dd if=/dev/zero of=/test/test bs=1024k count=4096
real 1m5.75s
user 0m0.02s
sys 0m12.43s
消耗时间为:1分5.75秒
Topas监控到的磁盘IO 只有62M
# for i in 2 3 4 5 6 7 8 9
> do migratelp fslv01/$i hdisk1/33$i
> done
migratelp: Mirror copy 1 of logical partition 2 of logical volume
fslv01 migrated to physical partition 332 of hdisk1.
migratelp: Mirror copy 1 of logical partition 3 of logical volume
fslv01 migrated to physical partition 333 of hdisk1.
migratelp: Mirror copy 1 of logical partition 4 of logical volume
fslv01 migrated to physical partition 334 of hdisk1.
migratelp: Mirror copy 1 of logical partition 5 of logical volume
fslv01 migrated to physical partition 335 of hdisk1.
migratelp: Mirror copy 1 of logical partition 6 of logical volume
fslv01 migrated to physical partition 336 of hdisk1.
migratelp: Mirror copy 1 of logical partition 7 of logical volume
fslv01 migrated to physical partition 337 of hdisk1.
migratelp: Mirror copy 1 of logical partition 8 of logical volume
fslv01 migrated to physical partition 338 of hdisk1.
migratelp: Mirror copy 1 of logical partition 9 of logical volume
fslv01 migrated to physical partition 339 of hdisk1.
查看下/oracle 文件系统的pp分布:
hdisk1:
PP RANGE STATE REGION LV NAME TYPE MOUNT POINT
1-1 used outer edge hd5 boot N/A
2-36 free outer edge
37-59 used outer edge fslv01 jfs2 /oracle
60-66 free outer edge
67-84 used outer edge fslv01 jfs2 /oracle
85-86 free outer edge
87-102 used outer edge fslv01 jfs2 /oracle
103-110 used outer edge lg_dumplv sysdump N/A
111-210 used outer middle hd6 paging N/A
211-211 used outer middle fwdump jfs2 /var/adm/ras/platform
212-213 used outer middle livedump jfs2 /var/adm/ras/livedump
214-218 used outer middle fslv01 jfs2 /oracle
219-219 used outer middle hd11admin jfs2 /admin
220-220 used center hd8 jfs2log N/A
221-239 used center hd2 jfs2 /usr
240-243 used center hd9var jfs2 /var
244-323 used center hd3 jfs2 /tmp
324-324 used center hd1 jfs2 /home
325-328 used center hd10opt jfs2 /opt
329-330 used inner middle hd4 jfs2 /
331-339 used inner middle fslv01 jfs2 /oracle
340-437 free inner middle
438-464 free inner edge
465-504 used inner edge testlv jfs2 /test
505-510 free inner edge
511-519 used inner edge fslv01 jfs2 /oracle
520-546 free inner edge
/oracle 目录被分配到了4个区域,测下顺序IO:
#time dd if=/dev/zero of=/oracle/test bs=1024k count=4096
real 0m53.32s
user 0m0.02s
sys 0m12.60s
IO 速度有所下降。如果是随机IO,磁盘头进行的寻道时间会大大的增加,IO 的速率就会受到很大的影响。
优化规则:
通过以上的磁盘寻道原理和AIX的LVM磁盘管理方式,优化本地磁盘应该遵循以下规则:
1. 让 LV 尽可能保持连续。当文件系统数据分散在一个磁盘上时,硬盘头需要花费更长的时间在寻道时间和旋转延迟上。如果 LV 存在于一个连续的区域,会最大程度地缩短搜索时间,更快地找到文件。这就要求最好是一次性建好足够大的LV,而不是经常去扩空间。
3.将具有高活跃度的 LV 放在靠近中心位置。如果您有一个文件系统具有大量读取和写入操作,并且需要快速响应,尽量分布在中心附近。如果空间足够将swap空间也放在该区域。
4.将使用率较低的 LV 放在内部边缘附近。如果您的文件系统很少使用或访问,那么可以将它们放在具有最低 I/O 速度的磁盘区域内(内部边缘上接近主轴的区域)。例如,很少使用的逻辑卷很适合放在这里。
5. 当存在多个swap 分区时,一块磁盘最好只分配一个swap分区,而且大小要相等,从而减少跨区域的lv操作,增大IO 负担。
6.如果可能将两个磁盘分别创建一个独立的分页空间 LV,那么每个磁盘均可解决内存交换,效率将会翻倍。
7.尽可能分散 I/O 负载,以提高性能和冗余。如果您有一个较大的系统具有多个硬盘,可以通过将数据分散在一组磁盘组合中开利用它们。如果您选择镜像您的 PV,可以在多个硬盘上这么做,以便如果一个磁盘抽屉(drawer)出现故障,冗余不会限制到一个硬盘。参考参数range of physical volumes(minimum、maximum)
磁盘优化的常用工具:
查看工具:
1. 使用lsvg 查看VG的信息
查看所有的VG
#lsvg查看激活的VG
#lsvg –o
#lsvg rootvg
# lsvg -l rootvg
查看VG在PV中的分布
#lsvg –p rootvg
2.lspv用来查看某块磁盘的信息,如PVID、PP的大小、包含的LV数目、5个区域中PP的使用情况等等。如:
查看PV总体信息:
# lspv -L hdisk1
查看PV中LV的LPs、PPs、以及5个区域的总体分布大小
# lspv -l hdisk1
详细查看PV中每个PP的使用情况:
#lspv –p hdisk13. lslv用来查看某个LV的特征、状态以及其PPs在PV中的详细分布
查看LV的总体信息:
#lslv –L fslv01
查看LV在PV中的分布信息:
#lslv –p hdisk1 fslv00
查看LV的镜像在各个磁盘上的分布
#lslv –l fslv00
查看LV的LP对应的PP的分布信息
迁移工具:
1. chlv、smit chlv用来更改LV的属性,及PP在PV上的分布,使得LV的PP尽可能变的连续。
2. migratepv用来迁移PV上的LV到其他PVs上 比如将hdisk1上的LV迁移到hdisk6和hdisk7上
#migratepv hdisk1 hdisk6 hdisk7
#migratepv –l lv01 hdisk1 hdisk6
3. migratelp用来迁移LV上的某个lp到指定的PV的pp上
比如将lv01 上的第一个LP迁移到 hdisk1上的第100个PP上
#migratelp lv01/1 hdisk1/100
将lv01 上的第3个LP的第二个镜像拷贝迁移到hdisk1上
#migratelp lv01/3/2 hdisk1
4. mirrorvg和unmirror
将vg生成3份镜像
#mirrorvg -c 3 datavg
#mirrorvg datavg
更换镜像的坏盘
#unmirrorvg datavg hdisk7
#reducevg datavg hdisk7
#rmdev -dl hdisk7
#extendvg datavg hdisk7
#mirrorvg datavg hdisk7
在指定的PV上生成镜像
#mirrorvg -m datavg hdisk2
将镜像工作放入后台运行
5. Mklvcopy 用来单独将某个LV进行复制
比如将lv01 在hdisk1的middle区域创建一个镜像
#mklvcopy –a m –m lv01 hdisk1
6. reorgvg [-i],-i 参数用于3块以上PV重组,在重组时,临时文件存放在/tmp目录下确保/tmp目录的空间大小。
重组整个vg
#reoravg rootvg
重组指定LV
#reoravg rootvg lv01 lv02 v03
重组指定PV上的LV