Todos os produtos
Search
Central de documentação

Object Storage Service:Configure um diretório temporário local para suportar gravações aleatórias

Última atualização: Aug 26, 2026

O ossfs 2.0.9 e versões posteriores suportam gravações aleatórias com base em um diretório temporário local. Ao configurar a opção de montagem --temp_dir, o ossfs 2.0 armazena os dados gravados em um disco local, conferindo ao ponto de montagem semântica completa de gravação aleatória POSIX, como gravações em offsets arbitrários, truncamento para qualquer tamanho e leitura durante a gravação. Este tópico descreve os princípios de funcionamento, métodos de configuração, restrições de uso e recomendações para gravações aleatórias.

Informações básicas

Após a criação de um objeto no OSS, não é possível modificá-lo parcialmente. Qualquer alteração de conteúdo exige a substituição integral do objeto. No modo padrão do ossfs 2.0, o caminho de gravação utiliza upload em streaming: os dados são enviados ao OSS em partes sequenciais à medida que são gravados, o que impõe as seguintes limitações:

  • Suporte apenas a gravações sequenciais. Chamadas pwrite em posições além do final do arquivo não são suportadas.

  • A operação truncate suporta apenas truncamento para 0. Truncar para qualquer outro tamanho diferente de zero retorna ENOTSUP.

  • Impossibilidade de ler um arquivo durante a gravação (antes do fechamento). Essa tentativa retorna EBUSY.

Cenários como execução de código por agentes de IA, edição de scripts no local e resultados intermediários de computação científica dependem frequentemente de semântica de gravação aleatória. O recurso de gravação aleatória do ossfs 2.0 armazena os dados gravados em um diretório temporário local e, combinado com gerenciamento de chunks e upload incremental, implementa gravações aleatórias sobre o armazenamento de objetos.

O modo de gravação aleatória do ossfs 2.0 apresenta as seguintes características:

  • Semântica completa de gravação aleatória POSIX: Suporta pwrite em offsets arbitrários, O_APPEND e truncate para qualquer tamanho (aumento ou redução).

  • Leitura durante a gravação: Permite ler um arquivo enquanto ele está sendo gravado. As partes modificadas são lidas da área de staging local, e as partes não modificadas são lidas diretamente do OSS.

  • Upload incremental: Em operações de flush ou close, apenas os blocos de dados modificados são enviados do disco local. As partes inalteradas são tratadas via cópia no lado do servidor no OSS, sem I/O local e sem consumo de largura de banda de upload.

  • Proteção de espaço em disco: Um orçamento global de disco integrado retorna ENOSPC para gravações quando o disco de staging estiver com pouco espaço. Reserve um limiar de espaço livre no momento da montagem para evitar que o disco do sistema seja preenchido totalmente.

Nota

O diretório temporário local atende exclusivamente ao caminho de gravação. Ele é independente do cache de dados local (--disk_data_cache_dir, que é um cache de leitura). É possível ativar ambos simultaneamente (usando diretórios diferentes) sem qualquer interferência entre eles.

Por padrão, o ossfs 1.0 usa o diretório /tmp como diretório temporário local. Para manter o caminho consistente com o padrão do ossfs 1.0, configure --temp_dir=/tmp.

Importante

Após ativar as gravações aleatórias, o desempenho de gravação fica limitado pelo desempenho de leitura/gravação do disco onde reside o diretório temporário local. Em cenários que envolvem gravações sequenciais em massa, como cópia de arquivos grandes, o desempenho é significativamente inferior ao do modo padrão. Ative este recurso apenas quando sua carga de trabalho realmente exigir semântica de gravação aleatória.

Princípios de funcionamento

Staging local e upload mesclado

