SC-meddelande för lagrings kund: Linux stora IO-storlekar kan påverka iSCSI volym tillgänglighet
Summary: En nyligen utförd kernel-ändring infördes i Oracle Enterprise Linux-fördelningen som ändrar beteendet för hur IO-gränserna beräknas på block enheter. ...
Symptoms
Varning!
Dessa ändringar beskrivs nedan.
Oracle Linux 6/7:
Elsa-2015-3098-Enterprise kernel Security-och Bugfix-uppdatering
http://linux.oracle.com/errata/ELSA-2015-3098.html
Utgivningsdatum/ 2015-11-13
[3.8.13-100.el6uek/3.8.13-100.el7uek]
block: ta bort Artifical max_hw_sectors Cap (Christoph Hellwig) [Orabug: 21511611]
Oracle Linux 5:
Elba-2015-3076-Enterprise kernel fel korrigering uppdatering
http://linux.oracle.com/errata/ELBA-2015-3076.html
Utgivningsdatum/ 2015-08-27
[2.6.39-400.260.1.el5uek]
block: ta bort Artifical max_hw_sectors Cap (Joe Jin) [Orabug: 21455630]
Översikt:
Varje block enhet som finns på ett Linux system allokeras en kömapp (som finns på /sys/block/XXX/Queue/). Den här katalogen innehåller ett antal konfigurationsfiler. Information om dessa filer finns på:
https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
De två parametrarna som är relevanta för den här CSTA:
max_hw_sectors_kb
Maximalt antal kilobyte som stöds i en enda data överföring.
Den här parametern är skrivskyddad och tillhandahålls av mål lagrings enheten genom SCSI förfrågnings svar. Under systemet SCSI Target i Storage Center-operativsystemet (SCOS) svarar för närvarande med noll. Detta indikerar att servern inte tillåter det maximala värdet inom Linux-kernelns version (32 MB).
max_sectors_kb
Det maximala antalet kilobyte som block skiktet tillåter en begäran om filesystem.
Det här värdet är Läs-skriv. Det här värdet måste vara mindre än eller lika med max_hw_sectors_kbsvärdet.
Ändringarna i Oracle Linux kernel som introducerades i kernels 2.6.39-400.260.1. el5uek, 3.8.13-100. el6uek och 3.8.13-100. el7uek ändrades på det sätt som max_sectors_kb beräknas. I tidigare kernel-versioner var värdet alltid inställt på 512 kB. Efter denna förändring är värdet för max_sectors_kb inställt på värdet för max_hw_sectors_kb. Detta ökade i huvudsak den maximala storleken på en enda IO-överföring till en given block enhet från 512 KB till 32 MB.
Ändringen exponerade ett problem med Storage Center GB iSCSI-drivrutinen för IO-storlekar större än ~ 8 MB. Den server process som producerar stor IO kan låsa sig eller så kan volymen bli otillgänglig på grund av den stora IO-storleken. Dessutom kan de 10 GB iSCSI driv rutins problem leda till att styrenheten förbrukar det minne som krävs av andra lagrings Center under system, vilket kan leda till en större inverkan.
Alternativ lösning:
För att förhindra det här problemet måste max_sectors_kb för varje block enhet ändras dynamiskt på Linux-servern. Nedan visas exempel kommandon för en blockerad Multisök vägs enhet som är ansluten till ett Linux system:
#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
Dessa ändringar är inte beständiga genom att datorn startas om. Ett init-skript kan implementeras för att köras när en viss server startar som ändrar den här parametern för alla iSCSI-block enheter. Kontakta en Linux administratör eller Oracle support om hur det är bäst att implementera detta persistence för varje kund miljö.
Följande skript (udev Rule) ställer in max_sectors_kb på alla iSCSI anslutna Compellent-volymen till 512 kB. Använd det här manuset själv eftersom inga garantier eller garantier är underförstådda. Vi rekommenderar att du testar skriptet, men det bör fungera utan problem.
Skapa filen 99-CML-iSCSI. regler i katalogen /etc/udev/rules.d/ med följande innehåll:
[root@localhost/] # Kat/etc/udev/rules.d/99-CML-iSCSI.rules
# Ändra max_sectors_kb för Dell Storage Center iSCSI mappade volymer
ACTION = = "Add", \
KUVERT = = "*-iSCSI-* Compellent *", \
RUN + = "/bin/sh-c" ECHO 512 >/sys $ DEVPATH/kö/max_sectors_kb ""
Berörda versioner:
Alla SCOS versioner påverkas av att de använder 10 GB iSCSI-gränssnitt. Fibre Channel, 1 GB iSCSI och FCoE påverkas inte.
Lösning:
Max_sectors_kbproblemet har lösts i SCOS versionerna 7.01.12, 7.02.01 och 7.03.01 och senare.
Det finns ändringar i SCOS 6.07.03 och senare för att behandla problem med minnes förbrukningen med 10 GB iSCSI-drivrutinen.