跳转到主内容

如何识别 LUN 上未对齐的 IO

Views:
85
Visibility:
Public
Votes:
0
Category:
ontap-9
Specialty:
san
Last Updated:

适用场景

  • ONTAP 9.x
  • SAN
  • FlexPod

操作步骤

主机操作系统将 LUN 作为存储设备

要了解 I/O 对齐情况,请务必了解主机操作系统如何将 LUN 用作存储设备:

  • 硬盘公布的传统块大小为 512 字节。
  • NetApp LUN 使用较大的块大小来存储数据,同时继续向主机公布较小的 512 字节块以实现兼容性。
  • 公布的块称为逻辑块,底层存储块称为物理块。
  • NetApp LUN 将数据存储在 4 KB 物理块中,从而为每个物理块生成 8 个 512 字节逻辑块。

LUN作为存储设备(按主机操作系统)

  • 主机操作系统可能会对任何逻辑块开始读取或写入( I/O )操作。
  • 但是,如果 I/O 从物理块开头的逻辑块开始,则会将 I/O 称为错位。

IO未对齐

  • I/O 仅在从逻辑块开始时才对齐;这是物理块中的第一个逻辑块。I/O 与物理块边界对齐。

I/O与物理块边界对齐

确定 LUN 的 I/O 对齐 
  • Data ONTAP 包含一种启发式检测机制、可自动识别 LUN 的未对齐 I/O 。
  • 启发式系统会通过观察 I/O 开始处的物理块内的位置以及 I/O 长度来检查工作。
  • 该启发式的输出如下所示:
    • 不确定
    • 已对齐
    • 未对齐
    • 部分写入
状态不确定 仅当 LUN 未收到足够的 I/O 来决定对齐时才应用。
部分写入状态

标识接收小于 4 KB 的大部分 I/O 的 LUN 。

  • 通常,此状态表示数据库事务或重做日志使用的适用场景 LUN 。
  • 此状态并不表示问题描述;它用于将情况与未对齐状态区分开。
  • 随着工作负载的变化,可能需要运行 lun stats –z 命令来重置对齐启发式。 
单击以查看显示 I/O 未对齐的示例
  • 读取和写入对齐直方图记录从物理块中八个位置中的每个位置开始的 I/O 百分比。  
  • 此处显示 100% 的读写 I/O 均从第 8 个位置开始;也称为直方图分段。

*> lun alignment show /vol/luns/my_lun
   Multiprotocol type: linux
   Alignment: misaligned
   Write alignment histogram percentage: 0, 0, 0, 0, 0, 0, 0, 100
   Read alignment histogram percentage: 0, 0, 0, 0, 0, 0, 0, 100
   Partial writes percentage: 0
   Partial reads percentage: 0 

►单击可查看下一个示例 ,其中显示了 LUN 的 I/O 对齐情况。
  • 读取和写入对齐直方图显示 I/O 的 100% 在第一个位置开始,该位置与物理块边界对齐。

*> lun alignment show /vol/luns/my_lun
     Multiprotocol type: windows
     Alignment: aligned
     Write alignment histogram percentage: 100, 0, 0, 0, 0, 0, 0, 0
     Read alignment histogram percentage: 100, 0, 0, 0, 0, 0, 0, 0
     Partial writes percentage: 0
     Partial reads percentage: 0

►单击可查看 最后一个显示 LUN 上部分写入状态的示例
  • 在此处,您可以在部分写入和部分读取字段中看到总 I/O 的一定百分比。
  • 部分写入和读取的确切数量取决于执行 I/O 的应用程序以及该应用程序上工作负载的性质。
  • 百分比总和可能不超过 100 ;这是预期的,并不表示采用启发式计算的问题描述。 

*> lun alignment show /vol/luns/my_lun
     Multiprotocol type: linux
     Alignment: partial-writes
     Write alignment histogram percentage: 0, 0, 0, 0, 0, 0, 0, 0
     Read alignment histogram percentage: 1, 6, 1, 3, 0, 4, 6, 6
     Partial writes percentage: 0
     Partial reads percentage: 68

导致 LUN I/O 对齐的因素 
  • 主机操作系统使用 LUN 的方式因操作系统类型,分区方案,文件系统和应用程序而有很大不同。
  • 对于大多数用户而言,关键因素是主机操作系统的分区方案,也可能受文件系统或应用程序 / 数据库的影响。
  • 根据经验,选择与主机操作系统和操作系统类型最匹配的 Data ONTAP LUN 操作系统类型。

