O Apache tem um limite de arquivo de 2GB em uma unidade de rede CIFS?

4

Configuração:

  1. Um Windows e um servidor Ubuntu estão hospedados no VMware ESXi
  2. Eu tenho um arquivo de 6GB em um compartilhamento do Windows
  3. O compartilhamento do Windows é montado no Ubuntu com smbmount
  4. Um link simbólico que aponta para o arquivo de 6GB é criado em um diretório public_html , que pode ser lido pelo Apache

O problema:

  1. wget obtém um erro Connection closed at byte 2130706432. Retrying. depois de baixar 2130706432 bytes (exatamente 2032 MiB, e é o mesmo todas as vezes)
  2. O Apache retorna 206 Partial Content sem mostrar nenhum erro no log
  3. Mesmo erro, mesmo se eu baixar de localhost
  4. Erro semelhante quando o Firefox é usado em vez de wget
  5. Nenhum erro se eu md5sum ou cp o arquivo no Ubuntu, sugerindo que smbmount e o Windows Server estão OK com arquivos de 6GB.
  6. Nenhum erro se o Apache exibir um arquivo de 6 GB do disco local, sugerindo que o Apache não tem problemas para manipular arquivos de 6 GB.

Alguma idéia do porque o Apache / symlink / smbmount / Windows causaria um erro quando usado em conjunto? Como posso resolver o problema?

Software usado:

  • Atualização 1 do VMware ESXi 4
  • Windows Server 2008 R2
  • Servidor Ubuntu 8.04, vmxnet3
  • Apache 2.2.8
  • mount.cifs 1.10-3.0.28a (conforme retornado por smbmount -V )

Editar: Se eu usar o CentOS 4.8 x64 em vez do Ubuntu 8.04, o Apache irá desconectar no byte 2147483647 (2GiB - 1byte) em vez de 2130706432 (2GiB - 16MiB).

    
por netvope 24.03.2010 / 00:14

4 respostas

1

Eu tive um problema semelhante em que trabalhei, confira este relatório de bug . O problema parece ser com EnableSendfile, então coloque isso em sua configuração do Apache para o host virtual ou configuração global:

EnableSendfile Off

    
por 05.04.2010 / 23:55
0

Tenho certeza que na verdade é um problema com o compartilhamento do Windows, você precisa definir o tamanho do bloco como 4k e permitir que ele o compartilhe de uma maneira que possa ser interpretada corretamente por um cliente. Infelizmente, isso pode exigir uma reformatação de volume, desculpe.

    
por 27.03.2010 / 00:13
0

Por que você não usa um método diferente de distribuição de um arquivo? 6GiB é muito, e sem uma verificação MD5sum, pode ser um erro pronunciado. A entrega via sistema distribuído é possível neste caso?

    
por 31.03.2010 / 03:53
0

Você mencionou o smbmount como o compartilhamento cifs é montado. smbmount e mount.cifs são dois animais diferentes. O smbmount tem um limite de 2GB nos arquivos para um. Mas o smbmount é uma maneira antiga de fazer isso e foi substituído pelo mount.cifs.

    
por 31.03.2010 / 03:55