Kapotte Disk vervangen HP smart array

  LVM / filesystemen / RAID / DISK

Voor een klant hebben we een Bigdata cluster (hadoop) ingericht. De Hadoop filesystemen liggen op interne disken gekoppeld via een HP smart array. Normaal gesproken zou je de disken dan in een RAID opstellen willen hebben om disk uitval eenvoudig zonder actie op het OS op te vangen, echter wil de hadoop de disken zo direct mogelijk benaderen, het cluster heeft de data 3 keer op disk staan en meet zelf welke disken traag zijn. Bij deze klant werken veel verschillende beheerders dus is er wel voor gekozen om de disken in een aparte volume group te houden, om verwarring te voor komen.

als er problemen gemeld worden door de monitoring of de applicatie eigenaar, zal je in de logging meldingen terug vinden die duiden op disk problemen. bv dmesg

end_request: critical target error, dev sdh, sector 392
sd 2:0:0:3: [sdh] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 2:0:0:3: [sdh] Sense Key : Hardware Error [current]
sd 2:0:0:3: [sdh] Add. Sense: Logical unit failure
sd 2:0:0:3: [sdh] CDB: Read(10): 28 00 00 00 01 80 00 00 08 00
end_request: critical target error, dev sdh, sector 384
sd 2:0:0:3: [sdh] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 2:0:0:3: [sdh] Sense Key : Hardware Error [current]

hier gaat het dus om /dev/sdh en omdat de disken dus als jbod zijn ingericht zal je ook problemen zien met de lvm commando’s. Controleer met pvs welk lv / filesystem gekoppeld gekoppeld zijn.

# pvs
/dev/vg.hadoopdisk/lv.hadoop3: read failed after 0 of 4096 at 2000364175360: Input/output error
/dev/vg.hadoopdisk/lv.hadoop3: read failed after 0 of 4096 at 2000364232704: Input/output error
/dev/vg.hadoopdisk/lv.hadoop3: read failed after 0 of 4096 at 0: Input/output error
/dev/vg.hadoopdisk/lv.hadoop3: read failed after 0 of 4096 at 4096: Input/output error
/dev/sdh: read failed after 0 of 4096 at 0: Input/output error
/dev/sdh: read failed after 0 of 4096 at 2000365289472: Input/output error
/dev/sdh: read failed after 0 of 4096 at 2000365371392: Input/output error
/dev/sdh: read failed after 0 of 4096 at 4096: Input/output error
Couldn't find device with uuid 8HXHzG-WATa-PHj0-ycje-nzkR-DSYc-fC3goc.
PV VG Fmt Attr PSize PFree
/dev/mapper/mpathap2 vg.root lvm2 a-- 19.86g 7.09g
/dev/mapper/mpathb vg.appl lvm2 a-- 60.00g 26.97g
/dev/sde vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdf vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdg vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdi vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdj vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdk vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdl vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdm vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdn vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdo vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdp vg.hadoopdisk lvm2 a-- 1.82t 0
unknown device vg.hadoopdisk lvm2 a-m 1.82t 0

dat is dus lv.hadoop3 we gaan nu het FS met op lv.hadoop3 umount. en deze uit de /ect/fstab uit #
en gaan proberen het FS te umounten. in dit geval hoeven we ons geen zorgen te maken over de data want binnen het cluster is alles dubbel.

# df -Ph |grep lv.hadoop3
/dev/mapper/vg.hadoopdisk-lv.hadoop3 1.8T 713G 1.1T 41% /hadoop3
# umount /hadoop3

Probeer nu de lv te verwijderen.

# lvremove /dev/vg.hadoopdisk/lv.hadoop3
/dev/vg.hadoopdisk/lv.hadoop3: read failed after 0 of 4096 at 2000364175360: Input/output error
/dev/vg.hadoopdisk/lv.hadoop3: read failed after 0 of 4096 at 2000364232704: Input/output error
/dev/vg.hadoopdisk/lv.hadoop3: read failed after 0 of 4096 at 0: Input/output error
/dev/vg.hadoopdisk/lv.hadoop3: read failed after 0 of 4096 at 4096: Input/output error
/dev/sdh: read failed after 0 of 4096 at 0: Input/output error
/dev/sdh: read failed after 0 of 4096 at 2000365289472: Input/output error
/dev/sdh: read failed after 0 of 4096 at 2000365371392: Input/output error
/dev/sdh: read failed after 0 of 4096 at 4096: Input/output error
Couldn't find device with uuid 8HXHzG-WATa-PHj0-ycje-nzkR-DSYc-fC3goc.
Do you really want to remove active logical volume lv.hadoop3? [y/n]: y
Logical volume "lv.hadoop3" successfully removed

De disk is missing dus kan je hem niet meer opgeven met vgreduce

# pvs
/dev/sdh: read failed after 0 of 4096 at 0: Input/output error
/dev/sdh: read failed after 0 of 4096 at 2000365289472: Input/output error
/dev/sdh: read failed after 0 of 4096 at 2000365371392: Input/output error
/dev/sdh: read failed after 0 of 4096 at 4096: Input/output error
Couldn't find device with uuid 8HXHzG-WATa-PHj0-ycje-nzkR-DSYc-fC3goc.
PV VG Fmt Attr PSize PFree
/dev/mapper/mpathap2 vg.root lvm2 a-- 19.86g 7.09g
/dev/mapper/mpathb vg.appl lvm2 a-- 60.00g 26.97g
/dev/sde vg.hadoopdisk lvm2 a-- 1.82t 0
/ - /
/dev/sdo vg.hadoopdisk lvm2 a-- 1.82t 0
/dev/sdp vg.hadoopdisk lvm2 a-- 1.82t 0
unknown device vg.hadoopdisk lvm2 a-m 1.82t 1.82t

