Index corruption with .tim file checksum mismatch

Yes, the most common scenario is a hardware problem. Sometimes it's the disk, sometimes a failing RAID controller or a flaky SAN. Occasionally it's a bug in a filesystem implementation, particularly if you're not using local disks. Since you're using virtualisation it could also be an issue in the host OS or the hypervisor. There's a lot of places in between Elasticsearch and the disk in which things can go wrong, and unfortunately from Elasticsearch's point of view it can't tell you any more: they bytes it wrote weren't the bytes it read back again.