Hallo Liste,
ich habe nach einem Festplattentausch ein Problem mit der Synchronisation des RAIDs, weil jetzt auch auf der 2. Platte ein Fehler aufgetaucht ist.
~# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md2 : active raid1 sda3[2](S) sdb3[1] 1451496768 blocks [2/1] [_U]
Die Partition /dev/sda3 auf der neuen Platte ist nach dem Sync nicht eingebunden, sondern als Spare (S) aufgeführt.
~# mdadm -D /dev/md2 /dev/md2: Version : 0.90 Creation Time : Tue May 4 19:09:57 2010 Raid Level : raid1 Array Size : 1451496768 (1384.26 GiB 1486.33 GB) Used Dev Size : 1451496768 (1384.26 GiB 1486.33 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 2 Persistence : Superblock is persistent
Update Time : Tue Sep 24 11:28:14 2013 State : clean, degraded Active Devices : 1 Working Devices : 2 Failed Devices : 0 Spare Devices : 1
UUID : 67084b3c:2d4cdd43:776c2c25:004bd7b2 Events : 0.1768518
Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 19 1 active sync /dev/sdb3
2 8 3 - spare /dev/sda3
Ursache ist ein Lesefehler auf /dev/sdb3 beim Sync. Ob der fehlerhafte Sektor überhaupt benutzt ist, weiß ich auch (noch) nicht.
An sich ist dieser Current_Pending_Sector (siehe smartctl) noch kein großes Problem, beim Schreibversuch darauf wird dieser ja verlegt, solange noch Reservesektoren (laut Reallocated_Sector_Ct) frei sind, was hier der Fall ist. Solange aber nur lesend darauf zugegriffen wird, bleibt der Fehler bestehen.
smartctl-Auszug: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 5 Reallocated_Sector_Ct 0x0033 098 098 036 Pre-fail Always - 95 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed: read failure 90% 36961 1754701143
Das ist derzeitig der einzige Anhaltspunkt, welcher Sektor betroffen ist. /dev/md2 ist ein PV im LVM. Darin stecken natürlich mehrere LVs. Es ist auch noch freier Platz vorhanden. Allerdings ist nicht erkennbar, welches LV und welcher Block darin betroffen ist, um anschließend mit dd gezielt darauf loszugehen.
Wobei einige LVs auch wieder virtuelle HDDs für KVM sind und sich die Analyse dann ggf. in die VM verlagert.
Mir fällt nur ein etwas mühseliger Weg ein: Den freien Speicher in der VG einem LV zuweisen, alle Sektoren mit dd überschreiben, um hier defekte Sektoren auszuschließen bzw. damit umzulagern. Danach das LV wieder löschen und Ersatz-LVs für die anderen Partitionen anzulegen, den Inhalt zu kopieren, neues LV mounten und das alte LV wieder mit dd überschreiben.
Hat jemand einen besseren Ansatz?
Gruß Rico