注:

  • Data ONTAP 可能在已正确对齐的 LUN 上报告 I/O 不对齐。
  • 只要您确信 LUN 配置正确且分区表正确,就可以忽略这些错位警告。

示例

 

启动 LUNs

  • 这些日志是各种日志和其他较小写入的目标。
  • 少量写入将类似于部分写入,而这反过来又类似于 IO 错位。可以安全地忽略它们。
  • 大多数启动 LUN 都会有一定数量的部分写入。因此,即使 LUN 几何结构和 LUN 类型正确,也可能看起来错位。
  • 如果您知道 LUN 几何结构正确,请忽略错位问题。

 

数据库日志 LUN

  • 用作数据库应用程序日志位置的 LUN (例如 Oracle (重做日志)或 Microsoft 的 SQL Server (事务日志))可以在对齐直方图中随机分布未对齐的写入 I/O 。
  • 这是此类 I/O 的正常和预期行为
  • 如果我们知道 LUN 正在用作数据库日志位置,并且已确认 LUN 类型正确且正在使用偏移,则无需执行任何进一步的更正操作。

下表提供了其他指导

在某些情况下,可能需要自定义分区表。

  • 某些 Data ONTAP LUN 操作系统类型使用称为前缀的偏移来对齐关联主机操作系统使用的默认分区方案。
  • 对于前缀值大于 0 的 LUN 、自定义分区可能会创建未对齐的 I/O 

LUN ostype

前缀(字节数)

前缀(扇区数)

操作系统

windows

32,256

63

Windows 2000、2003(MBR 格式)

windows_gpt

17,408

34

Windows 2003(GPT 格式)

windows_2008

0

0

Windows 2008 及更高版本

hyper_v

0

0

Windows 2008 Hyper-V ABD 更新

linux

0

0

所有 Linux 发行版 *

xen

0

0

Citrix XenServer

vmware

0

0

VMware ESX*

solaris

1 MB

2048

Solaris*

solaris_efi

17,408

34

Solaris*

hpux

0

0

HP-UX

aix

0

0

AIX

* 表示可能需要额外考虑;请参见下面的追加信息。

*请注意、在ONTAP 9.8及更高版本中、所有LUN类型都使用0前缀和后缀、以便于过渡到NVMe。  仍然支持在9.8之前创建的LUN、但无法过渡到NVMe命名空间。 

追加信息

Linux 的其他注意事项 
  • Linux 分发版提供了多种使用 LUN 的方法,包括将 LUN 用作数据库,卷管理器和文件系统的原始设备。
  • 在卷管理器中用作原始设备或物理卷时,无需在 LUN 上创建分区。
  • 如果在没有卷管理器的情况下使用 LUN ,则最好对 LUN 进行分区,使其具有一个分区,该分区以对齐的偏移开始;该分区是由八个逻辑块中的倍数组成的扇区。
  • 有关创建对齐的 Linux 分区的详细信息,请参见 如何在 Linux 中创建对齐的分区,以便用于 NetApp LUN , VMDK , VHD 和其他虚拟磁盘容器。 
VMware ESX/ESXi 的其他注意事项

通常,在 VMware LUN 类型 上出现未对齐的 I/O 是由于对其磁盘进行子操作系统分区而导致的 VMDK 对齐问题。

有关 Solaris 的其他注意事项 
  • Solaris 提供了多种使用 LUN 的方式,包括多种不同的文件系统和卷管理器。
  • Solaris 无需特殊分区;但是,请务必了解何时使用 Solaris 或 Solaris_EFI LUN ostype 。
  • 您应该仅对将使用 UFS 格式化的大于 990GB 的 LUN 使用 Solaris_EFI LUN OSType 。solaris_efiLUN OSType 用于在 EFI 磁盘标签(即扇区 34 )后偏移第一个分区的默认起始位置。
  • 您应对所有其他配置使用 Solaris LUN ostype ,包括小于 990 GB 的 SVM , VxVM , ZFS 和 UFS 。
  • 在使用 ZFS 的 Solaris 版本 10u8 和更高版本上、应使用 Solaris 的 LUN OSType 以及在主机sd.conf文件中添加物理块大小: 4096 (ssd.conf用于 Solaris x86 )。
文件的 I/O 对齐 
  • 文件的 I/O 对齐与 LUN 的工作方式完全相同。
  • 通常,文件的 I/O 不对齐会发生在将这些文件用作虚拟磁盘或通过 NAS 协议访问的磁盘映像的情况下。
  • 因此,虚拟磁盘的分区必须与文件块边界对齐、以获得最佳 I/O 吞吐量非常重要。

 

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.