SC-Speicherkunden Benachrichtigung: Linux große i/o-Größen können iSCSI Volume-Verfügbarkeit beeinflussen.
Summary: Eine aktuelle Kernel Änderung wurde in die Oracle Enterprise-Linux-Verteilung eingeführt, die das Verhalten der Berechnung von i/o-Limits auf Blockgeräten ändert.
Symptoms
Achtung:
Diese Änderungen werden nachfolgend beschrieben.
Oracle Linux 6/7:
ELSA-2015-3098 – Unbreakable Enterprise Kernel Security und Bugfix Update
http://linux.oracle.com/errata/ELSA-2015-3098.html
Versionsdatum/ 2015-11-13
[3.8.13 -100. el6uek/3.8.13 -100. el7uek]
Block: Remove Artificial max_hw_sectors Cap (Christoph Hellwig) [Orabug: 21511611]
Oracle Linux 5:
Elba-2015-3076 – Unbreakable Enterprise Kernel Bug Fix Update
http://linux.oracle.com/errata/ELBA-2015-3076.html
Versionsdatum/ 2015-08-27
[2.6.39-400.260.1.el5uek]
Block: Remove Artificial max_hw_sectors Cap (Joe Jin) [Orabug: 21455630]
Übersicht.
Jedem Blockgerät, das auf einem Linux-System vorhanden ist, wird ein Warteschlangenverzeichnis zugewiesen (unter /sys/Block/xxx/Queue/). Dieses Verzeichnis enthält eine Reihe von Konfigurationsdateien. Informationen zu diesen Dateien finden Sie unter:
https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
Die beiden Parameter, die für diese CSTA relevant sind:
max_hw_sectors_kb
Die maximale Anzahl von Kilobyte, die in einer einzigen Datenübertragung unterstützt wird.
Dieser Parameter ist schreibgeschützt und wird vom Zielspeicher Gerät über SCSI Abfrageantwort bereitgestellt. Das SCSI Zielsubsystem im Storage Center-Betriebssystem (SCOs) reagiert derzeit auf NULL. Dies gibt keine Begrenzung an, sodass der-Server den Wert auf die maximal zulässige Anzahl innerhalb der Linux-Kernel-Version (32MB) festlegt.
max_sectors_kb
Die maximale Anzahl von Kilobyte, die von der Block Schicht für eine Dateisystemanforderung zulässig ist.
Dieser Wert ist Lese-/Schreibzugriff. Dieser Wert muss kleiner als oder gleich dem max_hw_sectors_kbWert sein.
Die Änderungen an der Oracle Linux Kernel, die in Kernels 2.6.39-400.260.1. el5uek, 3.8.13-100. el6uek und 3.8.13-100. el7uek eingeführt wurden, haben die Art und Weise geändert, wie max_sectors_kb berechnet wird. In vorherigen Kernel Versionen war der Wert immer auf 512 KB eingestellt. Nach dieser Änderung wird der Wert von max_sectors_kb auf den Wert max_hw_sectors_kb festgelegt . Dies erhöhte im Wesentlichen die maximale Größe einer einzigen i/o-Übertragung auf ein bestimmtes Blockgerät von 512 KB auf 32MB.
Diese Änderung hat ein Problem mit dem Storage Center-10Gb-iSCSI Treiber für IO-Größen von mehr als ~ 8MB ausgesetzt. Der Serverprozess, der die große IO erzeugt, hängt möglicherweise nicht mehr oder das Volume ist aufgrund der großen i/o-Größe nicht mehr verfügbar. Darüber hinaus kann das Problem mit dem 10Gb-iSCSI Treiber dazu führen, dass der Controller Speicher beansprucht, der von anderen Storage Center-Untersystemen benötigt wird, was zu einer größeren Auswirkung führen könnte.
Problemumgehung:
Um dieses Problem zu vermeiden, müssen die max_sectors_kb für jedes Blockgerät dynamisch auf dem Linux-Server geändert werden. Im folgenden finden Sie Beispielbefehle für ein Multipath-Blockgerät, das mit einem Linux-System verbunden ist:
#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
Diese Änderungen sind bei Neustarts nicht persistent. Ein Init-Skript kann implementiert werden, wenn ein bestimmter Server gestartet wird, der diesen Parameter für alle iSCSI Blockgeräte ändert. Wenden Sie sich an einen Linux-Administrator oder Oracle Unterstützung, um diese Beständigkeit für jede Kundenumgebung optimal zu implementieren.
Das folgende Skript (udev-Regel) setzt die max_sectors_kb jedes iSCSI angehängten Compellent-Volumes auf 512 KB. Bitte verwenden Sie dieses Skript nach eigenem Ermessen, da keine Garantien oder Garantien impliziert sind. Es wird empfohlen, das Skript zu testen, sollte aber ohne Probleme funktionieren.
Erstellen Sie die Datei 99-CML-iSCSI. Rules im Verzeichnis /etc/udev/rules.d/ mit dem folgenden Inhalt:
[root@localhost/] # cat/etc/udev/rules.d/99-CML-iSCSI.Rules
# Ändern Sie max_sectors_kb für Dell Storage Center iSCSI zugeordnete Volumes
ACTION = = "Add", \
ENV = = "*-iSCSI-* compellent *", \
Run + = "/bin/sh-c ' Echo 512 >/sys $ DEVPATH/Queue/max_sectors_kb '"
Betroffene Versionen:
Alle SCOs Versionen haben Auswirkungen auf die Verwendung von 10Gb iSCSI Schnittstellen. Fibre Channel, 1 GB iSCSI und FCoE sind nicht betroffen.
Lösung:
Das max_sectors_kbProblem wurde in SCOs Versionen 7.01.12, 7.02.01 und 7.03.01 und höher behoben.
Änderungen sind in SCOs 6.07.03 und höher verfügbar, um das Problem mit der Speichernutzung beim 10Gb-iSCSI Treiber zu beheben.