daarom vgreduce met de optie removemissing

[root@lsrv3121 ~]# vgreduce --removemissing vg.hadoopdisk
/dev/sdh: read failed after 0 of 4096 at 0: Input/output error
/dev/sdh: read failed after 0 of 4096 at 2000365289472: Input/output error
/dev/sdh: read failed after 0 of 4096 at 2000365371392: Input/output error
/dev/sdh: read failed after 0 of 4096 at 4096: Input/output error
Couldn't find device with uuid 8HXHzG-WATa-PHj0-ycje-nzkR-DSYc-fC3goc.
Wrote out consistent volume group vg.hadoopdisk

We kunnen de disk nu binnen de hpacucli opzoeken de drive kan op verschillende plekken op failed staan. binnen de tool zijn er logildrives en physical drives
ik check altijd eerst de pd physical drives, als de drive echt stuk is kan het heel lang duren.

[root@lsrv3121 ~]# hpacucli
HP Array Configuration Utility CLI 9.10.22.0
Detecting Controllers...Done.
Type "help" for a list of supported commands.
Type "exit" to close the console.

=> ctrl slot=1 pd all show status
physicaldrive 1E:1:1 (port 1E:box 1:bay 1, 2 TB): OK
physicaldrive 1E:1:2 (port 1E:box 1:bay 2, 2 TB): OK
physicaldrive 1E:1:3 (port 1E:box 1:bay 3, 2 TB): OK
physicaldrive 1E:1:4 (port 1E:box 1:bay 4, 2 TB): OK
physicaldrive 1E:1:5 (port 1E:box 1:bay 5, 2 TB): OK
physicaldrive 1E:1:6 (port 1E:box 1:bay 6, 2 TB): OK
physicaldrive 1E:1:7 (port 1E:box 1:bay 7, 2 TB): OK
physicaldrive 1E:1:8 (port 1E:box 1:bay 8, 2 TB): OK
physicaldrive 1E:1:9 (port 1E:box 1:bay 9, 2 TB): OK
physicaldrive 1E:1:10 (port 1E:box 1:bay 10, 2 TB): OK
physicaldrive 1E:1:11 (port 1E:box 1:bay 11, 2 TB): OK
physicaldrive 1E:1:12 (port 1E:box 1:bay 12, 2 TB): OK

physiek lijkt alles goed. dan nog de logical drives bekijken

=> ctrl slot=1 ld all show status
logicaldrive 1 (1.8 TB, RAID 0): OK
logicaldrive 2 (1.8 TB, RAID 0): OK
logicaldrive 3 (1.8 TB, RAID 0): OK
logicaldrive 4 (1.8 TB, RAID 0): Failed
logicaldrive 5 (1.8 TB, RAID 0): OK
logicaldrive 6 (1.8 TB, RAID 0): OK
logicaldrive 7 (1.8 TB, RAID 0): OK
logicaldrive 8 (1.8 TB, RAID 0): OK
logicaldrive 9 (1.8 TB, RAID 0): OK
logicaldrive 10 (1.8 TB, RAID 0): OK
logicaldrive 11 (1.8 TB, RAID 0): OK
logicaldrive 12 (1.8 TB, RAID 0): OK

logical drive 4 geeft aan dat die stuk is. die gaan die gaan we dus verwijderen.

=> ctrl slot=1 ld 4 delete
Warning: Deleting an array can cause other array letters to become renamed.
E.g. Deleting array A from arrays A,B,C will result in two remaining
arrays A,B ... not B,C

Warning: Deleting the specified device(s) will result in data being lost.
Continue? (y/n) y
=>

de drive is nu klaar om gewisseld te worden. laat de drive vervangen of zet er zelf een nieuwe in. als de disk vervangen is door log je weer in op hpacucli en zoek de unassigned disk, deze disk kan je gebruiken om eens logische drive aan te maken

=> ctrl slot=1 pd all show
physicaldrive 1E:1:4 (port 1E:box 1:bay 4, SATA, 2 TB, OK)

=> ctrl slot=1 create type=ld drives=1E:1:4 raid=0
Warning: Creation of this logical drive has caused array letters to become
renamed.

de disk word nu automatische door linux op gedetecteerd.
zoek hem op met fdisk -l, voeg hem weer toe aan de volume groep of maak een partion aan en zet er een filesysteem op vergeet de fstab niet terug te zetten.

# fdisk -l |grep ^Disk |grep sd

# pvcreate /dev/sdt
Physical volume "/dev/sdt" successfully created
# vgextend vg.hadoopdisk /dev/sdt
Volume group "vg.hadoopdisk" successfully extended
# lvcreate -l 476924 -n lv.hadoop3 vg.hadoopdisk /dev/sdt
Logical volume "lv.hadoop3" created
# mkfs.ext4 /dev/vg.hadoopdisk/lv.hadoop3
mke2fs 1.41.12 (17-May-2010)