Todos os produtos
Search
Central de documentação

Object Storage Service:ossfs FAQ

Última atualização: Jul 03, 2026

Este tópico descreve problemas comuns e soluções ao usar o ossfs. Se encontrar um problema, verifique primeiro a versão do ossfs. Caso esteja executando uma versão mais antiga, como 1.80.x, recomendamos atualizar para a versão mais recente. Versões mais novas oferecem novos recursos e maior estabilidade.

Visão geral

Cada erro do ossfs inclui uma mensagem. Para solucionar problemas como falhas de conexão de socket ou códigos de status HTTP 4xx/5xx, colete essas mensagens para identificar a causa. Ative os logs de depuração antes de começar.

  • Um erro 403 indica que a solicitação foi negada devido a permissões insuficientes.

  • Um erro 400 indica uma operação incorreta por parte do usuário.

  • Erros 5xx geralmente estão relacionados a instabilidade de rede ou a um problema no lado do cliente.

Principais características do ossfs:

  • O ossfs monta um bucket remoto do OSS como um disco local. Se sua carga de trabalho for sensível ao desempenho de E/S de arquivos, recomendamos não utilizar o ossfs.

  • As operações no ossfs não garantem atomicidade. Uma operação local pode ter êxito mesmo que a operação remota correspondente no OSS falhe.

Se o ossfs não atender aos seus requisitos de negócios, utilize o ossutil.

Problemas de permissão

Dec 22 17:21:22 rerpdb1601 s3fs[21838]: [tid-21839][INF]      curl.cpp:PutHeadRequest(2278):   [tpath=/.fuse_hidden0000002700000006]
Dec 22 17:21:22 rerpdb1601 s3fs[21838]: [tid-21839][INF]      curl.cpp:prepare_url(4030):  URL is http://oss-cn-hangzhou-internal.aliyuncs.com/pgback/.fuse_hidden0000002700000006
Dec 22 17:21:22 rerpdb1601 s3fs[21838]: [tid-21839][INF]      curl.cpp:prepare_url(4062):  URL changed is http://pgback.oss-cn-hangzhou-internal.aliyuncs.com/.fuse_hidden0000002700000006
Dec 22 17:21:22 rerpdb1601 s3fs[21838]: [tid-21839][INF]      curl.cpp:PutHeadRequest(2330):   ...fuse_hidden0000002700000001
Dec 22 17:21:22 rerpdb1601 s3fs[21838]: [tid-21840][INF]      curl.cpp:RequestPerform(63...):  HTTP response code 403 was returned, returning EPERM
Dec 22 17:21:22 rerpdb1601 s3fs[21838]: [tid-21840][INF]      s3fs:s3fs_flush(2127):  [path=/tmp/7kAcr][fd=6]
Dec 22 17:21:22 rerpdb1601 s3fs[21838]: [tid-21840][INF]      fdcache.cpp:RowFlush(1302):  [path]=[path=/tmp/7kAcr][fd=6]
Dec 22 17:21:22 rerpdb1601 s3fs[21838]: [tid-21845][INF]      s3fs:s3fs_release(2185):  [path=/tmp/7kAcr][fd=6]

Erro 403 ao executar touch em um arquivo

Causa: Um erro 403 geralmente é causado por um problema de permissão. Você pode receber esse erro ao executar o comando touch nos seguintes casos:

  • O arquivo é um objeto do Archive Storage. Executar touch nesse tipo de objeto retorna um erro 403.

  • A AccessKey utilizada não tem permissão para realizar operações no bucket.

Solução:

  • Para objetos do Archive Storage: Restaure o objeto antes de acessá-lo ou ative o acesso em tempo real para objetos do Archive Storage no bucket.

  • Para erros de permissão: Conceda as permissões necessárias à conta proprietária da AccessKey.

Erro no comando rm: Operation not permitted

Causa: O comando rm chama a operação de API DeleteObject. Se você montou o bucket como um usuário RAM, garanta que esse usuário tenha permissão para excluir objetos.

Solução: Conceda as permissões necessárias ao usuário RAM. Para obter mais informações, consulte Visão geral das políticas do RAM e Exemplos comuns de políticas do RAM.

Erro: Invalid endpoint

Causa: Este erro indica que o endpoint foi especificado incorretamente. Isso pode ocorrer pelos seguintes motivos:

  • O bucket e o endpoint não correspondem.

  • O UID do proprietário do bucket não corresponde ao UID associado à AccessKey.

