如何识别 LUN 上未对齐的 IO
适用场景
- ONTAP 9.x
- SAN
- FlexPod
操作步骤
主机操作系统将 LUN 作为存储设备
要了解 I/O 对齐情况,请务必了解主机操作系统如何将 LUN 用作存储设备:
- 硬盘公布的传统块大小为 512 字节。
- NetApp LUN 使用较大的块大小来存储数据,同时继续向主机公布较小的 512 字节块以实现兼容性。
- 公布的块称为逻辑块,底层存储块称为物理块。
- NetApp LUN 将数据存储在 4 KB 物理块中,从而为每个物理块生成 8 个 512 字节逻辑块。
- 主机操作系统可能会对任何逻辑块开始读取或写入( I/O )操作。
- 但是,如果 I/O 从物理块开头的逻辑块开始,则会将 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 。
|
- ► 单击以查看显示 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 操作系统类型。
注:
示例 |
启动 LUNs |
|
---|---|
数据库日志 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_efi
LUN 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 吞吐量非常重要。