设置DB2和AIX与条带技术匹配以提高I/O性能
2010-05-14 15:02:00 来源:WEB开发网上图中,我们发现,用户在获得 DB2 中的数据时有一个比较复杂的 I/O 处理过程:用户向数据库发出请求; DB2 异步的处理 I/O ;将请求提交给 I/O Server ;以预取大小为单位从存储中读取数据;在内存中处理数据;最后将请求的结果返回给用户。在这么多步骤的处理中,我们很明显的发现,访问物理存储的工作是由 I/O Server 以预取大小为单位实现的。所以在上述的过程中,在 DB2 数据库级别影响单次物理 I/O 最重要的因素就是预取大小。为了提高 I/O 的性能,就需要在设置 DB2 预取大小时必须与条带深度和条带宽度有较好的匹配。
首选要保证的就是预取的大小必须是条带深度的整数倍,其次预取大小最好是条带深度与条带宽度乘积的整数倍(当然预取大小还与 DB2 的其他参数有关,如 page size、extent size、容器数量等等,这里不一一讨论)。这样就可以使预取时候所执行的物理 I/O 被均衡的分布所有的物理存储中。
另外,I/O 过程中,你无法保证 DB2 数据库的页的边界能与条带单元的大小对齐。如果条带深度大小和 DB2 的页大小完全相同,而它们的边界没有对齐的话,那么就会存在大量的一个单独的小的 I/O 请求在两块磁盘上完成。
如今大多数 LVM 都支持在线动态增加磁盘。也就是在磁盘容量不足时,我们可以随时将新磁盘加入到一个已经使用的逻辑卷中。这样的话,我们在设置逻辑卷时就可以简单地将所有磁盘都归入到一个卷中去。
如果你的条带宽度设置得比较小,就需要估算出你的各个数据库表空间容器的 I/O 负载,并根据负载量不同将他们分别部署到不同卷上一分担 I/O 负载。
在 AIX 中合理规划和设置条带相关参数
操作系统最大 I/O 大小:决定了一次单个的 I/O 请求的大小上限,不同的操作系统有不同的参数,AIX 系统是卷组的 LTG(Logical Track Group)参数(HP-UX 是参数 max_I/O_size);
操作系统级别条带化的设置;
操作系统最大的 I/O 大小对条带化深度的设置也产生着重要的影响。当逻辑 I/O 请求达到操作系统之后,如果逻辑 I/O 的大小超过了操作系统能处理最大的 I/O 大小,操作系统会根据自己能够处理的最大的 I/O 大小来分割逻辑 I/O 请求。在 AIX 中,这个参数就是 LTG,也就是当逻辑 I/O 的大小超过了所在卷组的 LTG 的设置之后,AIX 会将逻辑 I/O 以 LTG 为单位进行分割之后,才会将分割好的 I/O 请求分发到物理存储中去。所以 LTG 的大小应该与条带深度大小相同或者是条带深度大小的整数倍。
在 AIX V5.3 后,卷组的 LTG 参数是在 varyonvg 的时候指定的,语法如下:
varyonvg – M 512K vgname
上面的语句将卷组“ vgname ”的 LTG 参数设置为 512K,每次在 varyonvg 卷组的时候可以设置不同的 LTG(在 AIX5.3 之前,LTG 是在创建卷组的时候设置,并且不能修改)。目前 LTG 的取值范围为:4K、8K、16K、32K、64K、128K、1M、2M、4M、8M、16M、32M 和 128M 。而且如果卷组中 PV 不能支持 LTG 的设置 varyonvg 命令将会失败。
很多操作系统支持操作系统级别的条带化(而不是存储系统提供的条带化),这个条带技术原理与之前介绍的无异。操作系统级别的条带化又分为逻辑条带化和物理条带化两种技术。逻辑条带化通常是通过 LVM 在 LV 级别实现的,而物理条带化通常是通过操作系统机器上的硬件实现的。在这里介绍一下 AIX 操作系统中 LVM 实现的逻辑条带化技术。
AIX 系统中 LVM 的基本结构如下图所示。
图 5.AIX 中的 LVM 结构
更多精彩
赞助商链接