Solução: Verifique e corrija sua configuração.

Problemas de montagem

Suporte a nome de domínio personalizado

Não, o ossfs não oferece suporte a montagem com nomes de domínio personalizados.

Falha na montagem HTTPS no CentOS 7.x

Solução:

  1. Adicione a opção -ocurldbg ao montar o bucket e verifique se os logs contêm NSS error -8023 (SEC_ERROR_PKCS11_DEVICE_ERROR).

  2. Caso esse erro esteja presente nos logs, verifique a versão do NSS instalada localmente.

    Se a versão do NSS for 3,36, execute o comando yum update nss para atualizar o NSS e tente montar o bucket novamente.

Falha na montagem com função RAM do ECS

Solução:

  1. Execute o comando curl http://100.100.100.200/latest/meta-data/ram/security-credentials/[your-ecs-ram-role] para verificar a conectividade.

  2. Se o comando curl tiver êxito, adicione a opção -o disable_imdsv2 ao montar o bucket.

Erro de montagem: Transport endpoint is not connected

Causa: O diretório especificado não existe.

Solução: Crie o diretório e, em seguida, realize a operação de montagem.

Erro de montagem: Permission denied

Causa: Trata-se de um bug no FUSE. O FUSE exige que o usuário atual tenha permissões de leitura no diretório de trabalho atual, que não é o ponto de montagem.

Solução: Use o comando cd para alternar para um diretório no qual você tenha permissões de leitura e, então, execute o comando ossfs.

Erro de montagem: Mountpoint is not empty

Causa: Por padrão, o ossfs só pode ser montado em um diretório vazio. Este erro ocorre ao tentar montar o ossfs em um diretório não vazio.

Solução: Alterne para um diretório vazio e monte novamente. Se ainda precisar montar neste diretório, adicione o parâmetro -ononempty durante a montagem.

Erro de tempo limite de montagem

Causa: A solicitação de montagem do ossfs atingiu o tempo limite.

Solução: O ossfs utiliza a opção readwrite_timeout para definir o período de tempo limite, em segundos, para solicitações de leitura e gravação. O valor padrão é 60. Aumente esse valor com base na sua carga de trabalho.

Erro de montagem: Permissões incorretas no arquivo de credenciais

Causa: As permissões do arquivo /etc/passwd-ossfs estão incorretas.

Solução: O arquivo /etc/passwd-ossfs armazena credenciais, portanto, você deve restringir o acesso de outros usuários. Execute o comando chmod 640 /etc/passwd-ossfs para alterar as permissões do arquivo.

Erro no ls: Operation not permitted

Causa: Verifique se o seu bucket contém objetos cujos nomes possuem caracteres invisíveis. Os sistemas de arquivos impõem limites rigorosos aos nomes de arquivos e diretórios, o que pode causar esse erro.

Solução: Renomeie esses objetos usando outra ferramenta. Assim, o comando ls poderá listar o conteúdo do diretório corretamente.

Erro de montagem: FUSE device not found

Causa: Esse erro geralmente ocorre dentro de um contêiner docker porque o contêiner não tem permissão para acessar ou carregar o módulo de kernel do FUSE.

Solução: Ao executar em um contêiner docker, adicione o parâmetro --privileged=true para conceder privilégios elevados ao contêiner. Isso permite que processos dentro do contêiner realizem operações semelhantes às da máquina host, como usar o sistema de arquivos FUSE. Abaixo está um exemplo de comando para iniciar um contêiner usando a flag --privileged:

docker run --privileged=true -d your_image

Erro de montagem: libcrypto.so.1.1 not found

Causa: A versão do pacote de instalação não corresponde à versão do seu sistema operacional.

Solução: Para resolver esse problema, baixe o pacote de instalação compatível com o seu sistema operacional.

Faturamento

Evitar custos com varreduras de arquivos em segundo plano

Causa: Quando um programa verifica um diretório montado pelo ossfs, a varredura gera solicitações ao OSS. Uma alta taxa de solicitações pode gerar cobranças.

