Notification du client pour le stockage SC : Linux des tailles d’e/s volumineuses peuvent affecter iSCSI la disponibilité des volumes
Summary: Une modification récente du noyau a été introduite dans la distribution Linux Oracle Enterprise qui modifie le comportement de la façon dont les limites d’e/s sont calculées sur les périphériques en mode bloc. ...
Symptoms
Alerte :
Ces modifications sont décrites ci-dessous.
Oracle Linux 6/7 :
ELSA-2015-3098-Unbreakable Security kernel Security et mise à jour de Bugfix
http://linux.oracle.com/errata/ELSA-2015-3098.html
Date de version/ 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 :
Mise à jour des correctifs du noyau de l’entreprise ELBA-2015-3076-Unbreakable
http://linux.oracle.com/errata/ELBA-2015-3076.html
Date de version/ 2015-08-27
[2.6.39-400.260.1.el5uek]
Block : Remove Artifical max_hw_sectors Cap (Joe Jin) [Orabug : 21455630]
Présentation :
Chaque périphérique en mode bloc qui existe sur un système Linux se voit attribuer un répertoire de file d’attente (situé dans /sys/Block/xxx/queue/). Ce répertoire contient un certain nombre de fichiers de configuration. Vous trouverez les détails de ces fichiers à l’emplacement suivant :
https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
Les deux paramètres qui sont pertinents pour ce CSTA :
max_hw_sectors_kb
Nombre maximal de kilo-octets pris en charge dans un seul transfert de données.
Ce paramètre est en lecture seule et fourni par le périphérique de stockage cible via SCSI réponse de la demande. Le sous-système SCSI cible dans le système d’exploitation du Storage Center (SCOS) répond actuellement par un zéro. Cela indique aucune limite. par conséquent, le serveur définit la valeur maximale autorisée dans cette version du noyau Linux (32 Mo).
max_sectors_kb
Nombre maximal de kilo-octets autorisés par la couche Block pour une demande de système de fichiers.
Cette valeur est Read-Write. Cette valeur doit être inférieure ou égale à la valeur de max_hw_sectors_kb.
Les modifications apportées au noyau de la Oracle Linux qui ont été introduites dans les noyaux 2.6.39-400.260.1. el5uek, 3.8.13-100. el6uek et 3.8.13-100. el7uek ont modifié la façon dont max_sectors_kb est calculé. Dans les versions précédentes du noyau, la valeur est toujours définie sur 512 Ko. Après cette modification, la valeur de max_sectors_kb est définie sur la valeur max_hw_sectors_kb. Cela augmentait essentiellement la taille maximale d’un seul transfert d’e/s sur un périphérique en mode bloc donné, de 512 Ko à 32 Mo.
Cette modification a exposé un problème avec le pilote de iSCSI Storage Center 10 Gbits pour des tailles d’e/s supérieures à 1 Mo. Le processus de serveur générant les e/s volumineuses peut se bloquer ou le volume peut devenir indisponible en fonction de la taille d’e/s volumineuse. En outre, le problème du pilote de iSCSI de 10 Go peut entraîner la consommation de mémoire requise par d’autres sous-systèmes Storage Center, ce qui peut entraîner un impact plus important.
Solution de contournement :
Afin d’éviter ce problème, le max_sectors_kb pour chaque périphérique en mode bloc doit être modifié de manière dynamique sur le serveur Linux. Vous trouverez ci-dessous des exemples de commandes pour un périphérique de bloc multichemin connecté à un système de 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
Ces modifications ne sont pas persistantes via les redémarrages. Un script d’initialisation peut être mis en œuvre pour s’exécuter lorsqu’un serveur donné démarre pour modifier ce paramètre pour tous les périphériques iSCSI en mode bloc. Veuillez consulter un Linux d’administrateur ou de Oracle sur la façon de mettre en œuvre cette persistance pour chaque environnement du client.
Le script suivant (règle udev) définit la max_sectors_kb de chaque iSCSI volume Compellent rattaché à 512 Ko. Veuillez utiliser ce script à votre convenance, car aucune garantie ou garantie n’est implicite. Il est recommandé de tester le script, mais il doit fonctionner sans problème.
Créez le fichier 99-CML-iSCSI. Rules dans le répertoire /etc/udev/rules.d/ avec le contenu suivant :
[root@localhost/] # cat/etc/udev/rules.d/99-CML-iSCSI.Rules
# Modify max_sectors_kb pour Dell Storage Center iSCSI volumes mappés
ACTION = = "ajouter", \
ENV = = "*-iSCSI-* Compellent *", \
RUN + = "/bin/sh-c’echo 512 >/sys $ DEVPATH/file d’attente/max_sectors_kb'"
Versions concernées :
Toutes les versions de SCOS sont affectées et utilisent des interfaces iSCSI de 10 Gbits. Les iSCSI Fibre Channel, 1 Go et FCoE ne sont pas affectées.
Résolution :
Le problème de max_sectors_kb a été résolu dans scos versions 7.01.12, 7.02.01 et 7.03.01 et versions ultérieures.
Des modifications sont disponibles dans SCOS 6.07.03 et versions ultérieures pour traiter le problème de consommation de mémoire avec le pilote iSCSI 10 Go.