Notificación del cliente de almacenamiento de SC: Linux tamaños de i/o grandes pueden afectar la disponibilidad del volumen iSCSI
Summary: Se introdujo un cambio de kernel reciente en la distribución de Linux de Oracle Enterprise que cambia el comportamiento de cómo se calculan los límites de i/o en los dispositivos de bloques. ...
Symptoms
Alerta:
Estos cambios se describen a continuación.
Oracle Linux 6/7:
ELSA-2015-3098-Unbreakable Enterprise kernel Security and Bugfix Update
http://linux.oracle.com/errata/ELSA-2015-3098.html
Fecha de lanzamiento 2015-11-13
[3.8.13-100.el6uek/3.8.13-100.el7uek]
Block: Remove artifical max_hw_sectors Cap (Christoph Hellwig) [Orabug: 21511611]
Oracle Linux 5:
ELBA-2015-3076-actualización de corrección de error de kernel empresarial ininterrumpible
http://linux.oracle.com/errata/ELBA-2015-3076.html
Fecha de lanzamiento 2015-08-27
[2.6.39-400.260.1.el5uek]
Block: Remove artifical max_hw_sectors Cap (Joe Jin) [Orabug: 21455630]
Descripción general
A cada dispositivo de bloques que existe en un sistema Linux se le asigna un directorio de cola (ubicado en /Sys/Block/XXX/Queue/). Este directorio contiene una serie de archivos de configuración. Los detalles de estos archivos se pueden encontrar en:
https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
Los dos parámetros que son pertinentes a esta CSTA:
max_hw_sectors_kb
La cantidad máxima de kilobytes admitida en una sola transferencia de datos.
Este parámetro es de solo lectura y se proporciona mediante el dispositivo de almacenamiento de destino mediante SCSI respuesta de consulta. El subsistema de destino de SCSI dentro del sistema operativo del Storage Center (SCOS) responde actualmente con un cero. Esto indica que no hay límite, por lo que el servidor establece el valor máximo permitido dentro de la versión del kernel de Linux (32MB).
max_sectors_kb
La cantidad máxima de kilobytes que la capa de bloques permitirá para una solicitud del sistema de archivos.
Este valor es de lectura y escritura. Este valor debe ser menor o igual que el valor de max_hw_sectors_kb.
Los cambios en el Oracle Linux kernel que se introdujeron en kernels 2.6.39-400.260.1. el5uek, 3.8.13-100. el6uek y 3.8.13-100. el7uek cambiaron la forma en que max_sectors_kb se calcula. En versiones anteriores del kernel, el valor siempre estaba establecido en 512 KB. Después de este cambio, el valor de max_sectors_kb se establece en el valor de max_hw_sectors_kb. Esto aumentó básicamente el tamaño máximo de una única transferencia de i/o a un dispositivo de bloques determinado desde 512 KB a 32 MB.
Este cambio expuso un problema con la controladora de 10 GB iSCSI del Storage Center para tamaños de i/o mayores de ~ 8 MB. El proceso de servidor que produce la e/s grande puede bloquearse o el volumen puede dejar de estar disponible debido al tamaño de i/o grande. Además, el problema de la controladora de 10 GB iSCSI puede provocar que la controladora consuma memoria que requieren otros subsistemas de Storage Center, lo que podría provocar un impacto mayor.
Solución:
Para evitar este problema, se debe modificar el max_sectors_kb de cada dispositivo de bloques de forma dinámica en el servidor de Linux. A continuación se muestran ejemplos de comandos de un dispositivo de bloques de múltiples rutas conectado a un sistema Linux:
#mpath1:
echo 512 >/sys/Block/DM-6/Queue/max_sectors_kb
echo 512 >/sys/Block/SDC/Queue/max_sectors_kb
echo 512 >/sys/Block/SDE/Queue/max_sectors_kb
echo 512 >/sys/Block/SDK/Queue/max_sectors_kb
echo 512 >/sys/Block/SDM/Queue/max_sectors_kb
Estos cambios no son persistentes en los reinicios. Se puede implementar un script de inicialización para que se ejecute cuando se inicia un servidor determinado que modificará este parámetro para todos los dispositivos de bloques de iSCSI. Consulte al administrador de Linux o Oracle soporte sobre la mejor manera de implementar esta persistencia para cada ambiente del cliente.
El siguiente script (regla udev) establecerá el max_sectors_kb de iSCSI cada volumen Compellent conectado a 512 KB. Utilice este script por su propia discreción, ya que no hay ninguna garantía o garantía implícita. Se recomienda probar el script, pero debe funcionar sin problemas.
Cree el archivo 99-CML y-iSCSI. rules en el directorio /etc/udev/rules.d/ con el siguiente contenido:
[root@localhost/] # cat/etc/udev/rules.d/99-CML-iSCSI.rules
# Modify max_sectors_kb para Dell Storage Center iSCSI volúmenes asignados
ACTION = = "Add", \
ENV = = "*-iSCSI-* Compellent *", \
RUN + = "/bin/sh-c" echo 512 >/sys $ DEVPATH/Queue/max_sectors_kb ' "
Versiones afectadas:
Todas las versiones SCOS se ven afectadas que utilizan interfaces de 10 GB iSCSI. Fibre Channel, iSCSI de 1 GB y FCoE no se ven afectados.
Resolución:
El max_sectors_kbproblema se resolvió en SCOS versiones 7.01.12, 7.02.01 y 7.03.01 y superior.
Los cambios están disponibles en SCOS 6.07.03 y versiones superiores para abordar el problema de consumo de memoria con el controlador de 10 GB iSCSI.