Solução: Utilize a ferramenta auditd para identificar quais processos estão verificando o diretório montado pelo OSS. Siga estas etapas:

  1. Instale e inicie o auditd.

    sudo apt-get install auditd
    sudo service auditd start
  2. Defina o ponto de montagem do OSS como o diretório monitorado. Por exemplo, se o ponto de montagem for /mnt/ossfs, execute o seguinte comando:

    auditctl -w /mnt/ossfs
  3. Verifique o log de auditoria para ver quais processos acessaram o diretório.

    ausearch -i | grep /mnt/ossfs
  4. Configure o processo para ignorar a varredura do ponto de montagem.

    Por exemplo, se o log de auditoria mostrar que o updatedb verificou o diretório montado, modifique o arquivo /etc/updatedb.conf para excluí-lo. Para isso, siga estas etapas:

    1. No parâmetro RUNEFS =, adicione fuse.ossfs.

    2. No parâmetro PRUNEPATHS =, adicione o ponto de montagem.

Problemas de disco e memória

Nov  8 02:58:28 izw9e9xgcy43hdoultcoez kernel: [30273]     0 30273  33017    827   61     0  AliYunDun
Nov  8 02:58:28 izw9e9xgcy43hdoultcoez kernel: [16398]     0 16398  1301998  317459   955     0  java
Nov  8 02:58:28 izw9e9xgcy43hdoultcoez kernel: Out of memory: Kill process 3017 (ossfs) score 58 or sacrifice child
Nov  8 02:58:28 izw9e9xgcy43hdoultcoez kernel: Killed process 3017 (ossfs) total-vm:3840372kB, anon-rss:4787892kB, file-rss:208kB, shmem-rss:0kB
Nov  8 02:58:45 izw9e9xgcy43hdoultcoez s3fs s3fs[2968]: s3fs.cpp:list_bucket(2382): list_bucket returns error(-1).
Nov  8 02:58:45 izw9e9xgcy43hdoultcoez s3fs s3fs[2968]: s3fs.cpp:list_bucket(2459): xmlReadMemory with error...
Nov  8 02:58:45 izw9e9xgcy43hdoultcoez s3fs s3fs[2968]: s3fs.cpp:list_bucket(2382): list_bucket returns error(-1).
Nov  8 02:58:47 izw9e9xgcy43hdoultcoez systemd: Started Session 4614 of user root.

O ossfs desconecta intermitentemente

Causa:

  1. Verifique nos logs de depuração se há erros de falta de memória (OOM). Para fazer isso, ative o registro de depuração adicionando o parâmetro -d -odbglevel=dbg. O ossfs grava logs no arquivo de log padrão do sistema.

    • Em sistemas CentOS, os logs são gravados em /var/log/message.

    • Em sistemas Ubuntu, os logs são gravados em /var/log/syslog.

  2. Os logs podem mostrar que o alto uso de memória durante as operações listbucket e listobject acionou o OOM killer do sistema, encerrando o processo do ossfs.

    Nota

    A operação listobject envia uma solicitação HTTP ao OSS para recuperar metadados de objetos. Se você tiver muitos objetos, o comando ls pode consumir uma grande quantidade de memória do sistema para buscar esses metadados.

Solução:

  • Aumente o tamanho do cache de estatísticas usando o parâmetro -omax_stat_cache_size=xxx. A primeira operação ls será mais lenta, mas as chamadas subsequentes serão mais rápidas porque os metadados ficam armazenados em cache localmente. O valor padrão é 1.000, o que consome cerca de 4 MB de memória. Ajuste esse valor com base na memória disponível da sua máquina.

  • Durante operações de leitura e gravação, o ossfs pode gravar grandes quantidades de dados temporários de cache no disco, semelhante ao Nginx. Isso pode esgotar o espaço disponível em disco. O ossfs limpa automaticamente os arquivos temporários ao sair.

  • Utilize o ossutil em vez do ossfs. O ossfs pode ser usado para cargas de trabalho fora de produção. Para serviços que exigem alta confiabilidade e estabilidade, recomendamos o uso do ossutil.

Por que o ossfs preenche o espaço em disco?

Causa: Para melhorar o desempenho, o ossfs usa, por padrão, o máximo de espaço em disco possível para armazenar dados temporários de upload e download. Isso pode esgotar o espaço disponível em disco.

Solução: Use a opção -oensure_diskfree para reservar espaço em disco. Por exemplo, para reservar 20 GB de espaço em disco, execute o seguinte comando:

