O CIFS pode fazer atributos estendidos. Você pode configurá-lo com o Samba no Linux.
Estou configurando o serviço que armazena muitos arquivos carregados pelo nginx em / srv / storage dir no sistema host. Esses arquivos são processados por convidados KVM do trabalhador, que podem criar novos arquivos ou atribuir atributos estendidos aos existentes. Os arquivos nunca são sobrescritos, mas são eventualmente excluídos por um dos trabalhadores.
Portanto, o servidor host possui velocidade de gravação de arquivo de cerca de 177MB / s. A imagem KVM é um arquivo QCOW2 armazenado no sistema de arquivos do host e a imagem atinge ~ 155MB / s dentro da instância KVM graças a essa configuração de virtio:
<driver name='qemu' type='raw' cache='none' io='native'/>
No entanto, não consigo obter esses resultados para a pasta compartilhada. Eu consegui no máximo 40MB / s com virtfs também conhecido como virtio 9p . Parece que não há equivalente AIO para montagem:
mount -t 9p -o trans=virtio,version=9p2000.L uploads /srv/storage
Eu também estava pensando em:
Então, como compartilhar eficientemente a pasta do host com convidados do KVM com atributos estendidos em funcionamento).
O CIFS pode fazer atributos estendidos. Você pode configurá-lo com o Samba no Linux.
Se o seu problema for taxa de transferência, você poderá se beneficiar do aumento do tamanho máximo do pacote. O padrão é 8 KiB (msize = 8192).
O valor ideal pode levar um pouco de experimentação, e pode variar dependendo do seu uso e do sistema de arquivos subjacente, mas eu achei 256 KiB (msize = 262144) para funcionar bem para os meus propósitos. Isso elevou a taxa de transferência de ~ 150 MB / s para ~ 1,5 GB / s.
Veja também: link
Se você decidir compartilhar um volume LV, diretamente ou via iSCSI, não poderá compartilhá-lo como r / w sem um FS em cluster. Se você não tiver pouco espaço, poderá compartilhar dois volumes, um r / w no host e o outro r / w no guest, enquanto o outro pary terá apenas permissões de leitura no volume não-r / w. E mantenha os dois sincronizados com drbd ou rsync.
Muito feio, mas é isso que você gera quando não é possível usar o NFS
Por fim, mudei do contêiner de KVM para LXC + Docker, que suporta montagens de bind. Os diretórios do host selecionados são montados dentro do contêiner. Como não há rede ou tradução envolvida, o desempenho é o mesmo da máquina host. Além disso, vários contêineres podem gravar em um único "volume" de uma vez sem nenhum bloqueio exclusivo.