Como posso ler diretamente os dados de um arquivo no Linux sem usar o cache do sistema de arquivos?

1

Eu tenho armazenamento compartilhado que é montado (somente leitura) no SERVER1 e montado (leitura-gravação) no SERVER2.

O SERVER2 está gravando dados em um arquivo. SERVER1 está lendo dados desse arquivo.

O arquivo poling é de < 100ms, o que é rápido, mas vamos apenas dizer que é necessário.

O SERVER1 está acessando o cache do sistema de arquivos e não mostra novos dados no arquivo. Eu posso drop_caches que, em seguida, retorna os dados mais recentes nesse arquivo, mas esse processo descarta todos os caches de arquivo em SERVER1, que não é o que eu quero fazer, e demora muito para processar.

Eu tentei usar o comando cat, assim como dd if = / path / to / file -iflag = direct, mas isso também não funciona. Isso retorna um erro. A bandeira parece não ser suportada por arquivos. Alguma idéia de como ler um arquivo diretamente de um disco ou como desabilitar o cache do sistema de arquivos para um arquivo / diretório / ponto de montagem?

Eu também consideraria a desativação do cache de arquivos em todo o sistema, mas essa não é minha primeira preferência, isso é apenas para um arquivo. O Google também não retorna uma maneira de fazer isso, já que a maioria das postagens no fórum argumentam contra essa ação.

Obrigado!

    
por user1955162 29.06.2015 / 13:31

1 resposta

2

Não faça isso. Eu repito: não faça isso!

Você terá dores de cabeça do cluster fora disso. Se os metadados forem alterados nesse meio tempo, isso poderá causar falhas e / ou dados inválidos retornados. Esses sistemas de arquivos não são projetados para funcionar assim. Não os use dessa maneira. Isso é especialmente ruim para o ZFS. Se você realmente precisar, use algo muito básico, sem diários e recursos avançados (como ext2 ou talvez vfat).

Use o sistema de arquivos em cluster (gfs, ocfs, cxfs) ou algum sistema de arquivos em rede (glusterfs, cifs, nfs).

E apenas pelo caminho. O DirectIO é não implementado no ZFS No Linux. Ele funcionará em sistemas de arquivos base (ext {2,3,4}, xfs, etc.)

    
por 29.06.2015 / 13:57