ossfs examplebucket /tmp/ossfs -o url=http://oss-cn-hangzhou.aliyuncs.com -oensure_diskfree=20480

O comando df mostra 256 TB de tamanho de disco

O tamanho do disco exibido pelo comando df serve apenas para fins de exibição e não representa a capacidade real do bucket. Os valores de Size (espaço total em disco) e Avail (espaço disponível em disco) são fixos em 256 TB, e o valor de Used (espaço utilizado em disco) é fixo em 0 TB.

O OSS oferece capacidade ilimitada de bucket. O uso de armazenamento depende do seu consumo real. Para obter mais informações sobre como consultar o uso do bucket, consulte Consultar uso no nível do bucket.

[root@rjhdadmin xxx]# du -sh *
24G    caohh.zip
[root@rjhdadmin lixiao]# cp caohh.zip  /data/ossfs/xxx
cp: writing '/data/ossfs/xxx/caohh.zip': Input/output error
cp: closing '/data/ossfs/xxx.zip': Input/output error
[root@rjhdadmin xxx]#

Comando cp: Input/output error

Causa: Este erro indica um problema com a E/S do disco. Verifique se o disco apresenta uma alta carga de leitura/gravação quando o erro ocorre.

Solução: Adicione parâmetros relacionados a partes para controlar as operações de leitura e gravação de arquivos. Execute o comando ossfs -h para visualizar os parâmetros disponíveis relacionados a partes.

cp: writing '/data/tmp/I_201704/12/request.1491926430217.avro': Input/output error
cp: closing '/data/tmp/I_201704/12/request.1491926430217.avro': Input/output error

Erro de E/S ao copiar arquivos grandes

Causa: O uso do ossfs com rsync pode causar problemas. Neste caso, um usuário executou o comando cp em um arquivo de 141 GB, o que colocou o disco sob uma carga muito alta e causou esse erro.

Solução: Para baixar arquivos do OSS para uma instância ECS ou enviar arquivos de uma instância ECS para o OSS, utilize os recursos de upload e download multipart do ossutil.

[root@c653a8832c9eb4d8d9xxx xxx a-node5 ~]# ossfs xxx xxx xxx /xxx/daily -o multipart_size=31457280 -ourl=http://oss-ap-southeast-3-internal.aliyuncs.com
ossfs: There is no enough disk space for used as cache(or temporary) directory by s3fs.
[root@c653a8832c9eb4d8d9xxx a-node5 ~]#

Erro de upload: Espaço em disco insuficiente para cache

  • Causa

    O espaço disponível em disco é menor que multipart_size * parallel_count.

    O parâmetro multipart_size especifica o tamanho da parte. A unidade padrão é MB. O parâmetro parallel_count especifica o número de partes a serem enviadas em paralelo. O valor padrão é 5.

  • Análise

    Por padrão, o ossfs envia arquivos grandes usando upload multipart. Durante um upload, o ossfs grava arquivos temporários de cache no diretório /tmp. Antes de gravar dados, o ossfs verifica se o espaço livre no disco que contém o diretório /tmp é menor que multipart_size * parallel_count. Se o espaço livre for maior que multipart_size * parallel_count, a gravação prossegue normalmente. Se o espaço livre for menor que multipart_size * parallel_count, o ossfs retorna um erro indicando espaço insuficiente no disco local.

    Por exemplo, o espaço disponível em disco é de 300 GB e o arquivo a ser enviado tem 200 GB. Se multipart_size estiver definido como 100000 (100 GB) e parallel_count permanecer no valor padrão de 5, o ossfs calcula o espaço necessário como 100 GB × 5 = 500 GB, o que excede o espaço livre local.

  • Solução

    Se parallel_count permanecer no valor padrão de 5, defina multipart_size com um valor razoável.

    • Se o espaço disponível em disco for de 300 GB e o arquivo a ser enviado tiver 200 GB, defina multipart_size como 20.

    • Se o espaço disponível em disco for de 300 GB e o arquivo a ser enviado tiver 500 GB, defina multipart_size como 50.

Problemas de dependência

Erro de instalação: Biblioteca FUSE muito antiga

Causa: A versão da libfuse usada para compilar o ossfs é superior à versão da libfuse vinculada em tempo de execução. Isso frequentemente acontece se você instalar a libfuse manualmente. Em sistemas CentOS 5.x e CentOS 6.x, o pacote ossfs fornecido pela Alibaba Cloud inclui a libfuse-2.8.4. Se a libfuse-2.8.3 existir no ambiente de execução e o ossfs se vincular à versão mais antiga do FUSE, este aviso aparecerá.

