Linux Kernel 2.6 Problem - Read-Only Filesystem nach Path Failover
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)
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
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