<div dir="ltr"><div><div><div><div>Shortly, I imported a vdi on a 3 node cluster with --copies 2:1.<br></div>I remove on node, so there was no parity left.<br></div>I remove another node, so the vdi is missing half its data.<br></div>Notice that no guest is running, so there are no I/O operation on that vdi.<br></div>I joined back the cluster with the second node and the vdi is corrupted.<br><div><div><div><div><div><br>Sheepdog daemon version 0.8.0_331_gecc533e<br><br>dog node list<br>  Id   Host:Port         V-Nodes       Zone<br>   0   <a href="http://192.168.10.4:7000">192.168.10.4:7000</a>        127   67807424<br>   1   <a href="http://192.168.10.5:7000">192.168.10.5:7000</a>        129   84584640<br>   2   <a href="http://192.168.10.6:7000">192.168.10.6:7000</a>        129  101361856<br><br>dog cluster format -c 2:1<br>using backend plain store<br><br>dog cluster info<br>Cluster status: running, auto-recovery enabled<br>Cluster created at Fri Sep  5 11:34:20 2014<br>Epoch Time           Version<br>2014-09-05 11:34:20      1 [<a href="http://192.168.10.4:7000">192.168.10.4:7000</a>, <a href="http://192.168.10.5:7000">192.168.10.5:7000</a>, <a href="http://192.168.10.6:7000">192.168.10.6:7000</a>]<br><br>qemu-img convert -f qcow2 test.qcow2 sheepdog:test<br><br>dog vdi list<br>  Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag<br>  test         0  5.0 GB  864 MB  0.0 MB 2014-09-05 11:34   7c2b25    2:1  <br><br>dog vdi check test<br>finish check&repair test<br><br>dog vdi read test | md5sum<br>8886bddd205a7698a8194594c76e61b5  -<br><br>dog node kill 2<br><br>In sheep.log<br>Sep 05 11:38:29  ERROR [rw 6110] read_erasure_object(228) can not read 7c2b250000023d idx 0<br>Sep 05 11:38:29   INFO [main] recover_object_main(906) object recovery progress  66% <br>Sep 05 11:38:29  ERROR [rw 6109] read_erasure_object(228) can not read 7c2b2500000060 idx 0<br>Sep 05 11:38:29   INFO [main] recover_object_main(906) object recovery progress  68% <br>Sep 05 11:38:30  ERROR [rw 6111] read_erasure_object(228) can not read 7c2b2500000040 idx 1<br>Sep 05 11:38:30  ERROR [rw 6110] read_erasure_object(228) can not read 7c2b2500000268 idx 1<br>Sep 05 11:38:30   INFO [main] recover_object_main(906) object recovery progress  69% <br>Sep 05 11:38:30  ERROR [rw 6110] read_erasure_object(228) can not read 7c2b2500000086 idx 0<br>Sep 05 11:38:30  ERROR [rw 6109] read_erasure_object(228) can not read 7c2b250000002b idx 0<br>Sep 05 11:38:30   INFO [main] recover_object_main(906) object recovery progress  71% <br>Sep 05 11:38:30   INFO [main] recover_object_main(906) object recovery progress  72% <br>Sep 05 11:38:30  ERROR [rw 6110] read_erasure_object(228) can not read 7c2b2500000080 idx 0<br>Sep 05 11:38:30  ERROR [rw 6012] read_erasure_object(228) can not read 7c2b2500000245 idx 0<br>Sep 05 11:38:30   INFO [main] recover_object_main(906) object recovery progress  73% <br>Sep 05 11:38:30   INFO [main] recover_object_main(906) object recovery progress  75% <br>Sep 05 11:38:30  ERROR [rw 6109] read_erasure_object(228) can not read 7c2b2500000232 idx 0<br>Sep 05 11:38:30  ERROR [rw 6111] read_erasure_object(228) can not read 7c2b2500000020 idx 0<br>Sep 05 11:38:30  ERROR [rw 6012] read_erasure_object(228) can not read 7c2b2500000200 idx 0<br><br>dog vdi check test<br>ABORT: Not enough active zones for consistency-checking erasure coded VDI<br><br>dog vdi read test | md5sum<br>8886bddd205a7698a8194594c76e61b5  -<br><br>dog node kill 1<br><br>re-run sheep on node id 1<br><br>dog node list<br>  Id   Host:Port         V-Nodes       Zone<br>   0   <a href="http://192.168.10.4:7000">192.168.10.4:7000</a>        127   67807424<br>   1   <a href="http://192.168.10.5:7000">192.168.10.5:7000</a>        129   84584640<br><br>dog vdi list<br>  Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag<br>  test         0  5.0 GB  864 MB  0.0 MB 2014-09-05 11:34   7c2b25    2:1<br><br>dog vdi read test | md5sum<br>Failed to read object 7c2b2500000021 No object found<br>Failed to read VDI<br>1511e25cedc8ed4e540649744e8809ec  -<br><br>re-run sheep in node id 2<br>(I had to empty /var/lib/sheepdog/ otherwise it couldn't join the cluster).<br><br>dog node list<br>  Id   Host:Port         V-Nodes       Zone<br>   0   <a href="http://192.168.10.4:7000">192.168.10.4:7000</a>        127   67807424<br>   1   <a href="http://192.168.10.5:7000">192.168.10.5:7000</a>        129   84584640<br>   2   <a href="http://192.168.10.6:7000">192.168.10.6:7000</a>        129  101361856<br>   <br>dog vdi check test > /tmp/check.log 2>&1<br>less /tmp/chec.log<br><br>...<br>failed to rebuild object 7c2b250000004e. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b2500000052. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b2500000054. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b2500000055. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b2500000056. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b2500000058. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b250000005c. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b250000005e. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b250000005f. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b2500000066. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b250000006c. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b250000006e. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b2500000074. 2 copies get lost, more than 1<br>failed to rebuild object 7c2b2500000075. 2 copies get lost, more than 1<br>...<br><br></div><div>1) Corruption must not happen in such situation<br></div><div>2) I didn't test it, but sheepdog should stop guest's I/O as soon as nodes < x.<br></div><div>3) When a recovery occur with full replica, no errors are printed in sheep.log<br>Erasure code prints error for each missing "piece".<br>ERROR [rw 6110] read_erasure_object(228) can not read 7c2b2500000086 idx 0<br></div><div>for a normal recovery may be.<br><br></div><div><br></div></div></div></div></div></div>