Execute o comando ldd $(which ossfs) | grep fuse para confirmar a qual versão do FUSE o ossfs está vinculado em tempo de execução. Se o resultado for /lib64/libfuse.so.2, execute o comando ls -l /lib64/libfuse* para visualizar a versão do FUSE.

Solução: Configure o ossfs para se vincular à versão correta.

  1. Execute o comando rpm -ql ossfs | grep fuse para localizar o diretório da libfuse.

  2. Se o resultado for /usr/lib/libfuse.so.2, execute o ossfs usando o comando LD_LIBRARY_PATH=/usr/lib ossfs ….

Total size: 6.0 M
Installed size: 6.0 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Check Error:
  file /sbin/mount.fuse from install of ossfs-1.80.3-1.x86_64 conflicts with file from package fuse-2.8.3-5.el6.x86_64
  file /usr/bin/fusermount from install of ossfs-1.80.3-1.x86_64 conflicts with file from package fuse-2.8.3-5.el6.x86_64
  file /usr/bin/ulockmgr_server from install of ossfs-1.80.3-1.x86_64 conflicts with file from package fuse-2.8.3-5.el6.x86_64
Error Summary
-------------
[root@localhost 123]# rpm -qa |grep fuse
fuse-2.8.3-5.el6.x86_64
fuse-ntfs-3g-2013.1.13-2.el6.rf.x86_64
You have new mail in /var/spool/mail/root
[root@localhost 123]#

Erro de instalação de dependência do FUSE

Causa: A versão do FUSE não atende aos requisitos do ossfs.

Solução: Baixe e instale manualmente a versão mais recente do FUSE. Não utilize o yum. Para obter mais informações, consulte fuse.

Erro no ls: Input/output error

Causa: Este problema ocorre principalmente em ambientes CentOS. O log mostra o erro NSS error -8023. Ocorre um problema quando o ossfs usa a libcurl para comunicação HTTPS, possivelmente porque a biblioteca Network Security Services (NSS), da qual a libcurl depende, é muito antiga.

Solução: Execute o seguinte comando para atualizar a biblioteca NSS para a versão mais recente:

yum update nss

Erro de instalação: Conflitos com fuse-devel

Causa: Existe uma versão antiga do FUSE no sistema que entra em conflito com a versão de dependência no ossfs.

Solução: Desinstale o FUSE usando seu gerenciador de pacotes e reinstale o ossfs.

Outros problemas

O ossfs está lento com muitos arquivos ou alta concorrência

O ossfs 1,0 não é recomendado para cenários de alta concorrência. Se for indispensável usá-lo nesses cenários, considere as seguintes opções:

  • Opção 1: Monte o bucket usando o ossfs 2,0. Em comparação com o ossfs 1,0, o ossfs 2,0 oferece melhorias significativas de desempenho para operações sequenciais de leitura e gravação e para leituras simultâneas de arquivos pequenos. Para obter mais informações, consulte Melhorias de desempenho.

  • Opção 2: Utilize o Cloud Storage Gateway para montar um bucket do OSS visando melhor desempenho. O desempenho do ossfs 1,0 não é adequado para cargas de trabalho de alta concorrência ou uploads e downloads de arquivos grandes. Ele é mais indicado para operações rotineiras em arquivos pequenos.

Arquivos enviados têm Content-Type incorreto

Causa: Ao enviar arquivos, o ossfs define o Content-Type lendo o arquivo /etc/mime.types. Se esse arquivo não existir, o ossfs assume application/octet-stream como padrão.

Solução: Verifique se esse arquivo existe. Caso contrário, adicione-o.

  • Adicione automaticamente o arquivo mime.types usando um comando.

    • Para sistemas Ubuntu:

      Execute o comando sudo apt-get install mime-support.

    • Para sistemas CentOS:

      Execute o comando sudo yum install mailcap.

  • Adicione manualmente o arquivo mime.types.

    1. Crie o arquivo mime.types.

      vi /etc/mime.types
    2. Adicione os formatos necessários, um por linha. Use o formato application/javascript js.

Após adicionar o arquivo, você deve remontar o bucket do OSS.

