分享

磁盘性能优化的几个知识点

 好9不见 2012-03-16

磁盘性能优化的几个知识点2012-03-05 10:42阅读(146)

1,首先,关于VG,PV,LV的关系图
在磁盘 I/O 的上下文中,应用程序层是文件系统或者原始逻辑卷。物理层由实际的磁盘组成。LVM 是一种 AIX 磁盘管理系统,它可以在逻辑和物理存储之间映射数据。这允许数据保存在多个物理盘片上,并使用专门的 LVM 命令对其进行管理和分析。实际上,LVM 控制系统中所有的物理磁盘资源,并帮助提供存储子系统的逻辑视图。
逻辑卷图表


2,intra-policy 和 inter-policy 磁盘
intra-disk
物理磁盘片上的实际存储位置
物理磁盘盘片上的实际存储位置
作为一般规则,靠近中央的数据要比靠近外边缘的数据具有更快的寻道时间。这与数据的密度有关。因为越靠近中央,密度越大,实际上磁头只需移动更短的距离。内部边缘(inner edge)通常具有最短的寻道时间。作为最佳实践,应用程序使用 I/O 越多,就应该使其位于越靠近物理卷中央的位置
(磁盘边缘的每个磁道比靠近中央的磁道能够保存更多的数据。虽然这样说,但是实际上应该顺序地访问位于边缘的逻辑卷,以获得更高的性能。对于开启了镜像写一致性检查(Mirror Write Consistency Check,MWCC)的逻辑卷来说也一样。这是因为,MWCC 扇区位于磁盘边缘而不是中央,这与逻辑卷的 intra-disk 策略有关
inter-disk
inter-disk 策略定义了一个逻辑卷的物理分区实际驻留的磁盘的数目。一般规则是,最小的 (minimum) 策略可以提供最大的可靠性和可用性,而最大的 (maximum) 策略可以提高性能。简单地说,数据所分散到的驱动器越多,性能就越好。

3,iostat的使用
# iostat 1  (1代表间隔1秒)
System configuration: lcpu=4 disk=4
tty:      tin         tout   avg-cpu:  % user    % sys     % idle    % iowait
          0.0        392.0               5.2      5.5       88.3       1.1
Disks:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn
hdisk1           0.5      19.5       1.4   53437739  21482563
hdisk0           0.7      29.7       3.0   93086751  21482563
hdisk4           1.7     278.2       6.2   238584732  832883320
hdisk3           2.1     294.3       8.0   300653060  832883320

这个示例中显示了哪些内容,而所有这些内容又是什么含义呢?
% tm_act:报告物理磁盘处于活动状态,或者磁盘请求的总时间的时间百分比。
Kbps:报告传输到驱动器的数据量(单位为千字节)。
tps:报告每秒钟发送到物理磁盘的传输量。
Kb_read:报告在测量间隔中从物理卷读取的总数据量(单位为千字节)。
Kb_wrtn:报告在测量间隔中向物理卷写入的数据量(单位为千字节)。
您需要非常小心地监视 % tm_act,因为当它的使用率超过大概百分之六十到七十时,这通常表示进程开始等待 I/O。这可能是即将发生的 I/O 问题的第一个征兆。将数据移动到更空闲的驱动器可以显著地帮助缓解这个负担。通常来说,您的数据位于越多的驱动器,性能就越好。与其他的事物一样,物极必反,因为您必须确保不会有太多的驱动器连接到任何一个适配器。有一种方法可以确定一个适配器是否满负荷,将连接到该适配器的所有磁盘的 Kbps 量累加起来。其总数应该小于磁盘适配器吞吐量速率,通常小于百分之七十。
-a代表检查适配器中包含的pv
# iostat -a
Adapter:                   Kbps      tps    Kb_read   Kb_wrtn
scsi0                      0.0       0.0          0         0
Paths/Disk:       % tm_act     Kbps      tps     Kb_read   Kb_wrtn
hdisk1_Path0           37.0       89.0     0.0          0         0
hdisk0_Path0           67.0       47.0     0.0          0         0
hdisk4_Path0           0.0        0.0      0.0          0         0
hdisk3_Path0           0.0        0.0      0.0          0         0
Adapter:                   Kbps      tps    Kb_read   Kb_wrtn
ide0                       0.0       0.0          0         0
Paths/Disk:       % tm_act     Kbps      tps    Kb_read   Kb_wrtn
cd0                    0.0       0.0       0.0          0         0

查看特定pv的IO情况,每隔一秒
# iostat -d hdisk1 1
System configuration: lcpu=4 disk=5
Disks:        % tm_act     Kbps      tps    Kb_read   Kb_wrtn
hdisk1           0.5      19.4       1.4   53437743  21490480
hdisk1           5.0      78.0       23.6         3633      3564
hdisk1           0.0       0.0       0.0          0         0
hdisk1           0.0       0.0       0.0          0         0
hdisk1           0.0       0.0       0.0          0         0
hdisk1           0.0       0.0       0.0          0         0

4,lvmstat(查看lvm的使用情况)
需要开启才能使用,便于监控vg中top的lv使用情况
lvmstat -v data2vg -e
10 个时间间隔内,每秒钟对 LVM 信息进行一次快照
# lvmstat -v data2vg 1 10

# lvmstat -v data2vg

Logical Volume       iocnt     Kb_read              Kb_wrtn      Kbps
  appdatalv           306653    47493022            383822      103.2
  loglv00                 34        0                3340       2.8
  data2lv                453      234543            234343       89.3 

% iocnt:报告读写请求的数目。
Kb_read:报告在测量间隔中读取的总数据量(单位为千字节)。
Kb_wrtn:报告在测量间隔中写入的数据量(单位为千字节)。
Kbps:报告已传输的数据量(单位为千字节)




5,使用lvmo进行优化
lvmo -v testvg -a
----------------------
vgname = testvg
pv_pbuf_count = 512
total_vg_pbufs = 1024
max_vg_pbufs = 65536
pervg_blocked_io_count = 0
pv_min_pbuf = 512
max_vg_pbuf_count = 0
global_blocked_io_count = 0
-------------------------------------
pv_pbuf_count:报告在将一个物理卷添加到该卷组时所添加的 pbuf 数目。
Max_vg_pbuf_count:报告可以为一个卷组分配的最大 pbuf 量。
Global_pbuf_count:报告在将一个物理卷添加到任何卷组时所添加的 pbuf 数目。
pbuf 是一个固定的内存缓冲区。LVM 使用这些 pbuf 来控制挂起的磁盘 I/O 操作

增加卷的pbuf的大小
# lvmo -v redvg -o pv_pbuf_count=2048

6,lslv和lspv
lslv -l data2lv
lspv -l hdisk2

# lslv -l data2lv data2lv:/data2 PV COPIES IN BAND DISTRIBUTION hdisk2 128:000:000 100% 000:108:020:000:000 hdisk3 128:000:000 100% 000:108:020:000:000

# lspv -l hdisk2 hdisk2: LV NAME LPs PPs DISTRIBUTION MOUNT POINT loglv01 1 1 01..00..00..00..00 N/A data2lv 128 128 00..108..20..00..00 /data2 appdatalv 128 128 00..00..88..40..00 /appdata

lslv 的 -l 标志列举了与逻辑卷和每个逻辑卷的分布(distribution)相关的所有物理卷。然后,您可以确定已经将磁盘上百分之百的物理分区都分配给了这个逻辑卷。其中的分布(distribution)部分显示了每个物理卷中的实际物理分区数目。从中,您可以详细地了解其 intra-disk 策略。这些字段的顺序如下所示:边缘 (Edge) 中间 (Middle) 中央 (Center) 内部中间 (Inner-middle) 内部边缘 (Inner-edge)

lspv -p hdisk2 (该物理卷中哪些是空闲的、哪些已经被使用,以及在什么地方使用了哪些分区)
# lspv -p hdisk2 hdisk2: PP RANGE STATE REGION LV ID TYPE MOUNT POINT 1-108 free outer edge 109-109 used outer edge loglv00 jfslog N/A 110-217 used outer middle data2lv jfs /data2 218-237 used center appdatalv jfs /appdata 238-325 used center testdatalv jfs /testdata 326-365 used inner middle stagingdatalv jfs /staging 366-433 free inner middle 434-542 free inner edge

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多