优化 AIX 内部存储

提升 AIX 性能的准则和工具

尽管作为存储解决方案,SAN 技术备受瞩目,但 AIX 系统仍然需要使用内部存储。无论您拥有小型的独立服务器,还是使用将所有可用资源都集中在一起的完整系统分区,内部存储都是 root 卷组和其他较小文件系统用途的典型媒介。但是,如果没有良好规划这些磁盘,就有可能出现 I/O 瓶颈、低效的空间利用和缓慢的性能。本文将学习如何优化内部存储以及如何合理地布局内容。

Christian Pruett, 高级系统管理员, 自由职业者

Christian Pruett 是一位高级系统管理员,在 AIX、Sun Solaris、Linux 和 HP/UX 方面有超过 14 年经验,涉及计算、农业和电信等许多行业。他是两份关于 AIX 的 IBM Redbook 的合作作者,曾经为 O’Reilly Publishing 审阅一本 UNIX 图书,还曾经参与过几个 IBM AIX 认证考试。他与妻子和两个孩子住在科罗拉多州。



2012 年 3 月 31 日

不久前,我需要对一台 IBM® AIX® 服务器执行一次操作系统修补,升级到更新的技术水平和服务包。此服务器已有一段时间没有进行任何软件维护了,所以是时候调整了。我让所有软件等待维护时窗,并开始升级。

在升级的过程中,我注意到服务器变得特别慢。尽管系统没有应用程序在活动,没有用户登录,但服务器的性能却慢了很多。这完全讲不通,因为这是一台独立的服务器,不是虚拟化逻辑分区 (LPAR),没有任何其他系统会争用 CPU 资源或共享的基础架构。

在排除故障时,我使用 topas 命令获取了服务器的实时数据,注意到 Wait 列具有极高的值。是一个磁盘导致了所有开销,这个磁盘就是 hdisk0,root 卷位于该磁盘上。我使用 lspv –p 命令查看了这个磁盘,突然恍然大悟(参见下面的 清单 1)。

清单 1. lspv -p 命令的结果
# lspv -p hdisk0
hdisk0:
PP RANGE  STATE   REGION        LV NAME             TYPE       MOUNT POINT
  1-1     used    outer edge    hd5                 boot       N/A
  2-110   free    outer edge
111-114   used    outer middle  hd6                 paging     N/A
115-116   used    outer middle  livedump            jfs2       /var/adm/ras/livedump
117-124   used    outer middle  lg_dumplv           sysdump    N/A
125-130   used    outer middle  paging00            paging     N/A
131-136   used    outer middle  hd6                 paging     N/A
137-217   free    outer middle
218-219   used    outer middle  hd2                 jfs2       /usr
220-220   used    center        hd8                 jfs2log    N/A
221-222   used    center        hd4                 jfs2       /
223-237   used    center        hd2                 jfs2       /usr
238-240   used    center        hd9var              jfs2       /var
241-241   used    center        hd3                 jfs2       /tmp
242-242   used    center        hd1                 jfs2       /home
243-245   used    center        hd10opt             jfs2       /opt
246-246   used    center        hd11admin           jfs2       /admin
247-259   used    center        hd10opt             jfs2       /opt
260-265   used    center        hd4                 jfs2       /
266-266   used    center        hd2                 jfs2       /usr
267-279   used    center        hd9var              jfs2       /var
280-284   used    center        hd2                 jfs2       /usr
285-285   used    center        hd3                 jfs2       /tmp
286-286   used    center        hd2                 jfs2       /usr
287-317   used    center        hd1                 jfs2       /home
318-328   used    center        paging00            paging     N/A
329-425   free    inner middle
426-430   used    inner middle  hd6                 paging     N/A
431-437   free    inner middle  
438-535   free    inner edge
536-546   used    inner edge    paging01            paging     N/A

当我看到这个磁盘的布局方式时,了解到为什么会存在一个 I/O 瓶颈。该磁盘具有许多错误和糟糕的规划,导致在简单的升级上花费的时间比应花费的时间长得多。但这也证明,在如今的存储区域网络 (SAN)、Internet SCSI (iSCSI) 和其他顶级存储解决方案的世界里,对于基本的内部磁盘仍然需要优化和恰当设置,现代化的、更强健的服务器才能高效地运行。