Pasta identificada como arquivo

  • Cenário 1

    Causa: Se você criar um objeto de pasta (um objeto cujo nome termina com uma barra (/)) e definir seu Content-Type como text/plain, o ossfs identificará o objeto como um arquivo.

    Solução: Adicione o parâmetro -ocomplement_stat durante a montagem. Se um objeto de pasta tiver tamanho 0 ou 1, o ossfs o reconhecerá como uma pasta.

  • Cenário 2

    Causa: Execute o comando ossutil stat , onde <folder-object> é um nome de objeto que termina com uma barra (/). Por exemplo, ossutil stat oss://[bucket]/folder/. Após executar o comando, verifique os seguintes campos:

    1. Verifique o campo Content-Length, que indica o tamanho do objeto. Se o tamanho do objeto não for 0, ele será identificado como um arquivo.

      Solução: Se você não precisar mais do conteúdo deste objeto de pasta, execute o comando ossutil rm oss://[bucket]/folder/ para excluir o objeto. Esta operação não afeta os arquivos dentro da pasta. Alternativamente, use o ossutil para enviar um objeto de zero bytes com o mesmo nome para sobrescrever o objeto de pasta.

    2. Se o tamanho do objeto for 0, verifique o campo Content-Type. Se o valor deste campo não for application/x-directory, httpd/unix-directory, binary/octet-stream ou application/octet-stream, o objeto também será identificado como um arquivo.

      Solução: Execute o comando ossutil rm oss://[bucket]/folder/ para excluir o objeto. Esta operação não afeta os arquivos dentro da pasta.

Falha na operação mv

Causa: A operação mv no ossfs pode falhar se o arquivo de origem for um objeto do Archive Storage, Cold Archive ou Deep Cold Archive.

Solução: Antes de executar a operação mv, restaure o objeto. Para obter mais informações, consulte Restaurar objetos.

Suporte ao Windows

Não. No Windows, você pode montar um bucket usando o Rclone. Para obter mais informações, consulte Rclone.

Montagem em vários servidores Linux

Sim. É possível montar em vários servidores ECS Linux. Para obter mais informações, consulte Montar um bucket.

Informações de arquivo inconsistentes entre ferramentas

Causa: Por padrão, o ossfs armazena em cache os metadados dos arquivos, incluindo tamanho e permissões, para melhorar o desempenho. Isso evita o envio de uma solicitação ao OSS sempre que você executa o comando ls. Se você modificar arquivos usando outras ferramentas, como um SDK, o console do OSS ou o ossutil, o ossfs pode não atualizar seu cache a tempo, resultando em inconsistências de dados.

Solução: Adicione o parâmetro -omax_stat_cache_size=0 ao montar o bucket para desativar o cache de metadados. Cada vez que o comando ls for executado, uma solicitação será enviada ao OSS para buscar as informações mais recentes do arquivo.

Montagem lenta após ativar o versionamento

Causa: Por padrão, o ossfs lista arquivos usando a operação ListObjects (GetBucket). Se o versionamento estiver ativado e o bucket contiver uma ou mais versões históricas de objetos e um grande número de marcadores de exclusão expirados, listar os objetos atuais usando ListObjects (GetBucket) pode ser lento, o que degrada o desempenho da montagem.

Solução: Adicione a opção -olistobjectsV2 para alternar o ossfs para o uso da operação ListObjectsV2 (GetBucketV2), visando melhor desempenho de listagem.

Montagem via HTTPS

O ossfs suporta montagem via HTTPS. Abaixo está um exemplo de comando para a região China (Hangzhou):

ossfs examplebucket /tmp/ossfs -o url=https://oss-cn-hangzhou.aliyuncs.com

O comando ls está lento em diretórios grandes

Causa: Se um diretório contiver N arquivos, listar seu conteúdo requer pelo menos N solicitações HTTP ao OSS. Isso pode causar sérios problemas de desempenho quando N é grande.

Solução: Aumente o tamanho do cache de estatísticas usando o parâmetro -omax_stat_cache_size=xxx. A primeira operação ls será mais lenta, mas as chamadas subsequentes serão mais rápidas porque os metadados ficam armazenados em cache localmente. Antes do ossfs 1.91.1, o valor padrão deste parâmetro era 1.000. No ossfs 1.91.1 e posterior, o valor padrão é 100.000, o que consome dezenas de megabytes de memória. Ajuste esse valor com base na memória disponível da sua máquina.

