Montei uma pasta do Windows (NAS) em um servidor Turnkey-Linux usando cifs-utils
. Ao visualizar algumas das imagens no lado do Linux, elas mostrarão visualmente distorção/corrupção, mas ficarão bem no lado do Windows.
Exemplo 1 (Esquerda: Linux, Direita: Windows)
Exemplo 2 (Esquerda: Linux, Direita: Windows)
Em alguns casos com o Firefox (69.0), a imagem não aparecerá apenas exibindo uma borda em branco com a localização do arquivo no canto superior esquerdo. No Chrome (76.0.3809.132) ele exibirá uma imagem extremamente corrompida .
Algumas soluções de problemas que já tentei:
- Remontou a pasta no mesmo local e em outro local. As mesmas imagens são sempre distorcidas/corrompidas .
- Use um Windows NAS (backup) diferente.
Alguém já experimentou isso antes e sabe o que causa isso?
Há um bug conhecido com a versão do Apache2 (2.4.25 Debian) que estou usando que serve os arquivos CIFS de uma maneira estranha, causando a corrupção do arquivo. Para aqueles que usam o Apache2, provavelmente estarão lidando com o
httpd.conf
arquivo em suasites-enabled
pasta. Na minha distro Turnkey Django, é um arquivo chamadodjango.conf
dentro dasites-enabled
pasta, mas é essencialmente o mesmo quehttpd.conf
.Por padrão, o Apache2 usa MMAP, mas isso é interrompido ao usar o CIFS. Ao obter o md5sum de um arquivo no sistema de arquivos, você obterá constantemente um hash diferente. Isso é o que causa o problema.
Para ver isso por si mesmo, simplesmente obtenha o md5sum usando:
wget http://localhost/file -O -|md5sum
Execute esta linha várias vezes e você verá que o md5sum é diferente a cada vez.Para desativar o MMAP no arquivo de configuração do Apache2:
cd
para../apache2/sites-enabled/
nano django.conf
ouhttpd.conf
ServerName localhost
adicionarEnableMMAP Off
.conf
arquivo, adicione uma<directory>
tag apontando para sua pasta CIFS. O meu é mais ou menos assim:<Directory "/etc/www/djsys/static/bom/images/part-img/"> </Directory>
.conf
arquivo e reinicie o Apache2service apache2 restart
.O MMAP agora deve estar desativado e seus arquivos no CIFS não devem mais estar corrompidos.
Como encontrei esta pergunta ao diagnosticar um problema ligeiramente diferente * (embora possivelmente relacionado?) Com arquivos corrompidos em um compartilhamento CIFS do Windows, adicionarei o que encontrei.
No meu caso, eu estava escrevendo arquivos grandes de uma VM Ubuntu 20.04 (usando
cifs-utils
) para um compartilhamento de rede Windows (localizado na mesma máquina, compartilhado pelo sistema operacional host), e muitos estavam falhando nas verificações md5sum no lado do Windows, embora o tamanho do arquivo coincide.O que parece ter funcionado para mim é definir
cache=none
na minha configuração CIFS. Após a alteração, a linha relevante se parece com isto:Caso alguém queira mais informações, encontrei esta solução (e uma descrição detalhada do problema) aqui: https://forums.sonarr.tv/t/strange-failures-on-cifs-mounts-solution/16741
Minhas transferências de arquivos pareceram um pouco mais lentas após a alteração (especialmente), mas até agora nenhuma delas falhou nas verificações automatizadas do md5sum. Ainda não tentei alterar
rsize
ewsize
conforme descrito no post, mas isso pode resolver as velocidades de transferência.*: A diferença com o meu caso é que a pergunta descreve um problema de leitura de um compartilhamento do Windows enquanto meu problema estava gravando no compartilhamento montado. É possível que eu também tenha corrompido alguns arquivos durante as operações de leitura, mas não sei porque não estava realizando verificações md5 durante a maioria das recuperações e o conteúdo da mídia parecia ser exibido sem problemas.
Meus arquivos corrompidos ocorreram com o PHP 7.4.16 gravando em um diretório que foi montado automaticamente pelo systemd (usando cifs-utils 6.9-1ubuntu0.1).