O ossfs 2.0 é um cliente FUSE que monta buckets do Alibaba Cloud OSS como sistemas de arquivos locais, permitindo que os containers acessem dados do OSS por meio de operações POSIX. Ele melhora a E/S de arquivos pequenos em cenários de alta concorrência e operações sequenciais em comparação com o ossfs 1.0. É ideal para cargas de trabalho como treinamento de IA, processamento de big data e direção autônoma.
Melhorias de desempenho
O ossfs 2.0 oferece melhorias significativas de desempenho em relação ao ossfs 1.0 em operações de leitura e gravação sequenciais, além de leituras de alta concorrência para objetos pequenos. Para obter mais informações sobre o desempenho do ossfs 2.0, consulte Testes de desempenho.
Desempenho de gravação sequencial: Em cenários de gravação sequencial de objetos grandes com thread única, o ossfs 2.0 fornece uma largura de banda quase 18 vezes maior que a do ossfs 1.0.
Desempenho de leitura sequencial: Em cenários de leitura sequencial de objetos grandes com thread única ou múltiplas threads (4 threads), o ossfs 2.0 oferece uma largura de banda mais de 3 vezes superior à do ossfs 1.0.
Desempenho de leitura simultânea de objetos pequenos: Em cenários de leitura de objetos pequenos com alta concorrência (128 threads), o ossfs 2.0 proporciona uma largura de banda mais de 20 vezes maior que a do ossfs 1.0.
Casos de uso
O ossfs 2.0 é adequado para cenários que exigem acesso a armazenamento de alto desempenho, como treinamento de IA, inferência, processamento de big data, direção autônoma e outras cargas de trabalho com uso intensivo de computação. Essas cargas envolvem principalmente leituras sequenciais e aleatórias, gravações sequenciais (apenas anexação) e não requerem semântica POSIX completa.
Limitações
Requisitos de permissão: O AccessKey utilizado deve ter permissões totais para o bucket ou prefixo de destino. Permissões insuficientes podem causar falha na operação de montagem ou fazer com que outras operações apresentem comportamentos inesperados.
Limitações de classe de armazenamento: Não é recomendável a montagem de buckets nas classes Archive Storage, Cold Archive Storage ou Deep Cold Archive Storage.
Limitações de nomes de objetos e diretórios: Os nomes de objetos e diretórios são limitados a 255 caracteres devido a uma restrição do Linux. Objetos ou diretórios no OSS com nomes que excedam esse limite não ficam visíveis no ponto de montagem.
Limitações de leitura de objetos: O ossfs carrega objetos recém-gravados para o OSS somente após o fechamento dos identificadores de arquivo correspondentes. A leitura de um objeto antes do fechamento do seu identificador pode causar um erro.
Limitações de gravação de objetos: No modo padrão, gravações aleatórias e simultâneas no mesmo objeto não são suportadas. O tamanho padrão da parte é de 8.388.608 bytes (8 MiB), o que limita o tamanho máximo de um objeto gravável a 83.886.080.000 bytes (78,125 GiB). Configure o tamanho da parte usando a opção de montagem upload_buffer_size. A partir da v2.0.9, use a opção de montagem temp_dir para ativar o modo de gravação aleatória com base em um diretório temporário local. Esse modo suporta gravações em deslocamentos arbitrários, truncamento para qualquer tamanho e identificadores de gravação simultâneos no mesmo objeto.
-
Operações de renomeação de objetos (não atômicas)
Objetos: A operação primeiro copia o objeto de origem para o destino e, em seguida, exclui o objeto de origem.
Diretórios: A operação copia todos os objetos no diretório de origem para o destino e, em seguida, exclui em massa os objetos de origem. Por padrão, a operação de renomeação é limitada a 2 milhões de objetos descendentes. Altere esse limite usando a opção de montagem rename_dir_limit.
Consistência de gravação simultânea: O ossfs 2.0 não garante a consistência dos dados quando vários clientes montam o mesmo bucket e gravam no mesmo objeto simultaneamente.
Compatibilidade com a API POSIX: Parcialmente compatível. Para obter detalhes, consulte Suporte à API POSIX.
Recursos
Destaques dos recursos
Oferece compatibilidade básica com POSIX e foca na maximização do desempenho de leitura e gravação no lado do servidor OSS.
Proporciona desempenho eficiente de leitura e gravação sequenciais para objetos grandes por meio da otimização de ponta a ponta do caminho de leitura e gravação.
Permite o carregamento simultâneo e eficiente de objetos pequenos através do gerenciamento otimizado de metadados.
Suporte à API POSIX
A tabela a seguir compara o suporte à API POSIX no ossfs 1.0 e no ossfs 2.0.
|
Categoria de recurso |
Operação |
ossfs 1.0 |
ossfs 2.0 |
|
Operações básicas de objetos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Leituras e gravações de objetos |
|
|
|
|
|
Suporta gravações aleatórias (é necessário configurar um cache de disco) |
Suporta apenas gravações sequenciais por padrão (não requer cache de disco). A partir da v2.0.9, gravações aleatórias também são suportadas (requer cache de disco). |
|
|
|
(pode ser truncado para qualquer tamanho) |
Por padrão, suporta apenas o truncamento de um objeto para comprimento zero. A partir da v2.0.9, o truncamento para qualquer tamanho é suportado (requer cache de disco). |
|
|
Operações de metadados de objetos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Operações de diretório |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Permissões e atributos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Recursos estendidos |
|
|
|
|
|
|
Não suportado por padrão. A partir da v2.0.6, ative-o por meio das opções de montagem. Suporta links simbólicos que apontam para caminhos dentro do ponto de montagem. |
|
|
|
|
|
Como funciona
O cliente ossfs 2.0 é executado como um container em um pod no namespace ack-csi-fuse.
Referências
Usar um volume persistente estático do ossfs 2.0 para montar um bucket do OSS com um PV e PVC.
Usar um volume persistente dinâmico do ossfs 2.0 para montar um bucket do OSS.