本文将提供一些基本的工具和技术,您可以使用它们优化 AIX 服务器上的内部存储。使用我遇到的情形作为案例分析,本文将介绍如何在 AIX 内查看磁盘,以及磁盘如何与逻辑卷管理器 (Logical Volume Manager, LVM) 交互。然后,探讨重新组织内部磁盘和强化它们的各种战略和命令,包括一些较低级命令和简单的快捷键。最后,本文提供一些较高级的规划想法来预防这些情形再次发生。

磁盘布局

AIX 操作系统将硬盘(也称为物理卷,简称 PV)划分为固定的空间区域,也称为物理分区 (PP)。这些 PP 具有统一的大小,从磁盘的外边缘向主轴的中心移动。将这些 PV 集中起来后,它们就成为了卷组 (VG)。在这些 VG 中,系统创建名为逻辑卷 (LV) 的结构,这些结构将 PP 集中形成在可在其上创建文件系统的有用区域。

PP 的大小在创建 VG 时就已固定,向 VG 添加的更多 PV 需要保持相同的 PP 大小。每个 PP 一次仅能分配给一个 LV,任何 LV 必须至少包含一个 PP 才能存在。如果文件系统扩大,它们扩大的最小大小为一个 PP。

AIX 将 PV 划分为 5 个区域,这些区域与他们在硬盘磁盘自身上的位置对应:外侧边缘、外侧中间、中心、内侧中间和内侧边缘。这种划分如 图 1 所示。

图 1. 磁盘布局
AIX 磁盘布局图

一些数学和物理属性会影响磁盘 I/O、延迟和跨这 5 个区域的访问。由于角动量守恒,磁盘的外侧边缘具有比内侧边缘更快的旋转速度,这很像小孩在游乐场骑旋转木马一样,外侧的旋转速度要比中间快得多。但是,由于数据的物理位置的限制,不是磁盘上的所有数据都写入到外侧边缘,所以对硬盘头的最快搜索应该在磁盘的中心区域,通常硬盘头最有可能通过这片区域。

对于我尝试修补的服务器,数据以非常混乱或随机的方式放置在磁盘上。但是在整理数据之前,需要更多地考虑 AIX 是如何管理 LV 的。


逻辑卷管理器考虑因素

AIX 拥有一个名为逻辑卷管理器 的原生工具,它可以处理 PV、VG、LV 和文件系统之间的关系。LVM 在物理媒介上创建逻辑结构来管理操作系统中的数据。为了优化磁盘,LVM 还提供了一种自定义可用性、性能和冗余的方式。

LVM 用于加强优化的使用最广泛的两个功能是镜像和条带化(Striping)。LVM 允许您使用最多 3 个数据副本来镜像 LV。在这里,一个 LP 可指向一个或多个 PP。因此,如果发生硬盘故障,数据会在其他物理设备上得到保护。在专门使用内部存储的较小型系统中,需要对所有数据进行镜像备份,以预防计划外的宕机,这非常重要。

条带化 将数据放在多个硬盘上,所以会同时在许多磁盘上发生多次读取和写入操作。要启用条带化,可更改每个 LV 的物理卷间分配策略属性。通过将策略设置为最小值(默认值),会得到更高的可靠性,因为没有磁盘故障会影响到 LV。通过将策略设置为最大值,LVM 会将数据存储在 VG 中最大数量的磁盘中,最大限度地提高一次可能发生的 I/O 操作数量。

对于内部磁盘的优化,必须控制性能与冗余之间的平衡。在较小的系统中,通常没有足够的空间来执行大规模的条带化分布,更不用说通过镜像实现具有冗余的条带化了。在具有大量内部硬盘的较大系统中,条带化和镜像可显著提升性能,最大限度地减少 I/O 等待时间。


优化内部磁盘

