Linux Kernel 2.6 Problem - Read-Only Filesystem nach Path Failover

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen
Hinweis: Bitte beachten Sie, dass dieser Artikel / diese Kategorie sich entweder auf ältere Software/Hardware Komponenten bezieht oder aus sonstigen Gründen nicht mehr gewartet wird.
Diese Seite wird nicht mehr aktualisiert und ist rein zu Referenzzwecken noch hier im Archiv abrufbar.

Unter Linux Distributionen mit neuem Kernel kommt es beim Einsatz von LSIlogic SCSI Adaptern unter VMware ESX zu folgendem Problem beim Path Failover (FC SAN, iSCSI SAN): Remount des Dateisystems im Read-Only Modus.

Dies passiert, um das System vor Datenverlust zu schützen.

Auszug aus /var/log/message: read-only Remount des EXT3 Dateisystems

Mon Day time Servername kernel: Buffer I/O error on device sda1, logical block 10014
Mon Day time Servername kernel: lost page write due to I/O error on sda1
Mon Day time Servername kernel: Aborting journal on device sda1.
Mon Day time Servername kernel: ext3_abort called.
Mon Day time Servername kernel: EXT3-fs error (device sda1): ext3_journal_start_sb: Detected aborted journal
Mon Day time Servername kernel: Remounting filesystem read-only
Mon Day time Servername kernel: sd 0:0:1:0: SCSI error: return code = 0x20008
Mon Day time Servername kernel: end_request: I/O error, dev sdb, sector 19660863
Mon Day time Servername kernel: Buffer I/O error on device sdb1, logical block 2457600
Mon Day time Servername kernel: lost page write due to I/O error on sdb1

Die Änderung in dem LSI Logic Treiber wurde bei der Versionsänderung des Linux Kernels von 2.6.13 auf 2.6.14 durch LSI integriert. Während diese Änderung im physikalischen Bereich vielleicht Sinn macht, stellt sie im virtuellen Bereich ein großes Problem dar.

Der LSI Treiber erkennt beim Path Failover des ESX Servers ein SCSI BUS BUSY und reagiert darauf mit einem 5 maligen Wiederanlauf auf die Festplatte zuzugreifen.

Schlägt dies fehl, wird automatisch das Dateisystem auf Read-Only gesetzt, um weitere Schäden zu vermeiden.

VMware hat für Kunden mit Redhat Enterprise Linux 4 U3/U4 reagiert und einen Patch bereitgestellt: KB Artikel 51306

Nutzer anderer Betriebssysteme wie SuSE Linux Enterprise Server 9 SP3 oder SLES 10 haben derzeit nur zwei Möglichkeiten:

1) Umstellung auf BusLogic SCSI Controller

2) Änderung und Neukompilierung des LSI SCSI Treibers


Wie der Treiber zu ändern ist, wurde durch Tom Slighter entdeckt und veröffentlicht: http://www.tuxyturvy.com/blog/index.php?/archives/31-VMware-ESX-and-ext3-journal-aborts.html

Ich hatte dieses Problem unter SLES 10 und bin folgendermaßen vorgegangen. Dieses Vorgehen, kann sehr einfach auf andere Distributionen angewandt werden.


1) Installation der Kernelquellen (Falls noch nicht installiert)

VMware-LinuxKernel-1.jpg

2) Kopieren der LSI Fusion Treiber in ein temporäres Verzeichnis

cp -R /usr/src/linux/drivers/message/fusion /tmp

3) Sicherung der Originaltreiber des genutzten Kernels

  tar czvf /tmp/fusion-org.tgz /lib/modules/`uname -r`/kernel/drivers/message/fusion

4) Anpassung der mptscsih.c Treiberdatei unter /tmp

  sed -i "s/sc->result = (DID_BUS_BUSY << 16) | scsi_status;/sc->result = (DID_OK << 16) | scsi_status;/g" /tmp/fusion/mptscsih.c

VMware-LinuxKernel-2.jpg

5) Anpassung der Makefile Einfügen am Ende der Makefile in /tmp/fusion:

KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
KMISC := /lib/modules/$(KVER)/kernel/drivers/message/fusion
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
install:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install
install -m 744 -c *.ko $(KMISC)
/sbin/depmod -a $(KVER)
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean


6) Kompilieren der neuen Treiber

  In /tmp/fusion: make
  

7) Installation der Treiber

  In /tmp/fusion: make install
  

8) Backup der RAM Disk

  cp /boot/initrd /boot/initrd.old

9) Integration in RAM Disk

  mkinitrd

Um auf Nummer sicher zu gehen, kann optional ein Eintrag in der /boot/grub/menu.lst von grub angefügt werden:

title SUSE Linux Enterprise Server 10 - mpt unchanged
root (hd0,1)
kernel /boot/vmlinuz root=/dev/sda2 vga=0x314    resume=/dev/sda1  splash=silent showopts
initrd /boot/initrd.old

Danach ist der neue Treiber integriert und wird ab dem nächsten Neustart verwendet.

Falls Sie Kernel 2.6.16.21-0.8-smp und SLES 10 im Einsatz haben, können Sie sich die von mir angepassten Treiber herunterladen und installieren.

Dieser muss nur in /tmp entpackt werden. Danach sind die Schritte 7 bis 9 auszuführen.

Treiberpaket: Download

Wichtig: Die Änderungen an diesen Treibern werden von Ihnen auf eigene Gefahr eingespielt. Ich übernehme keinerlei Verantwortung für eventuell entstehende Schäden!


Autor: Dennis Zimmer, VMachine.de

VMware-VMachineLogo.jpg

Das könnte Sie auch interessieren

Purple Diagnostic Screen
VMware ESX ESXi mit Online USV herunterfahren
VMware Upgradeprozess - Migration von vSphere 4 auf vSphere 5