Ao ativar as gravações aleatórias, o ossfs 2.0 cria um arquivo de staging no diretório temporário local para cada arquivo submetido a gravação aleatória, salvando as modificações mais recentes localmente com granularidade fixa de bloco de dados (chunk):

  • Os dados gravados vão diretamente para o arquivo de staging local. Se uma gravação sobrepor apenas parcialmente um bloco de dados que já existe na cloud, o ossfs busca primeiro esse bloco no OSS para garantir que os dados armazenados localmente estejam completos.

  • Em chamadas de fsync ou close, as modificações em staging local são automaticamente mescladas e enviadas junto com os dados na cloud: as partes modificadas são carregadas do disco local, e as partes não modificadas são tratadas via cópia no lado do servidor no OSS, sem retransmitir todo o arquivo ou consumir largura de banda de leitura do disco local.

  • Após um upload bem-sucedido, o espaço em disco de staging é liberado automaticamente.

Leitura durante a gravação

Também é possível ler um arquivo enquanto ele está sendo gravado: as partes modificadas são lidas da área de staging local, e as partes não modificadas são lidas diretamente do OSS.

Proteção de espaço em disco

No momento da montagem, o ossfs verifica se o espaço livre no disco onde reside o diretório temporário atende ao requisito reservado e rejeita a montagem caso contrário. Se o espaço em disco reservado for insuficiente, as gravações retornam ENOSPC em vez de causar falha no processo devido a disco cheio.

Métodos de configuração

Item de configuração

Obrigatório

Descrição

Valor padrão

temp_dir

Não

Caminho do diretório temporário local. Deve ser um caminho absoluto. Definir um valor não vazio ativa as gravações aleatórias. Deixe vazio para desativar este recurso.

Vazio

temp_dir_free_bytes

Não

Espaço mínimo livre em disco reservado no disco onde reside o diretório temporário, em bytes (suporta unidades como K, M e G). O ossfs2 não usará esse espaço reservado para dados de staging: quando o espaço livre em disco cair abaixo desse limiar, novas gravações retornarão ENOSPC, deixando uma margem de segurança para outras cargas de trabalho no mesmo disco. Se o espaço livre em disco já estiver abaixo desse valor no momento da montagem, a montagem falhará. Valor mínimo: 64 MiB.

1 GiB

random_write_max_file_size

Não

Tamanho lógico máximo de um único arquivo no modo de gravação aleatória, em bytes (suporta unidades como K, M e G). Gravações ou truncamentos que excederem esse limite retornam EFBIG. O limite físico superior é a capacidade de upload multipart do OSS (10.000 partes × 5 GiB, aproximadamente 48,8 TiB).

100 GiB

Restrições:

  • Se o diretório apontado por --temp_dir não existir, ele será criado automaticamente. Recomendamos usar uma partição ou disco independente para evitar disputa de espaço com o disco do sistema ou outras cargas de trabalho.

  • Os dados dos arquivos em gravação são armazenados no diretório temporário local. Se o disco não tiver capacidade suficiente, as gravações retornam ENOSPC. O espaço livre restante em disco menos o espaço reservado por temp_dir_free_bytes é denominado espaço em disco gravável. O ossfs2 usa apenas essa porção de espaço para armazenar dados em gravação. O espaço em disco gravável deve ser maior que o tamanho total de todos os arquivos sendo gravados simultaneamente (no pior caso, um arquivo inteiro pode ser gravado localmente).

  • Quando várias instâncias do ossfs2 são montadas na mesma máquina, elas podem compartilhar o mesmo diretório temporário, pois os nomes dos arquivos de staging não colidem. No entanto, múltiplas instâncias disputarão o espaço e o I/O do disco, portanto recomendamos o uso de diretórios independentes.

  • As opções --temp_dir e --enable_appendable_object são mutuamente exclusivas e não podem ser ativadas simultaneamente.

Exemplo de comando de montagem:

ossfs2 mount /mnt/oss/ \
  --oss_bucket <your-bucket> \
  --oss_endpoint <your-endpoint> \
  --oss_access_key_id <ak> \
  --oss_access_key_secret <sk> \
  --temp_dir /mnt/disk/ossfs2/temp \
  --temp_dir_free_bytes 1G

Requisitos de ambiente

Parâmetro

Requisito

Tipo de disco do diretório temporário

