SC 存储客户通知:Linux 较大的 IO 大小可能会影响 iSCSI 卷的可用性
Summary: 向 Oracle Enterprise Linux 分发中引入了最近的内核更改,更改了在数据块设备上计算 IO 限制的行为。
Symptoms
警告:
下面概述了这些更改。
Oracle Linux 6/7:
ELSA-2015-3098-Unbreakable Enterprise 内核安全和 bugfix 更新
http://linux.oracle.com/errata/ELSA-2015-3098.html
发布日期/2015-11-13
[3.8.13-100.el6uek/3.8.13-100.el7uek]
block:卸下 artifical max_hw_sectors 帽(Christoph Hellwig) [Orabug:21511611]
Oracle Linux 5:
ELBA-2015-3076-Unbreakable Enterprise 内核错误修复更新
http://linux.oracle.com/errata/ELBA-2015-3076.html
发布日期/2015-08-27
[2.6.39-400.260.1. el5uek]
block:卸下 artifical max_hw_sectors 帽(李先生金) [Orabug:21455630]
概述:
Linux 系统上存在的每个数据块设备都分配有队列目录(位于/sys/block/xxx/queue/)。此目录包含多个配置文件。这些文件的详细信息可在以下位置找到:
https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
与此 CSTA 相关的两个参数:
max_hw_sectors_kb
单个数据传输中支持的最大 kb 数。
通过 SCSI 查询响应,此参数为只读并由目标存储设备提供。Storage Center 操作系统(SCOS)中的 SCSI 目标子系统当前响应零。这表示没有限制,因此服务器会将该值设置为 linux 内核版本(32MB)中允许的最大值。
max_sectors_kb
Block 层将允许文件系统请求的最大 kb 数。
此值为读写。此值必须小于或等于max_hw_sectors_kb值。
对内核2.6.39-400.260.1 el5uek、3.8.13-100. el6uek 和 3.8.13-100 中引入的 Oracle Linux 内核的更改。 el7uek 更改了max_sectors_kb的计算方式。在以前的内核版本中,值始终设置为 512 KB。更改后, max_sectors_kb的值被设置为max_hw_sectors_kb的值。这主要会将单个 IO 传输的最大大小从512KB 增加到 32 MB。
此更改暴露了 Storage Center 10Gb iSCSI 驱动程序的问题,超出容量超过 ~ 8MB 的 I/O。导致大型 IO 的服务器进程可能会挂起,或者由于大型 IO 大小,卷可能变得不可用。此外,10Gb iSCSI 驱动程序问题可能会导致控制器占用其他 Storage Center 子系统所需的内存,这可能会导致更大的影响。
解决办法:
为了防止出现此问题, 必须在 Linux 服务器上动态更改每个数据块设备的 max_sectors_kb。下面是连接到 Linux 系统的多路径数据块设备的命令示例:
#mpath1:
回显 512 >/sys/block/dm-6/queue/max_sectors_kb
回显 512 >/sys/block/sdc/queue/max_sectors_kb
回显 512 >/sys/block/sde/queue/max_sectors_kb
回显 512 >/sys/block/sdk/queue/max_sectors_kb
回显 512 >/sys/block/sdm/queue/max_sectors_kb
这些更改不会通过重新引导来持续进行。可以实施 init 脚本,以便在给定的服务器引导时运行,这将为所有 iSCSI 数据块设备修改此参数。请咨询 Linux 管理员或 Oracle 对每个客户环境实施此持久性的最佳方式的支持。
以下脚本(udev 规则)将每个 iSCSI 连接的 Compellent 卷的 max_sectors_kb 设置为 512 kb。请自行决定使用此脚本,因为不存在暗示或保证。建议测试脚本,但不会出现问题。
创建文件99-cml-iscsi。目录/etc/udev/rules.d/中的规则具有以下内容:
[root@localhost/] # cat/etc/udev/rules.d/99-cml-iscsi.rules
# Dell Storage Center iSCSI 映射卷的 "Modify" max_sectors_kb
ACTION = = "add",\
ENV = = "*-iscsi-* compellent *",\
RUN + = "/bin/sh-c" echo 512 >/sys $ DEVPATH/queue/max_sectors_kb ""
受影响的版本:
使用 10Gb iSCSI 接口的所有 SCOS 版本都会受到影响。光纤通道、1 Gb iSCSI 和 FCoE 不受影响。
解决办法:
7.01.12、7.02.01 和7.03.01 及更高版本 SCOS 中已解决了 max_sectors_kb 问题。
更改在 SCOS 6.07.03 和更高版本中可用,以解决 10Gb iSCSI 驱动程序的内存消耗问题。