Erro de desmontagem: Device or resource busy

Causa: Um processo está acessando arquivos sob o ponto de montagem /mnt/ossfs-bucket, o que impede que o diretório seja desmontado.

Solução:

  1. Execute o comando lsof /mnt/ossfs-bucket para encontrar o processo que está utilizando o diretório.

  2. Use o comando kill para encerrar o processo.

  3. Execute o comando fusermount -u /mnt/ossfs-bucket para desmontar o bucket.

Grande quantidade de logs 404 no ossfs 1,0

Informações básicas: Ao usar o ossfs 1,0, é comum ver registros 404 Not Found nos logs. Na maioria dos casos, isso não é um erro do sistema. É um comportamento esperado, pois o ossfs 1,0 simula um sistema de arquivos local.

Antes de operar em um arquivo, o sistema operacional verifica se o objeto alvo existe. Esse processo pode acionar muitas solicitações de sondagem ao OSS. Se um objeto não existir, o OSS retorna um código de status 404.

As etapas a seguir descrevem como o ossfs 1,0 verifica se um objeto existe:

  1. O ossfs envia uma solicitação HeadObject para verificar se o caminho especificado, como object, existe como um objeto real.

    Se o objeto existir, o sistema retorna os metadados do objeto. Se o objeto não existir, o sistema retorna um erro 404 e prossegue para a próxima etapa.

  2. Após receber o erro 404, o ossfs envia uma solicitação HeadObject para verificar se existe um objeto object/.

    Se o objeto existir, o sistema retorna os metadados do objeto. Se o objeto não existir, o sistema retorna um erro 404 e prossegue para a próxima etapa.

  3. Após receber o erro 404, o ossfs envia uma solicitação HeadObject para verificar se existe um objeto object_$folder$.

    Se o objeto existir, o sistema retorna os metadados do objeto. Se o objeto não existir, o sistema retorna um erro 404 e prossegue para a próxima etapa.

  4. Após receber o erro 404, o ossfs envia uma solicitação ListObjects para determinar se o caminho especificado é um diretório, listando objetos com o prefixo object/.

    Se o resultado estiver vazio, o caminho não existe. Se o resultado não estiver vazio, o diretório existe e o sistema lista o conteúdo do diretório.

Causa:

  • Se você usar comandos como stat para acessar um arquivo que não existe, o OSS retorna um erro 404, que é mapeado para o erro do sistema de arquivos local "No such file or directory".

  • Antes de criar arquivos ou diretórios em massa, o sistema operacional verifica se o alvo existe e envia uma solicitação de criação apenas se ele não existir. Os erros 404 gerados durante essa verificação são comportamentos esperados, não um problema do sistema.

Solução: Embora um erro 404 indique um comportamento esperado, solicitações frequentes de sondagem podem afetar o desempenho em cenários de alta concorrência ou operações em massa. Use as seguintes opções para otimizar o desempenho:

Importante

Após configurar essas opções, o ossfs 1,0 não consegue detectar alterações feitas em objetos no OSS até que o cache local expire.

  1. Aumente os valores de -o stat_cache_expire e -o max_stat_cache_size para estender a duração do cache de metadados e aumentar o número de entradas de cache.

    Se você consultar um arquivo ou diretório antes que seus metadados expirem, o ossfs evita o envio de solicitações repetidas ao OSS.

    • -o stat_cache_expire: especifica o tempo de expiração do cache de metadados. O valor padrão é 900s.

    • -o max_stat_cache_size: especifica o número de entradas no cache de metadados. O valor padrão é 100000.

  2. Se você usar uma versão do ossfs anterior à 1.91.6, ative o cache negativo usando a opção -o enable_noobj_cache. No ossfs 1.91.6 e posterior, o cache negativo é ativado por padrão.

    Quando um arquivo é consultado pela primeira vez e não existe, o ossfs armazena o resultado em cache na memória. Antes que o cache expire, consultas subsequentes usam o cache negativo local em vez de enviar solicitações ao OSS.

    Nota

    No ossfs 1,0, o cache negativo de arquivos faz parte do cache de metadados. Use o parâmetro -o stat_cache_expire para controlar o tempo de expiração e o parâmetro -o max_stat_cache_size para controlar o número máximo de entradas de cache.