Recomenda-se disco efêmero elástico, NVMe local ou ESSD. O throughput de gravação do disco afeta diretamente a latência de gravação aleatória e a velocidade de upload.

Espaço disponível em disco

Não inferior a temp_dir_free_bytes. Além disso, o espaço em disco gravável (consulte as restrições acima) deve comportar os dados dos arquivos sendo gravados simultaneamente.

Efeitos do recurso

Comparação das capacidades de gravação antes e depois de ativar --temp_dir:

Operação

Modo padrão

Modo de gravação aleatória

Gravação sequencial por acréscimo

Suportada

Suportada

pwrite em offset arbitrário (além do final do arquivo)

Não suportada

Suportada

truncate para 0

Suportada

Suportada

truncate para qualquer tamanho (aumento ou redução)

Não suportada (ENOTSUP)

Suportada

Gravação O_APPEND em arquivo existente

Suportada

Suportada

Leitura de arquivo durante a gravação

Não suportada (EBUSY)

Suportada

Múltiplos handles gravando no mesmo arquivo simultaneamente

Não suportada

Suportada

Semântica de durabilidade:

  • Por padrão, o modo de gravação aleatória segue a semântica de fsync: fsync dispara um upload mesclado das modificações locais com os dados na cloud. Um retorno bem-sucedido significa que os dados foram persistidos no OSS. Os dados restantes também são enviados quando o arquivo é fechado.

  • Uma falha de upload é retornada à aplicação como erro, e a aplicação pode tentar novamente via fsync. Se o upload falhar definitivamente e o arquivo for fechado, os dados não persistidos são perdidos, e o conteúdo do arquivo reverte para a última versão enviada com sucesso no lado remoto.

  • Se o processo encerrar anormalmente, os dados em staging não enviados são perdidos, mas o objeto no OSS permanece no estado do último upload bem-sucedido. Nenhum objeto corrompido é gerado.

Recomendações de uso

Gravações aleatórias baseadas em um diretório temporário local são adequadas para cenários que exigem semântica de gravação semelhante à de um sistema de arquivos local em um ponto de montagem OSS.

Cenários adequados para ativar gravações aleatórias:

Cenário

Recomendação de uso

Execução de código por agentes de IA / ambientes sandbox (agentes e interpretadores de código realizam leituras e gravações arbitrárias e edições no local em arquivos)

Ative as gravações aleatórias. Recomendamos usar um disco independente e de alto desempenho para o diretório temporário, e reservar espaço em disco gravável com base no tamanho total dos arquivos sendo gravados simultaneamente.

Arquivos de resultados intermediários de computação científica ou aplicações de simulação

Ative as gravações aleatórias. Planeje o espaço em disco gravável com base no tamanho total dos arquivos sendo gravados simultaneamente.

Cenários onde não se recomenda ativar gravações aleatórias:

Cenário

Recomendação de uso

Cópia de arquivos grandes (gravações em massa no ponto de montagem usando cp, rsync e ferramentas similares)

Neste cenário, o desempenho de gravação é limitado pelo disco local e é muito inferior ao do modo padrão. Use o modo padrão de upload em streaming.

Gravações puramente sequenciais por acréscimo (gravação de logs em streaming)

O caminho padrão de upload em streaming tem menor sobrecarga, tornando desnecessário ativar gravações aleatórias. Se for necessária leitura durante a gravação, considere usar --enable_appendable_object.

Recomendações de orçamento de disco:

  • Mantenha o diretório temporário separado do disco do sistema para evitar que os dados de staging preencham o disco do sistema e afetem a estabilidade do host. Se a máquina possuir apenas um disco, recomendamos definir temp_dir_free_bytes com um valor maior (por exemplo, 10G) para reservar espaço livre suficiente para o sistema.

  • O espaço em disco gravável (consulte as restrições acima) deve ser maior que o tamanho total dos arquivos sendo gravados simultaneamente.

  • Para um único arquivo maior que 100 GiB, além de aumentar explicitamente --random_write_max_file_size (por exemplo, --random_write_max_file_size=500G), garanta que o espaço em disco gravável exceda o tamanho desse arquivo.