通过将 AIX 硬盘物理结构的这些概念与 LVM 在磁盘上运用逻辑结构的方式相结合,我得出了一些有助于优化内部磁盘的准则:

  • 让 LV 尽可能保持连续。当文件系统数据分散在一个磁盘上时,硬盘头需要花费更长的时间才能找到任何想要的数据。如果 LV 存在于一个连续的区域,会最大程度地缩短搜索时间,更快地找到文件。
  • 将具有高 I/O、顺序读取或写入操作的 LV 放在外侧边缘。由于磁盘外侧边缘的速度因素,如果 LV 需要更快读取或写入较长序列(比如大型静态文件或数据表内容)中的数据,外侧边缘的更高旋转速度会有所帮助。
  • 将具有高活跃度的 LV 放在靠近中心位置。如果您有一个文件系统具有大量读取和写入操作,并且需要快速响应,因为平均而言,硬盘头在所有时间内通常最有可能位于中心附近。通过将这些文件系统放在这一区域,使硬盘头尽可能接近该区域。这种配置会减少搜索时间并保持良好的 I/O。
  • 将使用率较低的 LV 放在内部边缘附近。如果您的文件系统很少使用或访问,那么可以将它们放在具有最低 I/O 速度的磁盘区域内(内部边缘上接近主轴的区域)。例如,很少使用的逻辑卷很适合放在这里。
  • 仅为每个磁盘使用一个分页空间 LV。将分页空间用作一个临时空间,使用它与物理存储区域交换内存页面,从而迫使 CPU 执行更多操作和完成更多事情。在相同磁盘上定义多个分页空间 LV,会削弱尝试修复性能的效果,并导致更多的 I/O 操作,因为磁盘头必须到达磁盘的多个区域,而不是一个区域。
  • 如果可能,不要镜像分页空间。再次说明,由于分页空间的目的是利用物理存储来弥补资源不足,所以将相同数据集再次写入镜像配置中没有意义。相反,如果两个磁盘具有两个独立的分页空间 LV,那么每个磁盘均可解决内存交换,效率将会翻倍。
  • 保持分页空间大小统一。关于分页空间,最后一点要注意的是尽可能保持分页空间 LV 大小统一。如果有两个 73GB 的内部磁盘,其中一个有 1GB 的分页空间 LV,而另一个有 4GB 的分页空间 LV,那么这两个磁盘中的一个可能磨损得更快。而且,依赖于将分页空间添加到服务器或分页空间缩小的方式,一个 LV 可能装满并对系统带来负面影响。此外,保持相同的大小会使 lsps 命令输出看起来更加简洁和准确。
  • 保留一定的空闲空间。尽管可能一些管理员会尝试榨干服务器上的最后一点容量,但最好总是在磁盘上保留一定的空闲空间。这不是说在内部或外部中间区域拥有一个或两个较大的间隙,而是在 LV 之间拥有一定的空间(以防任何内容需要增长)并在文件系统自身内拥有一定的空闲空间。如果所有内容都紧靠在一起,那么只要一个小小的 chfs – size=+1MB 命令就会破坏 LV 连续性。
  • 正确地镜像内容。管理员犯下的一个常见错误时,在镜像的 VG 上创建一个新文件系统,然后忘记在其他磁盘上创建一个副本。只是因为 VG 已经镜像,并不意味着后来添加的支持文件系统的任何 LV 也将镜像。请始终确保新 LV 在一个独立的 PV 上有一个副本。
  • 尽可能分散 I/O 负载,以提高性能和冗余。如果您有一个较大的系统具有多个硬盘,可以通过将数据分散在一组磁盘组合中开利用它们。如果您选择镜像您的 PV,可以在多个硬盘上这么做,以便如果一个磁盘抽屉(drawer)出现故障,冗余不会限制到一个硬盘。

优化磁盘的工具

此过程中的下一步是将这些针对内部存储优化的准则应用到实际中。我采用了多个命令来解决混乱的磁盘,让它们遵守应有的设计方式。

lspv、lsvg 和 lslv

lspvlsvglslv 命令是可视化所有内容的布局情况的重要工具。lspv 命令显示数据在 PV 上的分布(如我前面的示例中所示)。lsvg 命令和 –l 标志大体显示数据是否已镜像,以及哪些内容位于 VG 中。lslv 命令应该与 –m 标志结合使用,以分析 5 个 PV 区域中任何特定的 LV 的布局,如下所示:

hd4:/
PV                COPIES        IN BAND       DISTRIBUTION
hdisk0            128:000:000   100%          000:108:020:000:000

chlv

chlv 命令通常是我运行的第一个命令,它更改一些内容来优化磁盘。我使用它设置 PV 内分配策略,确定 LV 应该放在 PV 中的何处(从外侧到内侧边缘)。这个命令有助于整合数据,使其变得连续。

migratepv

