Eu diria que você pode fornecer N VMs e acessar o mesmo dispositivo de bloco, mas apenas para leitura. Você percebe essa palavra palpite.
As coisas vão cair rapidamente se qualquer uma das VMs começar a modificar as coisas, já que qualquer cache de disco das outras VMs agora será inválido.
A dificuldade em ter informações de bloqueio de arquivos no disco é que ninguém fez isso ainda. Sem pensar profundamente, a ideia de uma transação atômica de leitura / modificação / gravação em um disco é provavelmente o problema básico.
Eu acho que você poderia pegar um sistema de arquivos típico que já é multiencadeado, descobrir onde o (s) bloqueio (s) é (em) usado (s) e alterá-lo para algum tipo de operação de leitura / modificação / gravação no disco.
O outro problema com leitura / modificação / gravação no disco é que, se você bloquear muito, seu desempenho será muito ruim, já que todas as alterações no disco exigem:
- bloqueia o disco (procura, lê / modifica / escreve)
- leia o setor que você deseja alterar (procurar / ler)
- faça a alteração e escreva (escreva)
- desbloqueia o disco (procura, lê / modifica / escreve)
Provavelmente não ajuda, mas eu olharia para algo como o BSD Jails como um sistema de VM mais leve se você realmente não quer fazer networking.