O cache de metadados do ossfs é adequado para cenários em que um servidor apresenta alta taxa de IOPS de leitura e gravação em dados do Object Storage Service (OSS). A ativação do cache de metadados do ossfs melhora a eficiência geral das operações de objetos e o tempo de resposta das solicitações. Este tópico descreve como configure e use o cache de metadados do ossfs de forma eficaz.
Ao usar o cache de metadados do ossfs, preste atenção aos problemas de consistência e tempestividade dos dados. Portanto, recomendamos que não ative o cache de metadados do ossfs em cenários que exigem dados sempre atualizados.
Informações básicas
Metadados são informações que descrevem dados, como tamanho do objeto, hora de criação, hora de modificação e IDs de usuário e de grupo. Os IDs de usuário e de grupo são atributos não suportados pelo OSS, mas os sistemas de arquivos dependem desses atributos para verificações de permissão. O ossfs permite obter informações adicionais dos cabeçalhos personalizados dos objetos no OSS. Assim, execute operações em objetos com base em seus atributos no Linux.
A ativação do cache de metadados do ossfs melhora o desempenho, o uso de recursos e a experiência do usuário.
Desempenho: o cache de metadados do ossfs reduz a latência de leitura de metadados, especialmente em cenários com operações de alta E/S, melhorando a eficiência geral das operações de objetos.
Uso de recursos: o cache de metadados do ossfs reduz o número de chamadas para o OSS e as consultas por segundo (QPS) quando você acessa dados quentes com frequência.
Experiência do usuário: melhora o tempo de resposta das solicitações.
Cenários
O cache de metadados do ossfs é ideal para cenários em que um servidor acessa dados do OSS.
Em um ambiente distribuído, o cache de metadados do ossfs é adequado para cenários de leitura de dados raramente alterados do OSS. Por exemplo, leitura de conjuntos de dados de treinamento de IA e arquivos de modelos de IA do OSS para que execute consultas de big data.
Como funciona
O ossfs usa a memória do cliente para armazenar em cache os metadados do OSS e reduzir a latência das operações de armazenamento remoto.
-
Cache de metadados no primeiro acesso aos dados:
Na primeira vez que você acessa um objeto ou um diretório no ponto de montagem do ossfs, o cliente ossfs obtém os metadados do objeto do OSS e os armazena no cache local.
-
Aceleração de acessos subsequentes:
Se a política de exclusão de cache estiver desativada ou o cache não tiver expirado, o sistema lê os metadados do objeto diretamente do cache local em acessos subsequentes, sem precisar enviar solicitações ao OSS, reduzindo significativamente a latência.
-
Políticas de atualização de cache:
O ossfs atualiza o cache local com base em políticas específicas, como expiração de cache e limite máximo de cache.
-
Sincronização de cache de múltiplos clientes:
O cache de metadados do ossfs é um cache local de servidor único e utiliza a memória do cliente. Não é possível montar vários buckets em vários sistemas de arquivos locais simultaneamente com um único servidor, nem sincronizar alterações de metadados entre vários servidores.
Comparação de modos
A tabela a seguir descreve as diferenças antes e depois da ativação do cache de metadados do ossfs.
|
Cache de metadados do ossfs |
Comando |
Método de solicitação |
Operação |
Desempenho |
|
Cache de metadados do ossfs desativado |
stat |
O ossfs envia solicitações HeadObject para um bucket a fim de obter os metadados do objeto. |
O ossfs envia uma solicitação HeadObject para obter apenas um objeto do bucket. |
O ossfs obtém os metadados dos objetos do bucket, um processo mais lento do que a leitura da memória. |
|
ls |
O ossfs envia uma solicitação ListObject para um bucket a fim de obter objetos em diretórios e envia solicitações HeadObject para obter os metadados dos objetos. |
Após enviar uma solicitação ListObject, o ossfs envia uma solicitação HeadObject para obter apenas um objeto em um diretório do bucket. |
||
|
Cache de metadados do ossfs ativado (o cache de metadados não expira) |
stat |
O ossfs obtém os metadados do objeto da memória local. |
O ossfs obtém os objetos da memória. |
O sistema lê os metadados do objeto diretamente da memória local, o que é mais rápido. |
|
ls |
O ossfs envia uma solicitação ListObject para um bucket a fim de obter objetos em diretórios e obtém os metadados dos objetos da memória local. |
Após enviar uma solicitação ListObject, o ossfs obtém os objetos nos diretórios. Se você quiser acessar um objeto específico em um diretório, o ossfs obtém o objeto da memória local. |
Parâmetros
A tabela a seguir descreve os parâmetros configuráveis para o cache de metadados do ossfs.
|
Parâmetro |
Descrição |
Valor |
|
max_stat_cache_size |
Especifica a ativação do cache de metadados e o seu tamanho máximo. defina o parâmetro com base no número de objetos acessados com frequência no OSS. Se houver memória suficiente, recomendamos definir o parâmetro com um valor maior para melhorar o desempenho da operação.
|
Valor padrão: 100.000. Unidade: objeto ou diretório. Tamanho: aproximadamente 40 MB. |
|
stat_cache_expire |
Especifica a ativação da política de exclusão para o cache de metadados e altera o período de validade desse cache. Recomendamos especificar o período de validade do cache de metadados de acordo com os requisitos do seu negócio.
Nota
Por padrão, o ossfs ativa a política de exclusão de cache e define o limite máximo para o cache de metadados como 100.000, o que consome aproximadamente 40 MB de memória. |
Valor padrão: 900. Unidade: segundos. |
|
readdir_optimize |
Especifica o uso da otimização de cache. Valor padrão: false. Ao especificar o parâmetro, o ossfs não envia uma solicitação HeadObject para obter os metadados do objeto, como Para usar a otimização de cache, especifique |
Valor padrão: false. |
Mecanismo de gerenciamento de cache de metadados
A tabela a seguir descreve o mecanismo de gerenciamento de cache de metadados do ossfs.
|
Status do cache |
Operação |
|
Os metadados do objeto estão em cache e a política de exclusão de cache está desativada ou o cache não expirou. |
Leia os metadados do objeto diretamente do cache. |
|
Os metadados do objeto estão em cache e o cache expirou. |
atualize o cache. |
|
Os metadados do objeto não estão em cache e a capacidade do cache está disponível. |
Armazene os objetos em cache. |
|
Os metadados do objeto não estão em cache, a capacidade do cache está totalmente consumida e a política de exclusão de cache está ativada. |
Percorra o cache e exclua os objetos expirados. |
|
Os metadados do objeto não estão em cache, a capacidade do cache está totalmente consumida e a política de exclusão de cache está desativada. |
Exclua os objetos em cache sem acesso por um longo período com base na política de uso menos recente (LRU). |
Sugestões
Se os metadados dos objetos não forem relevantes, recomendamos especificar o parâmetro
readdir_optimizepara melhorar o desempenho das operaçõeslistefind. A ativação do cache de metadados do ossfs remove o suporte a links simbólicos.-
Em cenários com múltiplos clientes e altos requisitos de tempo real para atualizações de dados, proceda com cautela ao ativar o cache de metadados do ossfs. Desative o cache de metadados do ossfs especificando o parâmetro
-omax_stat_cache_size=0para manter a consistência dos dados. No entanto, pode ocorrer degradação de desempenho e geração de taxas adicionais.Se a sua aplicação exigir forte consistência de dados entre vários clientes, recomendamos usar Cloud Storage Gateway (CSG) ou Cloud Parallel File Storage (CPFS). Não recomendamos o uso do ossfs.
-
Se o número de objetos acessados com frequência no OSS for grande, aumente o valor do parâmetro
max_stat_cache_sizeadequadamente para evitar a exclusão frequente do cache.Se você precisar operar um grande número de objetos e a memória do servidor for insuficiente, recomendamos usar ossutil ou OSS SDKs. Se quiser montar um bucket em um sistema de arquivos local, recomendamos usar CSG ou CPFS.
Para um grande volume de objetos acessados com frequência no OSS, crie vários pontos de montagem do ossfs, cada um dedicado a um subdiretório separado. Essa configuração distribui a carga de trabalho entre os pontos de montagem e melhora o desempenho.