Troublesome hard-drive in LVM — is it broken?
Solution 1:
Try turning off NCQ for the problematic drive (reference: this page and this page)
echo 1 > /sys/block/sdX/device/queue_depth
You might also try changing out the SATA cable to the drive, because a weak/borderline electrical connection might also cause those kinds of errors.
As for your memory problem when running xfs_check; you just need more RAM and/or swap space. That's a pretty big filesystem so I'm not surprised that xfs_check needs a lot of memory.