Ihr Browser versucht gerade eine Seite aus dem sogenannten Internet auszudrucken. Das Internet ist ein weltweites Netzwerk von Computern, das den Menschen ganz neue Möglichkeiten der Kommunikation bietet.

Da Politiker im Regelfall von neuen Dingen nichts verstehen, halten wir es für notwendig, sie davor zu schützen. Dies ist im beidseitigen Interesse, da unnötige Angstzustände bei Ihnen verhindert werden, ebenso wie es uns vor profilierungs- und machtsüchtigen Politikern schützt.

Sollten Sie der Meinung sein, dass Sie diese Internetseite dennoch sehen sollten, so können Sie jederzeit durch normalen Gebrauch eines Internetbrowsers darauf zugreifen. Dazu sind aber minimale Computerkenntnisse erforderlich. Sollten Sie diese nicht haben, vergessen Sie einfach dieses Internet und lassen uns in Ruhe.

Die Umgehung dieser Ausdrucksperre ist nach §95a UrhG verboten.

Mehr Informationen unter www.politiker-stopp.de.

Linux RAID: defekte Platte tauschen

| |

Szenario: Ein Rechner mit Linux RAID (Multiple Devices a.k.a 'md'), konfiguriert auf Spiegelung (RAID 1). Eine Platte stirbt. Was tun?

Eindringliche Warnung vorweg: Eine Platte, die einen Fehler aufweist, stirbt. Sie wird sofort getauscht. Alle "modernen" (= jünger als 2002) Festplatten haben einen internen Fehlerspeicher, der die ersten paar hundert Lesefehler völlig eigenständig reparieren kann. D.h. wenn das Betriebssystem anfängt, Fehler zu bemerken, dann ist die Platte hin. Es ist nur noch eine Frage der Zeit, bis die Fehler sich häufen, und den Stress, den man dann hat, das ist es einfach nicht wert. Also: sofort tauschen!

Anfang

So sieht das im Systemprotokoll aus, wenn in einem Linux RAID eine Platte stirbt. Darf ich in diesem Zusammenhang die Verwendung von smartd und logcheck ganz eindringlich empfehlen? Sonst hätte ich davon erst Tage später Wind bekommen. Und einen Produktionsserver tagelang mit einer kaputten Platte zu betreiben, ist ... ungesund.

smartd[1076]: Device: /dev/hdc, SMART Prefailure Attribute:
        198 Offline_Uncorrectable changed from 253 to 100
kernel: raid1: Disk failure on hdc6, disabling device.
kernel: hdc: dma_intr: status=0x59
        { DriveReady SeekComplete DataRequest Error }
kernel: hdc: dma_intr: error=0x01 { AddrMarkNotFound },
        LBAsect=40253068, high=2,low=6698636, sector=8990512
  (... davon etliche ...)
Mar 30 09:04:52 master kernel: hdc: DMA disabled
Mar 30 09:04:52 master kernel: ide1: reset: success
smartd[1076]: Device: /dev/hdc, 1 Offline uncorrectable sectors
smartd[1076]: Device: /dev/hdc, SMART Usage Attribute:
        196 Reallocated_Event_Count changed from 253 to 100
kernel: end_request: I/O error, dev 16:06 (hdc), sector 8990515
kernel: ^IOperation continuing on 1 devices
kernel: raid1: hdc6: rescheduling block 8990512
kernel: md: updating md3 RAID superblock on device
kernel: md: (skipping faulty hdc6 )
kernel: raid1: hda6: redirecting sector 8990512 to another mirror
kernel: md: recovery thread got woken up ...
kernel: md3: no spare disk to reconstruct array! -- continuing in degraded mode
kernel: md: recovery thread finished ...

Ich hatte LILO mit folgender Konfigration laufen

disk=/dev/hda
bios=0x80
lba32
boot=/dev/md0
raid-extra-boot="/dev/hdc,/dev/hda"
root=/dev/md0
install=menu
map=/boot/map
prompt
timeout=50
vga=normal
default=Linux

image=/vmlinuz
        label=Linux
        read-only

Damit schreibt er seinen Bootblock auf beide Festplatten und man kann im Ernstfall von beiden booten.

Recovery

Durch die gute Vorbereitung war das Problem einfach zu lösen. Da ich keinen Hotswap-Controller für die Festplatten hatte, musste die Möhre runtergefahren werden, die defekte Platte getauscht, und wieder hochgefahren. Danach fuhr Linux das RAID im 'degraded mode' hoch, weil er pro Partition nur ein Spiegelelement fand:

kernel: md: multipath personality registered as nr 7
kernel: md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
kernel: md: Autodetecting RAID arrays.
kernel:  [events: 00000025]
kernel:  [events: 00000026]
kernel: md: autorun ...
kernel: md: considering hda6 ...
kernel: md:  adding hda6 ...
kernel: md: created md3
kernel: md: bind
kernel: md: running: 
kernel: md3: removing former faulty hdc6!
kernel: raid1: md3, not all disks are operational -- trying to recover array
kernel: raid1: raid set md3 active with 1 out of 2 mirrors
kernel: md: updating md3 RAID superblock on device
kernel: md: recovery thread got woken up ...
kernel: md3: no spare disk to reconstruct array! -- continuing in degraded mode
kernel: md: recovery thread finished ...

Das ist auch völlig OK so (solange einem dann nicht ausgerechnet auch die zweite Platte stirbt). Mit der neuen Platte verfährt man dann so:

sfdisk -d /dev/hda > hda.sfdisk-d     # Partitionstabelle synchronisieren
sfdisk /dev/hdc < hda.sfdisk-d
fdisk -l                              # Partitionstabellen vergleichen
mdadm --add /dev/md0 /dev/hdc1        # Neue Partitionen in die RAIDs einfügen
mdadm --add /dev/md1 /dev/hdc2
  ( ... für jede Partition ... )
lilo -v                               # Bootmanager auf beide Platten schreiben
watch cat /proc/mdstat                # beim Rebuild zugucken

Fertig!

Wichtig

Das RAID-Wiederherstellen läuft im Hintergrund ab und mit niedriger Priorität, so dass der Server schon wieder (quasi) voll einsatzbereit ist. Aber: es verlangsamt alle Plattenaktivititaeten ERHEBLICH, also sollte man die Kiste währenddessen in Ruhe lassen und aufwändige Aktionen wie z.B. das Prüfen von MySQL-Tabellen (mysqlcheck) oder Backups möglichst erst später machen!

Grobe Faustregel: Rebuilds bei heutigen Festplattengeschwindigkeiten dauern ca. 1h pro 100GB Plattengröße, wenn der Server parallel noch mit moderater Last weiterläuft. Weniger bei schnellen Platten.

Trackback URL for this post:

http://news.jensbenecke.de/trackback/1007

Antworten

Please solve the math problem above and type in the result. e.g. for 1+1, type 2
The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <p> <a> <em> <b> <i> <u> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <h2> <h3> <h4> <img> <pre> <blockquote>
  • Lines and paragraphs break automatically.
  • Web and e-mail addresses are automatically converted into links.
More information about formatting options