Bug 801571
Summary: | manual raid volume repair can fail after single leg device failure | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | Corey Marthaler <cmarthal> |
Component: | lvm2 | Assignee: | Jonathan Earl Brassow <jbrassow> |
Status: | CLOSED ERRATA | QA Contact: | Cluster QE <mspqa-list> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | 6.3 | CC: | agk, dwysocha, heinzm, jbrassow, mbroz, mcsontos, msnitzer, prajnoha, prockai, syeghiay, thornber, zkabelac |
Target Milestone: | rc | Keywords: | Reopened, TestBlocker |
Target Release: | --- | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | lvm2-2.02.98-6.el6 | Doc Type: | Bug Fix |
Doc Text: |
Previously, if a device failed while a RAID logical volume was not in-sync, any attempts to fix it would fail in an uncontrolled way. This case is now handled, but there are some changes that must be noted:
1) You cannot repair or replace devices in a RAID logical volume that is not active. The tool ('lvconvert --repair') must know the sync status of the array and can only get that when the array is active.
2) You cannot replace a device in a RAID logical volume that has not completed its initial synchronization. Doing so would produce unpredictable results and is therefore disallowed.
3) You can repair a RAID logical volume that has not completed its initial synchronization, but some data may not be recoverable because it had not had time to make that data fully redundant. In this case, a warning is printed and the user is queried if they would like to proceed.
|
Story Points: | --- |
Clone Of: | Environment: | ||
Last Closed: | 2013-02-21 08:03:36 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 895654 |
Description
Corey Marthaler
2012-03-08 21:34:47 UTC
This happens with raid4 devices as well. Fault policy is warn, manually repairing failed raid volumes taft-01: 'echo y | lvconvert --repair black_bird/synced_primary_raid4_3legs_1' /dev/sdg1: read failed after 0 of 2048 at 0: Input/output error Couldn't find device with uuid NYUlem-sF4t-j1PC-Cd19-pLEx-B8LG-hlLGit. Attempt to replace failed RAID images (requires full device resync)? [y/n]: device-mapper: reload ioctl on failed: Invalid argument Failed to suspend black_bird/synced_primary_raid4_3legs_1 before committing changes Failed to replace faulty devices in black_bird/synced_primary_raid4_3legs_1. Device '/dev/sdf1' has been left open. [...] Device '/dev/sdc1' has been left open. Device '/dev/sdd1' has been left open. lvconvert repair failed for black_bird/synced_primary_raid4_3legs_1 on taft-01 Mar 8 15:44:35 taft-01 qarshd[3744]: Running cmdline: echo y | lvconvert --repair black_bird/synced_primary_raid4_3legs_1 Mar 8 15:44:36 taft-01 kernel: device-mapper: raid: Reshaping arrays not yet supported. Mar 8 15:44:36 taft-01 kernel: device-mapper: table: 253:11: raid: Unable to assemble array: Invalid superblocks Mar 8 15:44:36 taft-01 kernel: device-mapper: ioctl: error adding target to table [root@taft-01 ~]# lvs -a -o +devices /dev/sdg1: read failed after 0 of 512 at 145669554176: Input/output error Couldn't find device with uuid NYUlem-sF4t-j1PC-Cd19-pLEx-B8LG-hlLGit. LV VG Attr LSize Devices synced_primary_raid4_3legs_1 black_bird rwi-aor- 504.00m synced_primary_raid4_3legs_1_rimage_0(0),synced_primary_raid4_3legs_1_rimage_1(0),synced_primary_raid4_3legs_1_rimage_2(0),synced_primary_raid4_3legs_1_rimage_3(0) [synced_primary_raid4_3legs_1_rimage_0] black_bird iwi-aor- 168.00m unknown device(1) [synced_primary_raid4_3legs_1_rimage_1] black_bird iwi-aor- 168.00m /dev/sdc1(1) [synced_primary_raid4_3legs_1_rimage_2] black_bird iwi-aor- 168.00m /dev/sdb1(1) [synced_primary_raid4_3legs_1_rimage_3] black_bird iwi-aor- 168.00m /dev/sde1(1) [synced_primary_raid4_3legs_1_rmeta_0] black_bird ewi-aor- 4.00m unknown device(0) [synced_primary_raid4_3legs_1_rmeta_1] black_bird ewi-aor- 4.00m /dev/sdc1(0) [synced_primary_raid4_3legs_1_rmeta_2] black_bird ewi-aor- 4.00m /dev/sdb1(0) [synced_primary_raid4_3legs_1_rmeta_3] black_bird ewi-aor- 4.00m /dev/sde1(0) The issue in comment #1 may actually be bug 801613. Actually, they may both be related. This works for me. You mention in comment #1 that it is reproducible 30% of the time. What is it that you are doing differently that 30% of the time that causes the failure? [root@bp-01 ~]# devices vg LV Copy% Devices lv lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0),lv_rimage_3(0),lv_rimage_4(0) [lv_rimage_0] /dev/sdb1(1) [lv_rimage_1] /dev/sdc1(1) [lv_rimage_2] /dev/sdd1(1) [lv_rimage_3] /dev/sde1(1) [lv_rimage_4] /dev/sdf1(1) [lv_rmeta_0] /dev/sdb1(0) [lv_rmeta_1] /dev/sdc1(0) [lv_rmeta_2] /dev/sdd1(0) [lv_rmeta_3] /dev/sde1(0) [lv_rmeta_4] /dev/sdf1(0) [root@bp-01 ~]# off.sh sdc Turning off sdc [root@bp-01 ~]# lvconvert --repair vg/lv /dev/sdc1: read failed after 0 of 2048 at 250994294784: Input/output error /dev/sdc1: read failed after 0 of 2048 at 250994376704: Input/output error /dev/sdc1: read failed after 0 of 2048 at 0: Input/output error /dev/sdc1: read failed after 0 of 2048 at 4096: Input/output error Couldn't find device with uuid sPkCdG-oM1j-IcIj-hlIa-4elN-g7N3-LU0993. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Faulty devices in vg/lv successfully replaced. [root@bp-01 ~]# devices vg Couldn't find device with uuid sPkCdG-oM1j-IcIj-hlIa-4elN-g7N3-LU0993. LV Copy% Devices lv lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0),lv_rimage_3(0),lv_rimage_4(0) [lv_rimage_0] /dev/sdb1(1) [lv_rimage_1] /dev/sdg1(1) [lv_rimage_2] /dev/sdd1(1) [lv_rimage_3] /dev/sde1(1) [lv_rimage_4] /dev/sdf1(1) [lv_rmeta_0] /dev/sdb1(0) [lv_rmeta_1] /dev/sdg1(0) [lv_rmeta_2] /dev/sdd1(0) [lv_rmeta_3] /dev/sde1(0) [lv_rmeta_4] /dev/sdf1(0) I'll try and narrow this down, but is does still fail for me with the rpms that are in the official errata. taft-01: 'echo y | lvconvert --repair black_bird/synced_random_raid6_3legs_1' /dev/sdb1: read failed after 0 of 512 at 145669554176: Input/output error [...] /dev/sdb1: read failed after 0 of 2048 at 0: Input/output error Couldn't find device with uuid u15Y60-CtBL-4jdl-05L8-lM0n-ZvOZ-a6QHKH. Attempt to replace failed RAID images (requires full device resync)? [y/n]: device-mapper: reload ioctl on failed: Invalid argument Failed to suspend black_bird/synced_random_raid6_3legs_1 before committing changes Failed to replace faulty devices in black_bird/synced_random_raid6_3legs_1. Device '/dev/sdf1' has been left open. [...] Device '/dev/sdc1' has been left open. Device '/dev/sdd1' has been left open. lvconvert repair failed for black_bird/synced_random_raid6_3legs_1 on taft-01 kernel: device-mapper: raid: Superblock area of rebuild device 3 should have been cleared. kernel: md/raid:mdX: device dm-12 operational as raid disk 4 kernel: md/raid:mdX: device dm-7 operational as raid disk 2 kernel: md/raid:mdX: device dm-5 operational as raid disk 1 kernel: md/raid:mdX: device dm-3 operational as raid disk 0 kernel: md/raid:mdX: allocated 5334kB kernel: md/raid:mdX: raid level 6 active with 4 out of 5 devices, algorithm 8 kernel: mdX: bitmap file is out of date (51 < 56) -- forcing full recovery kernel: created bitmap (1 pages) for device mdX lvm[1273]: No longer monitoring RAID device black_bird-synced_random_raid6_3legs_1 for events. kernel: mdX: bitmap file is out of date, doing full recovery kernel: mdX: bitmap initialized from disk: read 1/1 pages, set 336 of 336 bits lvm[1273]: Monitoring RAID device black_bird-synced_random_raid6_3legs_1 for events. lvm[1273]: raid6_zr array, black_bird-synced_random_raid6_3legs_1, is not in-sync. kernel: md: recovery of RAID array mdX kernel: md: minimum _guaranteed_ speed: 1000 KB/sec/disk. kernel: md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery. kernel: md: using 128k window, over a total of 172032k. kernel: sd 3:0:0:1: rejecting I/O to offline device [...] kernel: sd 3:0:0:1: rejecting I/O to offline device kernel: device-mapper: table: 253:13: raid: Cannot change device positions in RAID array kernel: device-mapper: ioctl: error adding target to table kernel: md: mdX: recovery done. lvm[1273]: raid6_zr array, black_bird-synced_random_raid6_3legs_1, is now in-sync. [root@taft-01 ~]# lvs -a -o +devices /dev/sdb1: read failed after 0 of 512 at 145669554176: Input/output error [...] Couldn't find device with uuid u15Y60-CtBL-4jdl-05L8-lM0n-ZvOZ-a6QHKH. LV VG Attr LSize Devices synced_random_raid6_3legs_1 black_bird rwi-aor- 504.00m synced_random_raid6_3legs_1_rimage_0(0),synced_random_raid6_3legs_1_rimage_1(0),synced_random_raid6_3legs_1_rimage_2(0),synced_random_raid6_3legs_1_rimage_5(0),synced_random_raid6_3legs_1_rimage_4(0) [synced_random_raid6_3legs_1_rimage_0] black_bird iwi-aor- 168.00m /dev/sde1(1) [synced_random_raid6_3legs_1_rimage_1] black_bird iwi-aor- 168.00m /dev/sdg1(1) [synced_random_raid6_3legs_1_rimage_2] black_bird iwi-aor- 168.00m /dev/sdf1(1) synced_random_raid6_3legs_1_rimage_3_extracted black_bird -wi----- 168.00m unknown device(1) [synced_random_raid6_3legs_1_rimage_4] black_bird iwi-aor- 168.00m /dev/sdh1(1) [synced_random_raid6_3legs_1_rimage_5] black_bird iwi-aor- 168.00m /dev/sdd1(1) [synced_random_raid6_3legs_1_rmeta_0] black_bird ewi-aor- 4.00m /dev/sde1(0) [synced_random_raid6_3legs_1_rmeta_1] black_bird ewi-aor- 4.00m /dev/sdg1(0) [synced_random_raid6_3legs_1_rmeta_2] black_bird ewi-aor- 4.00m /dev/sdf1(0) synced_random_raid6_3legs_1_rmeta_3_extracted black_bird -wi----- 4.00m unknown device(0) [synced_random_raid6_3legs_1_rmeta_4] black_bird ewi-aor- 4.00m /dev/sdh1(0) [synced_random_raid6_3legs_1_rmeta_5] black_bird ewi-aor- 4.00m /dev/sdd1(0) synced_random_raid6_3legs_2 black_bird rwi-aor- 504.00m synced_random_raid6_3legs_2_rimage_0(0),synced_random_raid6_3legs_2_rimage_1(0),synced_random_raid6_3legs_2_rimage_2(0),synced_random_raid6_3legs_2_rimage_3(0),synced_random_raid6_3legs_2_rimage_4(0) [synced_random_raid6_3legs_2_rimage_0] black_bird iwi-aor- 168.00m /dev/sde1(44) [synced_random_raid6_3legs_2_rimage_1] black_bird iwi-aor- 168.00m /dev/sdg1(44) [synced_random_raid6_3legs_2_rimage_2] black_bird iwi-aor- 168.00m /dev/sdf1(44) [synced_random_raid6_3legs_2_rimage_3] black_bird iwi-aor- 168.00m unknown device(44) [synced_random_raid6_3legs_2_rimage_4] black_bird iwi-aor- 168.00m /dev/sdh1(44) [synced_random_raid6_3legs_2_rmeta_0] black_bird ewi-aor- 4.00m /dev/sde1(43) [synced_random_raid6_3legs_2_rmeta_1] black_bird ewi-aor- 4.00m /dev/sdg1(43) [synced_random_raid6_3legs_2_rmeta_2] black_bird ewi-aor- 4.00m /dev/sdf1(43) [synced_random_raid6_3legs_2_rmeta_3] black_bird ewi-aor- 4.00m unknown device(43) [synced_random_raid6_3legs_2_rmeta_4] black_bird ewi-aor- 4.00m /dev/sdh1(43) 2.6.32-220.4.2.el6.x86_64 lvm2-2.02.95-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 lvm2-libs-2.02.95-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 lvm2-cluster-2.02.95-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 udev-147-2.40.el6 BUILT: Fri Sep 23 07:51:13 CDT 2011 device-mapper-1.02.74-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 device-mapper-libs-1.02.74-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 device-mapper-event-1.02.74-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 device-mapper-event-libs-1.02.74-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 cmirror-2.02.95-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 I have not been able to reproduce this since updating the kernel. Closing and will reopen if seen again in the future... 2.6.32-251.el6.x86_64 lvm2-2.02.95-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 lvm2-libs-2.02.95-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 lvm2-cluster-2.02.95-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 udev-147-2.40.el6 BUILT: Fri Sep 23 07:51:13 CDT 2011 device-mapper-1.02.74-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 device-mapper-libs-1.02.74-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 device-mapper-event-1.02.74-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 device-mapper-event-libs-1.02.74-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 cmirror-2.02.95-1.el6 BUILT: Tue Mar 6 10:00:33 CST 2012 I'm seeing this again while testing RAID10 with the latest 6.4 rpms. ./black_bird -l /home/msp/cmarthal/work/sts/sts-root -o taft-01 -r /usr/tests/sts-rhel6.4 -e kill_random_non_synced_raid10_3legs Scenario kill_random_non_synced_raid10_3legs: Kill random leg of NON synced 3 leg raid10 volume(s) ********* RAID hash info for this scenario ********* * names: non_synced_random_raid10_3legs_1 * sync: 0 * type: raid10 * -m |-i value: 3 * leg devices: /dev/sdc1 /dev/sde1 /dev/sdb1 /dev/sdf1 /dev/sdd1 /dev/sdh1 * failpv(s): /dev/sdf1 * failnode(s): taft-01 * raid fault policy: warn ****************************************************** Creating raids(s) on taft-01... taft-01: lvcreate --type raid10 -i 3 -n non_synced_random_raid10_3legs_1 -L 1.5G black_bird /dev/sdc1:0-1000 /dev/sde1:0-1000 /dev/sdb1:0-1000 /dev/sdf1:0-1000 /dev/sdd1:0-1000 /dev/sdh1:0-1000 RAID Structure(s): LV Attr LSize Copy% Devices non_synced_random_raid10_3legs_1 rwi-a-r-- 1.50g 6.25 non_synced_random_raid10_3legs_1_rimage_0(0),non_synced_random_raid10_3legs_1_rimage_1(0),non_synced_random_raid10_3legs_1_rimage_2(0),non_synced_random_raid10_3legs_1_rimage_3(0),non_synced_random_raid10_3legs_1_rimage_4(0),non_synced_random_raid10_3legs_1_rimage_5(0) [non_synced_random_raid10_3legs_1_rimage_0] Iwi-aor-- 512.00m /dev/sdc1(1) [non_synced_random_raid10_3legs_1_rimage_1] Iwi-aor-- 512.00m /dev/sde1(1) [non_synced_random_raid10_3legs_1_rimage_2] Iwi-aor-- 512.00m /dev/sdb1(1) [non_synced_random_raid10_3legs_1_rimage_3] Iwi-aor-- 512.00m /dev/sdf1(1) [non_synced_random_raid10_3legs_1_rimage_4] Iwi-aor-- 512.00m /dev/sdd1(1) [non_synced_random_raid10_3legs_1_rimage_5] Iwi-aor-- 512.00m /dev/sdh1(1) [non_synced_random_raid10_3legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdc1(0) [non_synced_random_raid10_3legs_1_rmeta_1] ewi-aor-- 4.00m /dev/sde1(0) [non_synced_random_raid10_3legs_1_rmeta_2] ewi-aor-- 4.00m /dev/sdb1(0) [non_synced_random_raid10_3legs_1_rmeta_3] ewi-aor-- 4.00m /dev/sdf1(0) [non_synced_random_raid10_3legs_1_rmeta_4] ewi-aor-- 4.00m /dev/sdd1(0) [non_synced_random_raid10_3legs_1_rmeta_5] ewi-aor-- 4.00m /dev/sdh1(0) PV=/dev/sdf1 non_synced_random_raid10_3legs_1_rimage_3: 2 non_synced_random_raid10_3legs_1_rmeta_3: 2 Creating ext on top of mirror(s) on taft-01... mke2fs 1.41.12 (17-May-2010) Mounting mirrored ext filesystems on taft-01... Writing verification files (checkit) to mirror(s) on... ---- taft-01 ---- <start name="taft-01_non_synced_random_raid10_3legs_1" pid="1245" time="Wed Nov 7 10:43:43 2012" type="cmd" /> Verifying files (checkit) on mirror(s) on... ---- taft-01 ---- Current sync percent just before failure ( 26.86% ) Disabling device sdf on taft-01 Attempting I/O to cause mirror down conversion(s) on taft-01 10+0 records in 10+0 records out 41943040 bytes (42 MB) copied, 0.241206 s, 174 MB/s Verifying current sanity of lvm after the failure RAID Structure(s): /dev/sdf1: read failed after 0 of 512 at 145669554176: Input/output error [...] /dev/sdf1: read failed after 0 of 2048 at 0: Input/output error Couldn't find device with uuid EpElLL-p3oh-17c9-Irz7-Xdu8-f1yG-n5wmPl. LV Attr LSize Copy% Devices non_synced_random_raid10_3legs_1 rwi-aor-p 1.50g 71.88 non_synced_random_raid10_3legs_1_rimage_0(0),non_synced_random_raid10_3legs_1_rimage_1(0),non_synced_random_raid10_3legs_1_rimage_2(0),non_synced_random_raid10_3legs_1_rimage_3(0),non_synced_random_raid10_3legs_1_rimage_4(0),non_synced_random_raid10_3legs_1_rimage_5(0) [non_synced_random_raid10_3legs_1_rimage_0] Iwi-aor-- 512.00m /dev/sdc1(1) [non_synced_random_raid10_3legs_1_rimage_1] Iwi-aor-- 512.00m /dev/sde1(1) [non_synced_random_raid10_3legs_1_rimage_2] Iwi-aor-- 512.00m /dev/sdb1(1) [non_synced_random_raid10_3legs_1_rimage_3] Iwi-aor-p 512.00m unknown device(1) [non_synced_random_raid10_3legs_1_rimage_4] Iwi-aor-- 512.00m /dev/sdd1(1) [non_synced_random_raid10_3legs_1_rimage_5] Iwi-aor-- 512.00m /dev/sdh1(1) [non_synced_random_raid10_3legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdc1(0) [non_synced_random_raid10_3legs_1_rmeta_1] ewi-aor-- 4.00m /dev/sde1(0) [non_synced_random_raid10_3legs_1_rmeta_2] ewi-aor-- 4.00m /dev/sdb1(0) [non_synced_random_raid10_3legs_1_rmeta_3] ewi-aor-p 4.00m unknown device(0) [non_synced_random_raid10_3legs_1_rmeta_4] ewi-aor-- 4.00m /dev/sdd1(0) [non_synced_random_raid10_3legs_1_rmeta_5] ewi-aor-- 4.00m /dev/sdh1(0) Verifying FAILED device /dev/sdf1 is *NOT* in the volume(s) Verifying IMAGE device /dev/sdc1 *IS* in the volume(s) Verifying IMAGE device /dev/sde1 *IS* in the volume(s) Verifying IMAGE device /dev/sdb1 *IS* in the volume(s) Verifying IMAGE device /dev/sdd1 *IS* in the volume(s) Verifying IMAGE device /dev/sdh1 *IS* in the volume(s) verify the rimage/rmeta dm devices remain after the failures Checking EXISTENCE and STATE of non_synced_random_raid10_3legs_1_rimage_3 on: taft-01 Checking EXISTENCE and STATE of non_synced_random_raid10_3legs_1_rmeta_3 on: taft-01 Verify the raid image order is what's expected based on raid fault policy EXPECTED LEG ORDER: /dev/sdc1 /dev/sde1 /dev/sdb1 unknown /dev/sdd1 /dev/sdh1 ACTUAL LEG ORDER: /dev/sdc1 /dev/sde1 /dev/sdb1 unknown /dev/sdd1 /dev/sdh1 /dev/sdc1 ne /dev/sdc1 /dev/sde1 ne /dev/sde1 /dev/sdb1 ne /dev/sdb1 unknown ne unknown /dev/sdd1 ne /dev/sdd1 /dev/sdh1 ne /dev/sdh1 Fault policy is warn, manually repairing failed raid volumes taft-01: 'lvconvert --yes --repair black_bird/non_synced_random_raid10_3legs_1' /dev/sdf1: read failed after 0 of 512 at 145669554176: Input/output error /dev/sdf1: read failed after 0 of 512 at 145669664768: Input/output error /dev/sdf1: read failed after 0 of 512 at 0: Input/output error /dev/sdf1: read failed after 0 of 512 at 4096: Input/output error /dev/sdf1: read failed after 0 of 2048 at 0: Input/output error Couldn't find device with uuid EpElLL-p3oh-17c9-Irz7-Xdu8-f1yG-n5wmPl. device-mapper: reload ioctl on failed: Invalid argument Failed to suspend black_bird/non_synced_random_raid10_3legs_1 before committing changes Failed to replace faulty devices in black_bird/non_synced_random_raid10_3legs_1. Device '/dev/sdb1' has been left open. [...] Device '/dev/sdd1' has been left open. lvconvert repair failed for black_bird/non_synced_random_raid10_3legs_1 on taft-01 Seems to work just fine for me. This is with kernel-2.6.32-344.el6.x86_64 and the latest lvm2/device-mapper sources. I don't see RAID bug fixes (like 866678) in the latest lvm2 RPMs though. You'll have to look for an LVM package > 11/24/2012. ================================================================================ Iteration 16.1 started at Wed Nov 28 11:10:32 CST 2012 ================================================================================ Scenario kill_random_non_synced_raid10_3legs: Kill random leg of NON synced 3 leg raid10 volume(s) ********* RAID hash info for this scenario ********* * names: non_synced_random_raid10_3legs_1 non_synced_random_raid10_3legs_2 * sync: 0 * type: raid10 * -m |-i value: 3 * leg devices: /dev/sdc1 /dev/sde1 /dev/sdf1 /dev/sdd1 /dev/sdh1 /dev/sdb1 * failpv(s): /dev/sde1 * failnode(s): bp-01 * additional snap: /dev/sdc1 * raid fault policy: warn ****************************************************** Please verify fix with latest RPMs > 11/24/2012. Corey, any chance dmeventd is coredumping there - Bug 879646 ? Marian, Nope, I just hit this again today, and dmeventd is still running after the failure. 2.6.32-343.el6.x86_64 lvm2-2.02.98-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 lvm2-libs-2.02.98-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 lvm2-cluster-2.02.98-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 udev-147-2.43.el6 BUILT: Thu Oct 11 05:59:38 CDT 2012 device-mapper-1.02.77-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 device-mapper-libs-1.02.77-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 device-mapper-event-1.02.77-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 device-mapper-event-libs-1.02.77-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 cmirror-2.02.98-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 ================================================================================ Iteration 0.1 started at Thu Dec 6 13:12:02 CST 2012 ================================================================================ Scenario kill_random_non_synced_raid1_2legs: Kill random leg of NON synced 2 leg raid1 volume(s) ********* RAID hash info for this scenario ********* * names: non_synced_random_raid1_2legs_1 * sync: 0 * type: raid1 * -m |-i value: 2 * leg devices: /dev/sdg1 /dev/sdf1 /dev/sdc1 * failpv(s): /dev/sdf1 * failnode(s): taft-01 * raid fault policy: warn ****************************************************** Creating raids(s) on taft-01... taft-01: lvcreate --type raid1 -m 2 -n non_synced_random_raid1_2legs_1 -L 1.5G black_bird /dev/sdg1:0-1000 /dev/sdf1:0-1000 /dev/sdc1:0-1000 RAID Structure(s): LV Attr LSize Cpy%Sync Devices non_synced_random_raid1_2legs_1 rwi-a-r-- 1.50g 0.00 non_synced_random_raid1_2legs_1_rimage_0(0),non_synced_random_raid1_2legs_1_rimage_1(0),non_synced_random_raid1_2legs_1_rimage_2(0) [non_synced_random_raid1_2legs_1_rimage_0] Iwi-aor-- 1.50g /dev/sdg1(1) [non_synced_random_raid1_2legs_1_rimage_1] Iwi-aor-- 1.50g /dev/sdf1(1) [non_synced_random_raid1_2legs_1_rimage_2] Iwi-aor-- 1.50g /dev/sdc1(1) [non_synced_random_raid1_2legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdg1(0) [non_synced_random_raid1_2legs_1_rmeta_1] ewi-aor-- 4.00m /dev/sdf1(0) [non_synced_random_raid1_2legs_1_rmeta_2] ewi-aor-- 4.00m /dev/sdc1(0) PV=/dev/sdf1 non_synced_random_raid1_2legs_1_rimage_1: 2 non_synced_random_raid1_2legs_1_rmeta_1: 2 Creating ext on top of mirror(s) on taft-01... mke2fs 1.41.12 (17-May-2010) Mounting mirrored ext filesystems on taft-01... Writing verification files (checkit) to mirror(s) on... ---- taft-01 ---- Verifying files (checkit) on mirror(s) on... ---- taft-01 ---- Current sync percent just before failure ( 18.20% ) Disabling device sdf on taft-01 Attempting I/O to cause mirror down conversion(s) on taft-01 10+0 records in 10+0 records out 41943040 bytes (42 MB) copied, 0.237119 s, 177 MB/s Verifying current sanity of lvm after the failure RAID Structure(s): /dev/sdf1: read failed after 0 of 512 at 145669554176: Input/output error [...] Couldn't find device with uuid cVo5f0-eq2W-MCog-Sfj1-2eBG-9bnj-poomOM. LV Attr LSize Cpy%Sync Devices non_synced_random_raid1_2legs_1 rwi-aor-p 1.50g 38.02 non_synced_random_raid1_2legs_1_rimage_0(0),non_synced_random_raid1_2legs_1_rimage_1(0),non_synced_random_raid1_2legs_1_rimage_2(0) [non_synced_random_raid1_2legs_1_rimage_0] Iwi-aor-- 1.50g /dev/sdg1(1) [non_synced_random_raid1_2legs_1_rimage_1] Iwi-aor-p 1.50g unknown device(1) [non_synced_random_raid1_2legs_1_rimage_2] Iwi-aor-- 1.50g /dev/sdc1(1) [non_synced_random_raid1_2legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdg1(0) [non_synced_random_raid1_2legs_1_rmeta_1] ewi-aor-p 4.00m unknown device(0) [non_synced_random_raid1_2legs_1_rmeta_2] ewi-aor-- 4.00m /dev/sdc1(0) Verifying FAILED device /dev/sdf1 is *NOT* in the volume(s) Verifying IMAGE device /dev/sdg1 *IS* in the volume(s) Verifying IMAGE device /dev/sdc1 *IS* in the volume(s) verify the rimage/rmeta dm devices remain after the failures Checking EXISTENCE and STATE of non_synced_random_raid1_2legs_1_rimage_1 on: taft-01 Checking EXISTENCE and STATE of non_synced_random_raid1_2legs_1_rmeta_1 on: taft-01 Verify the raid image order is what's expected based on raid fault policy EXPECTED LEG ORDER: /dev/sdg1 unknown /dev/sdc1 ACTUAL LEG ORDER: /dev/sdg1 unknown /dev/sdc1 /dev/sdg1 ne /dev/sdg1 unknown ne unknown /dev/sdc1 ne /dev/sdc1 Fault policy is warn, manually repairing failed raid volumes taft-01: 'lvconvert --yes --repair black_bird/non_synced_random_raid1_2legs_1' /dev/sdf1: read failed after 0 of 512 at 145669554176: Input/output error [...] Couldn't find device with uuid cVo5f0-eq2W-MCog-Sfj1-2eBG-9bnj-poomOM. device-mapper: reload ioctl on failed: Invalid argument Failed to suspend black_bird/non_synced_random_raid1_2legs_1 before committing changes Failed to replace faulty devices in black_bird/non_synced_random_raid1_2legs_1. Device '/dev/sdb1' has been left open. Device '/dev/sdc1' has been left open. [...] Device '/dev/sdc1' has been left open. Device '/dev/sdd1' has been left open. lvconvert repair failed for black_bird/non_synced_random_raid1_2legs_1 on taft-01 [root@taft-01 ~]# ps -ef | grep dmeventd root 3122 1 0 Dec05 ? 00:00:40 /sbin/dmeventd Dec 6 13:13:12 taft-01 lvm[3122]: Use 'lvconvert --repair black_bird/non_synced_random_raid1_2legs_1' to replace failed device [root@taft-01 ~]# lvconvert --repair black_bird/non_synced_random_raid1_2legs_1 /dev/sdf1: read failed after 0 of 512 at 145669554176: Input/output error /dev/sdf1: read failed after 0 of 512 at 145669664768: Input/output error /dev/sdf1: read failed after 0 of 512 at 0: Input/output error /dev/sdf1: read failed after 0 of 512 at 4096: Input/output error /dev/sdf1: read failed after 0 of 2048 at 0: Input/output error Couldn't find device with uuid cVo5f0-eq2W-MCog-Sfj1-2eBG-9bnj-poomOM. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y device-mapper: create ioctl on black_bird-non_synced_random_raid1_2legs_1_rmeta_3 failed: Device or resource busy Failed to suspend black_bird/non_synced_random_raid1_2legs_1 before committing changes Failed to replace faulty devices in black_bird/non_synced_random_raid1_2legs_1. Device '/dev/sdb1' has been left open. Device '/dev/sdc1' has been left open. Device '/dev/sdg1' has been left open. [...] Device '/dev/sdc1' has been left open. Device '/dev/sdd1' has been left open. [root@taft-01 ~]# echo $? 5 (In reply to comment #7) > Seems to work just fine for me. This is with kernel-2.6.32-344.el6.x86_64 > and the latest lvm2/device-mapper sources. I don't see RAID bug fixes (like > 866678) in the latest lvm2 RPMs though. You'll have to look for an LVM > package > 11/24/2012. ... > Please verify fix with latest RPMs > 11/24/2012. (In reply to comment #10) > Nope, I just hit this again today, and dmeventd is still running after the > failure. > > 2.6.32-343.el6.x86_64 > lvm2-2.02.98-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 > lvm2-libs-2.02.98-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 > lvm2-cluster-2.02.98-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 > udev-147-2.43.el6 BUILT: Thu Oct 11 05:59:38 CDT 2012 > device-mapper-1.02.77-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 > device-mapper-libs-1.02.77-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 > device-mapper-event-1.02.77-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 > device-mapper-event-libs-1.02.77-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 > cmirror-2.02.98-3.el6 BUILT: Mon Nov 5 06:45:48 CST 2012 The latest build is lvm2-2.02.98-4.el6 from 5th Dec, this one includes a few of the mirror patches. Corey, can you try this one as Jon suggested and if it still fails, we need to put this back to ASSIGNED then. Corey, I believe, this is case where `lvconvert --repair` was called while raid was not synchronized yet. I noticed the RAID test cases for allocate policy failing due to not waiting for sync and suspect this is the same case - wait_for_sync is called only after `lvconvert --repair`. Jon, was the operation disabled recently? (BZ?) No difference for me with the latest rpms. Still fails in the exact same way. 2.6.32-343.el6.x86_64 lvm2-2.02.98-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 lvm2-libs-2.02.98-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 lvm2-cluster-2.02.98-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 udev-147-2.43.el6 BUILT: Thu Oct 11 05:59:38 CDT 2012 device-mapper-1.02.77-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 device-mapper-libs-1.02.77-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 device-mapper-event-1.02.77-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 device-mapper-event-libs-1.02.77-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 cmirror-2.02.98-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 ================================================================================ Iteration 0.1 started at Fri Dec 14 17:02:45 CST 2012 ================================================================================ Scenario kill_random_non_synced_raid1_2legs: Kill random leg of NON synced 2 leg raid1 volume(s) ********* RAID hash info for this scenario ********* * names: non_synced_random_raid1_2legs_1 * sync: 0 * type: raid1 * -m |-i value: 2 * leg devices: /dev/sdb1 /dev/sdd1 /dev/sdf1 * failpv(s): /dev/sdf1 * failnode(s): taft-01 * additional snap: /dev/sdb1 * raid fault policy: warn ****************************************************** Creating raids(s) on taft-01... taft-01: lvcreate --type raid1 -m 2 -n non_synced_random_raid1_2legs_1 -L 1.5G black_bird /dev/sdb1:0-1000 /dev/sdd1:0-1000 /dev/sdf1:0-1000 RAID Structure(s): LV Attr LSize Cpy%Sync Devices non_synced_random_raid1_2legs_1 rwi-a-r-- 1.50g 0.00 non_synced_random_raid1_2legs_1_rimage_0(0),non_synced_random_raid1_2legs_1_rimage_1(0),non_synced_random_raid1_2legs_1_rimage_2(0) [non_synced_random_raid1_2legs_1_rimage_0] Iwi-aor-- 1.50g /dev/sdb1(1) [non_synced_random_raid1_2legs_1_rimage_1] Iwi-aor-- 1.50g /dev/sdd1(1) [non_synced_random_raid1_2legs_1_rimage_2] Iwi-aor-- 1.50g /dev/sdf1(1) [non_synced_random_raid1_2legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdb1(0) [non_synced_random_raid1_2legs_1_rmeta_1] ewi-aor-- 4.00m /dev/sdd1(0) [non_synced_random_raid1_2legs_1_rmeta_2] ewi-aor-- 4.00m /dev/sdf1(0) PV=/dev/sdf1 non_synced_random_raid1_2legs_1_rimage_2: 2 non_synced_random_raid1_2legs_1_rmeta_2: 2 Creating ext on top of mirror(s) on taft-01... mke2fs 1.41.12 (17-May-2010) Mounting mirrored ext filesystems on taft-01... Creating a snapshot volume of each of the raids Writing verification files (checkit) to mirror(s) on... ---- taft-01 ---- Verifying files (checkit) on mirror(s) on... ---- taft-01 ---- Current sync percent just before failure ( 16.87% ) Disabling device sdf on taft-01 Attempting I/O to cause mirror down conversion(s) on taft-01 10+0 records in 10+0 records out 41943040 bytes (42 MB) copied, 0.240168 s, 175 MB/s Verifying current sanity of lvm after the failure RAID Structure(s): /dev/sdf1: read failed after 0 of 512 at 145669554176: Input/output error /dev/sdf1: read failed after 0 of 512 at 145669664768: Input/output error /dev/sdf1: read failed after 0 of 512 at 0: Input/output error /dev/sdf1: read failed after 0 of 512 at 4096: Input/output error /dev/sdf1: read failed after 0 of 2048 at 0: Input/output error Couldn't find device with uuid 9aVC5k-jZ2R-U6y6-Lq59-WcRr-FXG3-vDDY22. LV Attr LSize Cpy%Sync Devices bb_snap1 swi-a-s-p 252.00m /dev/sdb1(385) non_synced_random_raid1_2legs_1 owi-aor-p 1.50g 39.84 non_synced_random_raid1_2legs_1_rimage_0(0),non_synced_random_raid1_2legs_1_rimage_1(0),non_synced_random_raid1_2legs_1_rimage_2(0) [non_synced_random_raid1_2legs_1_rimage_0] Iwi-aor-- 1.50g /dev/sdb1(1) [non_synced_random_raid1_2legs_1_rimage_1] Iwi-aor-- 1.50g /dev/sdd1(1) [non_synced_random_raid1_2legs_1_rimage_2] Iwi-aor-p 1.50g unknown device(1) [non_synced_random_raid1_2legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdb1(0) [non_synced_random_raid1_2legs_1_rmeta_1] ewi-aor-- 4.00m /dev/sdd1(0) [non_synced_random_raid1_2legs_1_rmeta_2] ewi-aor-p 4.00m unknown device(0) Verifying FAILED device /dev/sdf1 is *NOT* in the volume(s) Verifying IMAGE device /dev/sdb1 *IS* in the volume(s) Verifying IMAGE device /dev/sdd1 *IS* in the volume(s) verify the rimage/rmeta dm devices remain after the failures Checking EXISTENCE and STATE of non_synced_random_raid1_2legs_1_rimage_2 on: taft-01 Checking EXISTENCE and STATE of non_synced_random_raid1_2legs_1_rmeta_2 on: taft-01 Verify the raid image order is what's expected based on raid fault policy EXPECTED LEG ORDER: /dev/sdb1 /dev/sdd1 unknown ACTUAL LEG ORDER: /dev/sdb1 /dev/sdd1 unknown /dev/sdb1 ne /dev/sdb1 /dev/sdd1 ne /dev/sdd1 unknown ne unknown Fault policy is warn, manually repairing failed raid volumes taft-01: 'lvconvert --yes --repair black_bird/non_synced_random_raid1_2legs_1' /dev/sdf1: read failed after 0 of 512 at 145669554176: Input/output error [...] Couldn't find device with uuid 9aVC5k-jZ2R-U6y6-Lq59-WcRr-FXG3-vDDY22. device-mapper: reload ioctl on failed: Invalid argument Failed to suspend black_bird/non_synced_random_raid1_2legs_1 before committing changes Failed to replace faulty devices in black_bird/non_synced_random_raid1_2legs_1. Device '/dev/sdb1' has been left open. [...] Device '/dev/sdd1' has been left open. lvconvert repair failed for black_bird/non_synced_random_raid1_2legs_1 on taft-01 [root@taft-01 ~]# lvconvert --repair black_bird/non_synced_random_raid1_2legs_1 /dev/sdf1: read failed after 0 of 512 at 145669554176: Input/output error /dev/sdf1: read failed after 0 of 512 at 145669664768: Input/output error /dev/sdf1: read failed after 0 of 512 at 0: Input/output error /dev/sdf1: read failed after 0 of 512 at 4096: Input/output error /dev/sdf1: read failed after 0 of 2048 at 0: Input/output error Couldn't find device with uuid 9aVC5k-jZ2R-U6y6-Lq59-WcRr-FXG3-vDDY22. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y device-mapper: create ioctl on black_bird-non_synced_random_raid1_2legs_1_rmeta_3 failed: Device or resource busy Failed to suspend black_bird/non_synced_random_raid1_2legs_1 before committing changes Failed to replace faulty devices in black_bird/non_synced_random_raid1_2legs_1. Device '/dev/sdb1' has been left open. [...] Device '/dev/sdc1' has been left open. Device '/dev/sdd1' has been left open. [root@taft-01 ~]# echo $? 5 Now, if I run this same scenario with a raid_fault_policy set to 'allocate' instead of 'warn', dmeventd ends up segfaulting as mentioned in comment #9. 2.6.32-343.el6.x86_64 lvm2-2.02.98-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 lvm2-libs-2.02.98-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 lvm2-cluster-2.02.98-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 udev-147-2.43.el6 BUILT: Thu Oct 11 05:59:38 CDT 2012 device-mapper-1.02.77-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 device-mapper-libs-1.02.77-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 device-mapper-event-1.02.77-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 device-mapper-event-libs-1.02.77-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 cmirror-2.02.98-5.el6 BUILT: Wed Dec 12 09:18:07 CST 2012 ================================================================================ Iteration 0.1 started at Fri Dec 14 16:49:04 CST 2012 ================================================================================ Scenario kill_random_non_synced_raid1_2legs: Kill random leg of NON synced 2 leg raid1 volume(s) ********* RAID hash info for this scenario ********* * names: non_synced_random_raid1_2legs_1 * sync: 0 * type: raid1 * -m |-i value: 2 * leg devices: /dev/sdg1 /dev/sdb1 /dev/sde1 * failpv(s): /dev/sde1 * failnode(s): taft-01 * raid fault policy: allocate ****************************************************** Creating raids(s) on taft-01... taft-01: lvcreate --type raid1 -m 2 -n non_synced_random_raid1_2legs_1 -L 1.5G black_bird /dev/sdg1:0-1000 /dev/sdb1:0-1000 /dev/sde1:0-1000 RAID Structure(s): LV Attr LSize Cpy%Sync Devices non_synced_random_raid1_2legs_1 rwi-a-r-- 1.50g 0.00 non_synced_random_raid1_2legs_1_rimage_0(0),non_synced_random_raid1_2legs_1_rimage_1(0),non_synced_random_raid1_2legs_1_rimage_2(0) [non_synced_random_raid1_2legs_1_rimage_0] Iwi-aor-- 1.50g /dev/sdg1(1) [non_synced_random_raid1_2legs_1_rimage_1] Iwi-aor-- 1.50g /dev/sdb1(1) [non_synced_random_raid1_2legs_1_rimage_2] Iwi-aor-- 1.50g /dev/sde1(1) [non_synced_random_raid1_2legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdg1(0) [non_synced_random_raid1_2legs_1_rmeta_1] ewi-aor-- 4.00m /dev/sdb1(0) [non_synced_random_raid1_2legs_1_rmeta_2] ewi-aor-- 4.00m /dev/sde1(0) PV=/dev/sde1 non_synced_random_raid1_2legs_1_rimage_2: 1.0 non_synced_random_raid1_2legs_1_rmeta_2: 1.0 Creating ext on top of mirror(s) on taft-01... mke2fs 1.41.12 (17-May-2010) Mounting mirrored ext filesystems on taft-01... Writing verification files (checkit) to mirror(s) on... ---- taft-01 ---- Verifying files (checkit) on mirror(s) on... ---- taft-01 ---- Current sync percent just before failure ( 12.88% ) Disabling device sde on taft-01 Attempting I/O to cause mirror down conversion(s) on taft-01 10+0 records in 10+0 records out 41943040 bytes (42 MB) copied, 0.233754 s, 179 MB/s Verifying current sanity of lvm after the failure RAID Structure(s): /dev/sde1: read failed after 0 of 512 at 145669554176: Input/output error [...] Couldn't find device with uuid OmsLQg-3ddW-Ombh-aZKw-YYHO-fQDJ-MbuWtA. LV Attr LSize Cpy%Sync Devices non_synced_random_raid1_2legs_1 rwi-aor-p 1.50g 44.27 non_synced_random_raid1_2legs_1_rimage_0(0),non_synced_random_raid1_2legs_1_rimage_1(0),non_synced_random_raid1_2legs_1_rimage_2(0) [non_synced_random_raid1_2legs_1_rimage_0] Iwi-aor-- 1.50g /dev/sdg1(1) [non_synced_random_raid1_2legs_1_rimage_1] Iwi-aor-- 1.50g /dev/sdb1(1) [non_synced_random_raid1_2legs_1_rimage_2] Iwi-aor-p 1.50g unknown device(1) [non_synced_random_raid1_2legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdg1(0) [non_synced_random_raid1_2legs_1_rmeta_1] ewi-aor-- 4.00m /dev/sdb1(0) [non_synced_random_raid1_2legs_1_rmeta_2] ewi-aor-p 4.00m unknown device(0) Verifying FAILED device /dev/sde1 is *NOT* in the volume(s) Verifying IMAGE device /dev/sdg1 *IS* in the volume(s) Verifying IMAGE device /dev/sdb1 *IS* in the volume(s) verify the rimage/rmeta dm devices remain after the failures Checking EXISTENCE and STATE of non_synced_random_raid1_2legs_1_rimage_2 on: taft-01there should not be an 'unknown' device associated with non_synced_random_raid1_2legs_1_rimage_2 on taft-01 FI_engine: recover() method failed Dec 14 16:49:27 taft-01 qarshd[3616]: Running cmdline: echo offline > /sys/block/sde/device/state & Dec 14 16:49:27 taft-01 kernel: md: super_written gets error=-5, uptodate=0 Dec 14 16:49:27 taft-01 kernel: md/raid1:mdX: Disk failure on dm-7, disabling device. Dec 14 16:49:27 taft-01 kernel: md/raid1:mdX: Operation continuing on 2 devices. Dec 14 16:49:27 taft-01 lvm[1229]: Device #2 of raid1 array, black_bird-non_synced_random_raid1_2legs_1, has failed. Dec 14 16:49:27 taft-01 kernel: md: mdX: resync done. Dec 14 16:49:27 taft-01 kernel: sd 3:0:0:4: rejecting I/O to offline device [...] Dec 14 16:49:27 taft-01 kernel: sd 3:0:0:4: rejecting I/O to offline device Dec 14 16:49:27 taft-01 kernel: md: checkpointing resync of mdX. Dec 14 16:49:27 taft-01 kernel: md: resync of RAID array mdX Dec 14 16:49:27 taft-01 kernel: md: minimum _guaranteed_ speed: 1000 KB/sec/disk. Dec 14 16:49:27 taft-01 kernel: md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for resync. Dec 14 16:49:27 taft-01 kernel: md: using 128k window, over a total of 1572864k. Dec 14 16:49:27 taft-01 kernel: device-mapper: dm-log-userspace: version 1.1.0 loaded [...] Dec 14 16:49:27 taft-01 kernel: sd 3:0:0:4: rejecting I/O to offline device Dec 14 16:49:28 taft-01 kernel: device-mapper: raid: Device 2 specified for rebuild: Clearing superblock Dec 14 16:49:28 taft-01 kernel: device-mapper: raid: 'rebuild' specified while array is not in-sync Dec 14 16:49:28 taft-01 kernel: device-mapper: table: 253:8: raid: Unable to assemble array: Invalid superblocks Dec 14 16:49:28 taft-01 kernel: device-mapper: ioctl: error adding target to table Dec 14 16:49:28 taft-01 lvm[1229]: device-mapper: reload ioctl on failed: Invalid argument Dec 14 16:49:28 taft-01 lvm[1229]: Failed to suspend black_bird/non_synced_random_raid1_2legs_1 before committing changes Dec 14 16:49:28 taft-01 lvm[1229]: Failed to replace faulty devices in black_bird/non_synced_random_raid1_2legs_1. Dec 14 16:49:28 taft-01 lvm[1229]: Device '/dev/sdf1' has been left open. [...] Dec 14 16:49:28 taft-01 lvm[1229]: Device '/dev/sdd1' has been left open. Dec 14 16:49:28 taft-01 lvm[1229]: Repair of RAID device black_bird-non_synced_random_raid1_2legs_1 failed. Dec 14 16:49:28 taft-01 lvm[1229]: Failed to process event for black_bird-non_synced_random_raid1_2legs_1 Dec 14 16:49:28 taft-01 lvm[1229]: Device #2 of raid1 array, black_bird-non_synced_random_raid1_2legs_1, has failed. Dec 14 16:49:28 taft-01 kernel: dmeventd[3629]: segfault at 8 ip 0000003ebe2073d7 sp 00007fe9d92f5448 error 6 in libdevmapper.so.1.02[3ebe200000+36000] Dec 14 16:49:28 taft-01 lvm[1229]: Child 3629 exited abnormally Dec 14 16:49:28 taft-01 kernel: dmeventd[3547]: segfault at 8 ip 0000003ebe2073d7 sp 00007fe9d92f7738 error 6 in libdevmapper.so.1.02[3ebe200000+36000] Dec 14 16:49:32 taft-01 xinetd[1833]: START: qarsh pid=3646 from=::ffff:10.15.80.47 Dec 14 16:49:32 taft-01 qarshd[3646]: Talking to peer 10.15.80.47:34740 (IPv4) Dec 14 16:49:32 taft-01 qarshd[3646]: Running cmdline: pvs -a Dec 14 16:49:32 taft-01 kernel: sd 3:0:0:4: rejecting I/O to offline device [root@taft-01 ~]# lvs -a -o +devices /dev/sde1: read failed after 0 of 512 at 145669554176: Input/output error Couldn't find device with uuid OmsLQg-3ddW-Ombh-aZKw-YYHO-fQDJ-MbuWtA. LV Attr LSize Cpy%Sync Devices non_synced_random_raid1_2legs_1 rwi-aor-p 1.50g 100.00 non_synced_random_raid1_2legs_1_rimage_0(0),non_synced_random_raid1_2legs_1_rimage_1(0),non_synced_random_raid1_2legs_1_rimage_2(0) [non_synced_random_raid1_2legs_1_rimage_0] iwi-aor-- 1.50g /dev/sdg1(1) [non_synced_random_raid1_2legs_1_rimage_1] iwi-aor-- 1.50g /dev/sdb1(1) [non_synced_random_raid1_2legs_1_rimage_2] iwi-aor-p 1.50g unknown device(1) [non_synced_random_raid1_2legs_1_rmeta_0] ewi-aor-- 4.00m /dev/sdg1(0) [non_synced_random_raid1_2legs_1_rmeta_1] ewi-aor-- 4.00m /dev/sdb1(0) [non_synced_random_raid1_2legs_1_rmeta_2] ewi-aor-p 4.00m unknown device(0) This bug seems to be all about cases where devices are replaced before the array has had a chance to sync. The kernel rejects this condition (unless forced) because if the array was not in-sync, it cannot gaurantee that the new device will be populated with correct data. The kernel rejects the new DM table and the command dies early and uncleanly. The 'not-in-sync' condition should be trapped. Additionally, this problem does not just affect failure cases, but any condition that would try to replace a device while the array is not in-sync. Here is another example: [root@bp-01 ~]# lvcreate --type raid1 -m 2 -L 100G -n lv vg Logical volume "lv" created [root@bp-01 ~]# devices vg LV Cpy%Sync Devices lv 0.00 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0) [lv_rimage_0] /dev/sda1(1) [lv_rimage_1] /dev/sdb1(1) [lv_rimage_2] /dev/sdc1(1) [lv_rmeta_0] /dev/sda1(0) [lv_rmeta_1] /dev/sdb1(0) [lv_rmeta_2] /dev/sdc1(0) [root@bp-01 ~]# lvconvert --replace /dev/sdc1 vg/lv device-mapper: reload ioctl on failed: Invalid argument Failed to suspend vg/lv before committing changes Device '/dev/sdh1' has been left open. Device '/dev/sdh1' has been left open. ... Lessons learned: - Replacing devices should not be allowed if the array is not in-sync - Checking the sync status forces us to limit replacement to arrays that are active -- Again, NEVER allow replacement of devs in non-active array -- Accidentally replacing a device in an array which is inactive and not in-sync can cause LV to be inactivatable. - For repair, we can allow replacement of devices in an activate but not in-sync array; but a WARNING must be given - some data may be unrecoverable. UNIT TESTS: - changes pass LVM tests suite DO NOT ALLOW REPLACEMENT WHEN ARRAY IS NOT ACTIVE: [root@bp-01 lvm2]# devices vg LV Cpy%Sync Devices lv 7.59 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0) [lv_rimage_0] /dev/sda1(1) [lv_rimage_1] /dev/sdb1(1) [lv_rimage_2] /dev/sdd1(1) [lv_rmeta_0] /dev/sda1(0) [lv_rmeta_1] /dev/sdb1(0) [lv_rmeta_2] /dev/sdd1(0) [root@bp-01 lvm2]# vgchange -an vg 0 logical volume(s) in volume group "vg" now active [root@bp-01 lvm2]# lvconvert --replace /dev/sdd1 vg/lv vg/lv must be active to perform this operation. DO NOT ALLOW REPLACEMENT OF DEVICES WHEN ARRAY IS NOT IN-SYNC: [root@bp-01 lvm2]# lvcreate --type raid1 -m 2 -L 100G -n lv vg Logical volume "lv" created [root@bp-01 lvm2]# devices vg LV Cpy%Sync Devices lv 0.34 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0) [lv_rimage_0] /dev/sda1(1) [lv_rimage_1] /dev/sdb1(1) [lv_rimage_2] /dev/sdc1(1) [lv_rmeta_0] /dev/sda1(0) [lv_rmeta_1] /dev/sdb1(0) [lv_rmeta_2] /dev/sdc1(0) [root@bp-01 lvm2]# lvconvert --replace /dev/sdc1 vg/lv Unable to replace devices in vg/lv while it is not in-sync. ALLOW REPAIR, BUT WARN THAT PORTIONS OF ARRAY MAY BE UNRECOVERABLE: [root@bp-01 lvm2]# off.sh sdc1 Turning off sdc [root@bp-01 lvm2]# lvconvert --repair vg/lv /dev/sdc1: read failed after 0 of 512 at 898381381632: Input/output error /dev/sdc1: read failed after 0 of 512 at 898381488128: Input/output error /dev/sdc1: read failed after 0 of 512 at 0: Input/output error /dev/sdc1: read failed after 0 of 512 at 4096: Input/output error /dev/sdc1: read failed after 0 of 2048 at 0: Input/output error Couldn't find device with uuid ZLrWFe-2ENN-S39Y-YI0b-oePB-WEc5-kLHnbL. WARNING: vg/lv is not in-sync. WARNING: Portions of the array may be unrecoverable. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Faulty devices in vg/lv successfully replaced. Non-manual (dmeventd) repair is the same. If set to "allocate" replacement devices, then the devices will be replace but the warnings will be printed: ----------------------------- /var/log/messages --------------------------- Dec 18 13:55:00 bp-01 lvm[10557]: WARNING: vg/lv is not in-sync. Dec 18 13:55:00 bp-01 lvm[10557]: WARNING: Portions of the array may be unrecove rable. Dec 18 13:55:01 bp-01 kernel: device-mapper: raid: Device 2 specified for rebuil d: Clearing superblock Dec 18 13:55:01 bp-01 kernel: md/raid1:mdX: active with 2 out of 3 mirrors Dec 18 13:55:01 bp-01 kernel: created bitmap (100 pages) for device mdX Dec 18 13:55:01 bp-01 kernel: md: md_do_sync() got signal ... exiting Dec 18 13:55:01 bp-01 kernel: md: checkpointing resync of mdX. Dec 18 13:55:01 bp-01 kernel: mdX: bitmap initialized from disk: read 7 pages, s et 201692 of 204800 bits Dec 18 13:55:01 bp-01 lvm[10557]: Monitoring RAID device vg-lv for events. Dec 18 13:55:01 bp-01 kernel: md: recovery of RAID array mdX Dec 18 13:55:01 bp-01 kernel: md: minimum _guaranteed_ speed: 1000 KB/sec/disk. Dec 18 13:55:01 bp-01 kernel: md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery. Dec 18 13:55:01 bp-01 kernel: md: using 128k window, over a total of 104857600k. Dec 18 13:55:02 bp-01 kernel: md/raid1:mdX: active with 2 out of 3 mirrors Dec 18 13:55:02 bp-01 kernel: created bitmap (100 pages) for device mdX Dec 18 13:55:03 bp-01 kernel: md: md_do_sync() got signal ... exiting Dec 18 13:55:03 bp-01 kernel: mdX: bitmap initialized from disk: read 7 pages, s et 201692 of 204800 bits Dec 18 13:55:03 bp-01 lvm[10557]: Monitoring RAID device vg-lv for events. Dec 18 13:55:03 bp-01 kernel: md: recovery of RAID array mdX Dec 18 13:55:03 bp-01 kernel: md: minimum _guaranteed_ speed: 1000 KB/sec/disk. Dec 18 13:55:03 bp-01 lvm[10557]: Faulty devices in vg/lv successfully replaced. commit 970dfbcd691addb7b69f4011c067eba3b35270b6 Author: Jonathan Brassow <jbrassow> Date: Tue Dec 18 14:40:42 2012 -0600 RAID: Limit replacement of devices when array is not in-sync. If a RAID array is not in-sync, replacing devices should not be allowed as a general rule. This is because the contents used to populate the incoming device may be undefined because the devices being read where not in-sync. The kernel enforces this rule unless overridden by not allowing the creation of an array that is not in-sync and includes a devices that needs to be rebuilt. Since we cannot know the sync state of an LV if it is inactive, we must also enforce the rule that an array must be active to replace devices. That leaves us with the following conditions: 1) never allow replacement or repair of devices if the LV is in-active 2) never allow replacement if the LV is not in-sync 3) allow repair if the LV is not in-sync, but warn that contents may not be recoverable. In the case where a user is performing the repair on the command line via 'lvconvert --repair', the warning is printed before the user is prompted if they would like to replace the device(s). If the repair is automated (i.e. via dmeventd and policy is "allocate"), then the device is replaced if possible and the warning is printed. Fix verified. I ran multiple iterations of the kill_random_non_synced_raid1_2legs with both the warn and allocate raid_fault_policy and saw no issues. 2.6.32-348.el6.x86_64 lvm2-2.02.98-6.el6 BUILT: Thu Dec 20 07:00:04 CST 2012 lvm2-libs-2.02.98-6.el6 BUILT: Thu Dec 20 07:00:04 CST 2012 lvm2-cluster-2.02.98-6.el6 BUILT: Thu Dec 20 07:00:04 CST 2012 udev-147-2.43.el6 BUILT: Thu Oct 11 05:59:38 CDT 2012 device-mapper-1.02.77-6.el6 BUILT: Thu Dec 20 07:00:04 CST 2012 device-mapper-libs-1.02.77-6.el6 BUILT: Thu Dec 20 07:00:04 CST 2012 device-mapper-event-1.02.77-6.el6 BUILT: Thu Dec 20 07:00:04 CST 2012 device-mapper-event-libs-1.02.77-6.el6 BUILT: Thu Dec 20 07:00:04 CST 2012 cmirror-2.02.98-6.el6 BUILT: Thu Dec 20 07:00:04 CST 2012 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2013-0501.html |