Is it ever sane to use a Virtualized solution when performing I/O heavy workloads?
Sim, realmente são, na verdade, para a maioria das organizações agora virtual é o padrão e fazer as coisas em caixas físicas é a exceção. Temos mais de 100 mil VMs de todas as formas e muitas delas têm > 40k IOPS sem nenhum problema.
What are the best practices around this sort of stuff?
A principal coisa aqui não é se é virtualizado ou não - é entender bem o seu IO e combinar os recursos de armazenamento virtual. É simples assim, se você sabe o que precisa / quer e tem o orçamento para combinar com seus sistemas de armazenamento, a camada de virtualização realmente desempenha pouca ou nenhuma parte - a menos que você esteja REALMENTE empurrando coisas naturalmente (estou falando de dezenas / centenas de milhões de IOPs).
What causes these problems, are there well known system bottlenecks, or is just a question of excessive contention?
Falta de compreensão ou de tentar fazer muito com recursos de armazenamento insuficientes, isso normalmente causa problemas às pessoas.