如果我发现一些 LV 未在正确的 PV 上,在我进行更进一步的重组之前,我会使用 migratepv 命令在 PV 之间移动一些内容,使用 –l 标志逐个 LV 地移动数据。

reorgvg

reorgvg 命令是优化内部磁盘的真正主角。这个命令会获取每个 LV 的 PV 内部分配策略,围绕这些标准重组 PV。它会尽力将 LV 移动到磁盘的特定位置并恰当地调整空间。但在某些情形下它可能会花大量的时间来运行,而且可能无法做到尽善尽美,这才是需要手动干预的真正原因。

migratelp

调整 LV 之后,磁盘上可能有一两个烦人的 LP 或 PP,以至于大部分 /usr 中都包含着一些 /tmp。migratelp 命令可以采用手动方式逐个 LP 地移动数据,从而整理数据。

mirrorvg 和 mklvcopy

您使用 mirrorvgmklvcopy 命令一次镜像整个 VG (mirrorvg) 或复制特定的 LV,比如当添加文件系统时 (mklvcopy)。但是,您可以使用 mirrorvg,通过两个技巧来优化内部存储。如果 PV 内分配策略已使用 chlv 设置,那么通过使用 –c 标志来镜像卷组,数据将镜像到一个全新的 PV,并遵守这些策略,整洁地进行布局。或者,如果您已有一个良好优化的磁盘,您可以使用 –m 标志并与第一个完全一样地布局第二个 PV 来实现完全并行的读取和写入。


结果

应用所有这些准则并使用上述工具之后,我能够修复糟糕的磁盘性能,主要通过合并分页空间,正确调整文件系统,以及将 LV 放在 PV 上的适当位置来完成。在 清单 2 中可以看到,磁盘空间的使用效率高得多,I/O 得到了显著改进。

清单 2. 在优化磁盘后运行 lspv
# lspv -p hdisk0
hdisk0:
PP RANGE  STATE   REGION        LV NAME             TYPE       MOUNT POINT
  1-1     used    outer edge    hd5                 boot       N/A
  2-2     used    outer edge    hd8                 jfs2log    N/A
  3-110   free    outer edge
111-130   used    outer middle  hd6                 paging     N/A
131-147   used    outer middle  hd9var              jfs2       /var
148-219   free    outer middle  
220-245   used    center        hd2                 jfs2       /usr
246-252   used    center        hd1                 jfs2       /home
253-255   used    center        hd3                 jfs2       /tmp
256-270   used    center        hd10opt             jfs2       /opt        
271-328   free    center        
329-337   used    inner middle  hd4                 jfs2       /
338-437   free    inner middle  
438-440   used    inner edge    livedump            jfs2       /var/adm/ras/livedump
441-448   used    inner edge    lg_dumplv           sysdump    N/A
449-449   used    inner edge    hd11admin           jfs2       /admin
450-546   free    inner edge

使用此布局,硬盘头无需从中心区域移动太远,我拥有增长文件系统所需的空间,而且 I/O 等待时间更短。通过将此配置原封不动地镜像到第二个磁盘,我还提供了冗余来减轻可能的故障。


结束语

在早期的 AIX 4.3.3 和 IBM RS/6000® 服务器时代,由于可用的资源有限,必须进行磁盘优化才能让服务器良好地执行。但是,即使如今的磁盘常常超过 100GB 大,在速度上超过 15,000 RPM,并且较新的 IBM POWER7® 服务器运行得更快,可执行比以前的任何 AIX 服务器更多的事务,这种相对简单的内部存储优化流程仍然具有重要的意义。

参考资料

学习

  • 有关预防磁盘故障和从中恢复的更多信息,请查阅 当 AIX 磁盘出现问题时(Christian Pruett,developerWorks,2011 年 9 月)。
  • 有关在创建 LV 之前使用恰当的磁盘位置的更多信息,请查阅 优化 AIX 7 磁盘性能:第 2 部分,监视逻辑卷并分析结果(Martin Brown 和 Ken Milberg,developerWorks,2010 年 10 月)。
  • 有关 LVM 故障排除和命令的更多信息,请参阅 IBM 红皮书 AIX Logical Volume Manager from A to Z: Troubleshooting and Commands
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。
  • 技术书店:浏览技术书店,查找有关此主题和其他技术主题的图书。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=807783
ArticleTitle=优化 AIX 内部存储
publish-date=03312012