Powiadomienie klienta pamięci masowej SC: Linux duże rozmiary we/wy mogą mieć wpływ na dostępność woluminu iSCSI
Summary: Wprowadzono ostatnią zmianę jądra do dystrybucji Oracle Enterprise Linux, która zmienia zachowanie sposobu obliczania limitów we/wy przez urządzenia blokujące.
Symptoms
Alert:
Zmiany te zostały opisane poniżej.
Oracle Linux 6/7:
ELSA-2015-3098-nierozdzielne zabezpieczenia jądra i aktualizacja bugfixa
http://linux.oracle.com/errata/ELSA-2015-3098.html
Data wydania/ 2015-11-13
[3.8.13-100.el6uek/3.8.13-100.el7uek]
Zablokuj: Usuń Artifical max_hw_sectors Cap (Christoph Hellwig) [Orabug: 21511611]
Oracle Linux 5:
Elba-2015-3076 — aktualizacja usterek jądra dla przedsiębiorstw rozwiązanych
http://linux.oracle.com/errata/ELBA-2015-3076.html
Data wydania/ 2015-08-27
[2.6.39-400.260.1.el5uek]
Block: Remove Artifical max_hw_sectors Cap (Janusz Jin) [Orabug: 21455630]
Omówienie:
Każde urządzenie blokujące istniejące w systemie Linux jest przydzielone katalogiem kolejki (znajdującym się w lokalizacji /sys/Block/XXX/Queue/). Ten katalog zawiera szereg plików konfiguracyjnych. Szczegóły dotyczące tych plików można znaleźć w witrynie internetowej:
https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
Dwa parametry związane z tym CSTA:
max_hw_sectors_kb
Maksymalna liczba kilobajtów obsługiwana w jednym transferze danych.
Ten parametr jest przeznaczony tylko do odczytu i dostarczany przez docelowe urządzenie pamięci masowej za pomocą SCSI odpowiedzi na zapytanie. Podsystem docelowa SCSI w ramach systemu operacyjnego centrum pamięci masowej (SCOS) odpowiada obecnie zerując się z zerem. Oznacza to brak limitu, więc serwer ustawia wartość na maksymalną dozwoloną w ramach tej wersji jądra systemu Linux (32MB).
max_sectors_kb
Maksymalna liczba kilobajtów, jaką może mieć warstwa bloku dla żądania system plików.
Ta wartość to odczyt-zapis. Wartość ta musi być mniejsza lub równa wartości max_hw_sectors_kb.
Zmiany Oracle jądra Linux wprowadzone w jądra 2.6.39-400.260.1. el5uek, 3.8.13-100. el6uek i 3.8.13-100. el7uek zmieniły sposób obliczania max_sectors_kb . W poprzednich wersjach jądra wartość była zawsze ustawiona na 512KB. Po wprowadzeniu tej zmiany wartość max_sectors_kb jest ustawiana na wartość max_hw_sectors_kb. W ten sposób można w istocie zwiększyć maksymalny rozmiar pojedynczego transferu we/wy do danego urządzenia bloku z 512KB na 32MB.
Ta zmiana naraża problem z sterownikiem centrum pamięci masowej 10Gb iSCSI dla wielkości we/wy większych niż ~ 8 MB. Proces serwera z dużym stanem IO może ulec zawieszeniu lub wolumin może stać się niedostępny z powodu dużego rozmiaru we/wy. Ponadto problem ze sterownikiem 10 GB iSCSI może spowodować, że kontroler będzie korzystał z pamięci wymaganej przez inne podsystemy centrum pamięci masowej, co może doprowadzić do większego wpływu.
Obejście problemu:
Aby uniknąć tego problemu, max_sectors_kb dla każdego urządzenia blokującego muszą być dynamicznie zmieniane na serwerze Linux. Poniżej zamieszczono przykładowe polecenia dla urządzenia wielościeżkowego, podłączonego do Linux systemu:
#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
Zmiany te nie są trwałe przy ponownym uruchomieniu komputera. Skrypt init można zaimplementować w celu uruchomienia, kiedy zostanie uruchomiony dany serwer, który zmodyfikuje ten parametr dla wszystkich urządzeń blokujących iSCSI. Skontaktuj się z administratorem Linux lub Oracle, aby dowiedzieć się, jak najlepiej zaimplementować tę trwałość dla każdego środowiska klienta.
Poniższy skrypt (reguła udev) ustawi max_sectors_kb każdego iSCSI dołączonego woluminu Compellent do 512KB. Należy korzystać z tego skryptu według własnego uznania, ponieważ nie są implikowane żadne gwarancje anigwarancje. Zaleca się przetestowanie skryptu, ale powinien on działać bez problemu.
Utwórz plik 99-CML-iSCSI. reguły w katalogu /etc/udev/rules.d/ pod następującą zawartością:
[root@localhost/] # kot/etc/udev/rules.d/99-CML-iSCSI.rules
# Modify max_sectors_kb dla Dell Storage Center iSCSI mapowanych woluminów
ACTION = = "Dodaj", \
ENV = = "*-iSCSI-* Compellent *", \
RUN + = "/bin/sh-c" Echo 512 >/sys $ DEVPATH/Queue/max_sectors_kb ""
Wersje, których dotyczy alert:
Wszystkie wersje SCOS są zagrożone przy korzystaniu z interfejsów 10 GB iSCSI. Nie wpływa to na Standard Fibre Channel, iSCSI 1 GB i FCoE.
Rozwiązanie:
Problem max_sectors_kbzostał rozwiązany w SCOS wersjach 7.01.12, 7.02.01, 7.03.01 i nowszych.
Zmiany są dostępne w SCOS 6.07.03 i nowszym w celu rozwiązania problemu z użyciem pamięci przez sterownik iSCSI 10Gb.